{"id":170701128,"number":"2.26.2","published_at":"2026-02-03T10:36:43.938Z","licenses":"SEE LICENSE IN ./LICENSE","integrity":"sha512-76VwnbXumZA50u2SOfvhSyEhvLrQuEs9bUPq1bFhKTo4FcWdwh+X+/Hb4t3atP4AyCJDcfunvbb37i6/etqmNw==","status":null,"download_url":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2.tgz","registry_url":"https://www.npmjs.com/package/@flowfuse/flowfuse/v/2.26.2","documentation_url":null,"install_command":"npm install @flowfuse/flowfuse@2.26.2","immutable":null,"metadata":{"deprecated":null,"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"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},"gitHead":"9b9c17a79203b220205f6f30695cc8990ffb22b4","main":null,"scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system \u0026\u0026 nyc report --reporter=json --report-dir ./coverage/reports/system/  \u0026\u0026 mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge \u0026\u0026 nyc report --reporter=json --report-dir ./coverage/reports/forge/ \u0026\u0026 mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage \u0026\u0026 mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmVersion":"10.8.2","_nodeVersion":"18.20.8","_hasShrinkwrap":false,"directories":{},"engines":{"node":"\u003e=20.x"},"exports":null,"browserify":null},"created_at":"2026-02-12T11:02:10.918Z","updated_at":"2026-02-12T11:02:10.918Z","purl":"pkg:npm/%40flowfuse/flowfuse@2.26.2","related_tag":{"name":"v2.26.2","sha":"9b9c17a79203b220205f6f30695cc8990ffb22b4","kind":"commit","published_at":"2026-02-03T10:34:02.000Z","download_url":"https://codeload.github.com/FlowFuse/flowfuse/tar.gz/v2.26.2","html_url":"https://github.com/FlowFuse/flowfuse/releases/tag/v2.26.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/FlowFuse/flowfuse@v2.26.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fflowfuse/tags/v2.26.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fflowfuse/tags/v2.26.2/manifests","release_url":null},"latest":false,"version_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@flowfuse%2Fflowfuse/versions/2.26.2","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@flowfuse%2Fflowfuse/versions/2.26.2/codemeta","dependencies":[{"id":1888286087,"ecosystem":"npm","package_name":"pg","requirements":"^8.11.3","kind":"runtime","optional":false},{"id":1888286088,"ecosystem":"npm","package_name":"vue","requirements":"^3.4.5","kind":"runtime","optional":false},{"id":1888286089,"ecosystem":"npm","package_name":"mqtt","requirements":"^5.1.1","kind":"runtime","optional":false},{"id":1888286090,"ecosystem":"npm","package_name":"pino","requirements":"^8.15.1","kind":"runtime","optional":false},{"id":1888286091,"ecosystem":"npm","package_name":"uuid","requirements":"^9.0.0","kind":"runtime","optional":false},{"id":1888286092,"ecosystem":"npm","package_name":"vuex","requirements":"^4.1.0","kind":"runtime","optional":false},{"id":1888286093,"ecosystem":"npm","package_name":"yaml","requirements":"^2.3.1","kind":"runtime","optional":false},{"id":1888286094,"ecosystem":"npm","package_name":"axios","requirements":"^1.4.0","kind":"runtime","optional":false},{"id":1888286095,"ecosystem":"npm","package_name":"bcrypt","requirements":"^5.1.0","kind":"runtime","optional":false},{"id":1888286096,"ecosystem":"npm","package_name":"dotenv","requirements":"^16.3.1","kind":"runtime","optional":false},{"id":1888286097,"ecosystem":"npm","package_name":"ldapts","requirements":"^7.0.12","kind":"runtime","optional":false},{"id":1888286098,"ecosystem":"npm","package_name":"marked","requirements":"^15.0.7","kind":"runtime","optional":false},{"id":1888286099,"ecosystem":"npm","package_name":"qrcode","requirements":"^1.5.3","kind":"runtime","optional":false},{"id":1888286100,"ecosystem":"npm","package_name":"semver","requirements":"~7.6.0","kind":"runtime","optional":false},{"id":1888286101,"ecosystem":"npm","package_name":"stripe","requirements":"^8.222.0","kind":"runtime","optional":false},{"id":1888286102,"ecosystem":"npm","package_name":"zxcvbn","requirements":"^4.4.2","kind":"runtime","optional":false},{"id":1888286103,"ecosystem":"npm","package_name":"echarts","requirements":"^5.6.0","kind":"runtime","optional":false},{"id":1888286104,"ecosystem":"npm","package_name":"fastify","requirements":"^5.6.2","kind":"runtime","optional":false},{"id":1888286105,"ecosystem":"npm","package_name":"hashids","requirements":"^2.3.0","kind":"runtime","optional":false},{"id":1888286106,"ecosystem":"npm","package_name":"sqlite3","requirements":"^5.1.6","kind":"runtime","optional":false},{"id":1888286107,"ecosystem":"npm","package_name":"cronosjs","requirements":"^1.7.1","kind":"runtime","optional":false},{"id":1888286108,"ecosystem":"npm","package_name":"dompurify","requirements":"^3.3.0","kind":"runtime","optional":false},{"id":1888286109,"ecosystem":"npm","package_name":"lru-cache","requirements":"^11.1.0","kind":"runtime","optional":false},{"id":1888286110,"ecosystem":"npm","package_name":"sequelize","requirements":"^6.33.0","kind":"runtime","optional":false},{"id":1888286111,"ecosystem":"npm","package_name":"handlebars","requirements":"^4.7.7","kind":"runtime","optional":false},{"id":1888286112,"ecosystem":"npm","package_name":"mqtt-match","requirements":"^3.0.0","kind":"runtime","optional":false},{"id":1888286113,"ecosystem":"npm","package_name":"nodemailer","requirements":"^7.0.9","kind":"runtime","optional":false},{"id":1888286114,"ecosystem":"npm","package_name":"tar-stream","requirements":"^3.1.7","kind":"runtime","optional":false},{"id":1888286115,"ecosystem":"npm","package_name":"vue-router","requirements":"^4.2.5","kind":"runtime","optional":false},{"id":1888286116,"ecosystem":"npm","package_name":"@sentry/vue","requirements":"^7.91.0","kind":"runtime","optional":false},{"id":1888286117,"ecosystem":"npm","package_name":"pino-pretty","requirements":"^10.0.0","kind":"runtime","optional":false},{"id":1888286118,"ecosystem":"npm","package_name":"vue-echarts","requirements":"^7.0.3","kind":"runtime","optional":false},{"id":1888286119,"ecosystem":"npm","package_name":"@sentry/node","requirements":"^7.73.0","kind":"runtime","optional":false},{"id":1888286120,"ecosystem":"npm","package_name":"highlight.js","requirements":"^11.11.1","kind":"runtime","optional":false},{"id":1888286121,"ecosystem":"npm","package_name":"jsonwebtoken","requirements":"^9.0.0","kind":"runtime","optional":false},{"id":1888286122,"ecosystem":"npm","package_name":"posthog-node","requirements":"^4.2.0","kind":"runtime","optional":false},{"id":1888286123,"ecosystem":"npm","package_name":"random-words","requirements":"~2.0.0","kind":"runtime","optional":false},{"id":1888286124,"ecosystem":"npm","package_name":"vue-shepherd","requirements":"^3.0.0","kind":"runtime","optional":false},{"id":1888286125,"ecosystem":"npm","package_name":"@redis/client","requirements":"^5.8.3","kind":"runtime","optional":false},{"id":1888286126,"ecosystem":"npm","package_name":"@heroicons/vue","requirements":"1.0.6","kind":"runtime","optional":false},{"id":1888286127,"ecosystem":"npm","package_name":"@node-red/util","requirements":"^4.0.2","kind":"runtime","optional":false},{"id":1888286128,"ecosystem":"npm","package_name":"fastify-plugin","requirements":"^5.1.0","kind":"runtime","optional":false},{"id":1888286129,"ecosystem":"npm","package_name":"lottie-web-vue","requirements":"^2.0.7","kind":"runtime","optional":false},{"id":1888286130,"ecosystem":"npm","package_name":"@fastify/cookie","requirements":"^11.0.2","kind":"runtime","optional":false},{"id":1888286131,"ecosystem":"npm","package_name":"@fastify/helmet","requirements":"^13.0.2","kind":"runtime","optional":false},{"id":1888286132,"ecosystem":"npm","package_name":"@fastify/routes","requirements":"^6.0.2","kind":"runtime","optional":false},{"id":1888286133,"ecosystem":"npm","package_name":"@fastify/static","requirements":"^9.0.0","kind":"runtime","optional":false},{"id":1888286134,"ecosystem":"npm","package_name":"@headlessui/vue","requirements":"1.7.19","kind":"runtime","optional":false},{"id":1888286135,"ecosystem":"npm","package_name":"fastify-metrics","requirements":"^12.1.0","kind":"runtime","optional":false},{"id":1888286136,"ecosystem":"npm","package_name":"@fastify/swagger","requirements":"^9.6.1","kind":"runtime","optional":false},{"id":1888286137,"ecosystem":"npm","package_name":"@fastify/formbody","requirements":"^8.0.2","kind":"runtime","optional":false},{"id":1888286138,"ecosystem":"npm","package_name":"@fastify/passport","requirements":"^3.0.2","kind":"runtime","optional":false},{"id":1888286139,"ecosystem":"npm","package_name":"vue3-google-login","requirements":"^2.0.33","kind":"runtime","optional":false},{"id":1888286140,"ecosystem":"npm","package_name":"@fastify/multipart","requirements":"^9.3.0","kind":"runtime","optional":false},{"id":1888286141,"ecosystem":"npm","package_name":"@fastify/websocket","requirements":"^11.2.0","kind":"runtime","optional":false},{"id":1888286142,"ecosystem":"npm","package_name":"@fastify/rate-limit","requirements":"^10.3.0","kind":"runtime","optional":false},{"id":1888286143,"ecosystem":"npm","package_name":"@fastify/swagger-ui","requirements":"^5.2.3","kind":"runtime","optional":false},{"id":1888286144,"ecosystem":"npm","package_name":"@levminer/speakeasy","requirements":"^1.4.2","kind":"runtime","optional":false},{"id":1888286145,"ecosystem":"npm","package_name":"google-auth-library","requirements":"^10.1.0","kind":"runtime","optional":false},{"id":1888286146,"ecosystem":"npm","package_name":"@aws-sdk/client-sesv2","requirements":"^3.916.0","kind":"runtime","optional":false},{"id":1888286147,"ecosystem":"npm","package_name":"@sentry/profiling-node","requirements":"^1.2.1","kind":"runtime","optional":false},{"id":1888286148,"ecosystem":"npm","package_name":"@sentry/webpack-plugin","requirements":"^2.7.1","kind":"runtime","optional":false},{"id":1888286149,"ecosystem":"npm","package_name":"@vuepic/vue-datepicker","requirements":"^11.0.2","kind":"runtime","optional":false},{"id":1888286150,"ecosystem":"npm","package_name":"@flowfuse/flow-renderer","requirements":"^0.5.0","kind":"runtime","optional":false},{"id":1888286151,"ecosystem":"npm","package_name":"@fastify/csrf-protection","requirements":"^7.1.0","kind":"runtime","optional":false},{"id":1888286152,"ecosystem":"npm","package_name":"@flowfuse/driver-localfs","requirements":"^2.26.2","kind":"runtime","optional":false},{"id":1888286153,"ecosystem":"npm","package_name":"@node-saml/passport-saml","requirements":"^5.0.0","kind":"runtime","optional":false},{"id":1888286154,"ecosystem":"npm","package_name":"@immobiliarelabs/fastify-sentry","requirements":"^9.0.1","kind":"runtime","optional":false},{"id":1888286155,"ecosystem":"npm","package_name":"@aws-sdk/credential-provider-node","requirements":"^3.352.0","kind":"runtime","optional":false},{"id":1888286156,"ecosystem":"npm","package_name":"ws","requirements":"^8.14.0","kind":"Development","optional":false},{"id":1888286157,"ecosystem":"npm","package_name":"nyc","requirements":"^15.1.0","kind":"Development","optional":false},{"id":1888286158,"ecosystem":"npm","package_name":"jsdom","requirements":"^25.0.1","kind":"Development","optional":false},{"id":1888286159,"ecosystem":"npm","package_name":"mocha","requirements":"^10.2.0","kind":"Development","optional":false},{"id":1888286160,"ecosystem":"npm","package_name":"sinon","requirements":"^21.0.1","kind":"Development","optional":false},{"id":1888286161,"ecosystem":"npm","package_name":"eslint","requirements":"^8.48.0","kind":"Development","optional":false},{"id":1888286162,"ecosystem":"npm","package_name":"should","requirements":"^13.2.3","kind":"Development","optional":false},{"id":1888286163,"ecosystem":"npm","package_name":"vitest","requirements":"^3.1.1","kind":"Development","optional":false},{"id":1888286164,"ecosystem":"npm","package_name":"cypress","requirements":"^13.17.0","kind":"Development","optional":false},{"id":1888286165,"ecosystem":"npm","package_name":"nodemon","requirements":"^3.0.1","kind":"Development","optional":false},{"id":1888286166,"ecosystem":"npm","package_name":"postcss","requirements":"^8.4.29","kind":"Development","optional":false},{"id":1888286167,"ecosystem":"npm","package_name":"webpack","requirements":"^5.88.2","kind":"Development","optional":false},{"id":1888286168,"ecosystem":"npm","package_name":"mockdate","requirements":"^3.0.5","kind":"Development","optional":false},{"id":1888286169,"ecosystem":"npm","package_name":"promptly","requirements":"^3.2.0","kind":"Development","optional":false},{"id":1888286170,"ecosystem":"npm","package_name":"cross-env","requirements":"^7.0.3","kind":"Development","optional":false},{"id":1888286171,"ecosystem":"npm","package_name":"mocha-cli","requirements":"^1.0.1","kind":"Development","optional":false},{"id":1888286172,"ecosystem":"npm","package_name":"node-sass","requirements":"^9.0.0","kind":"Development","optional":false},{"id":1888286173,"ecosystem":"npm","package_name":"css-loader","requirements":"^7.1.2","kind":"Development","optional":false},{"id":1888286174,"ecosystem":"npm","package_name":"vue-loader","requirements":"^17.4.2","kind":"Development","optional":false},{"id":1888286175,"ecosystem":"npm","package_name":"@babel/core","requirements":"^7.22.15","kind":"Development","optional":false},{"id":1888286176,"ecosystem":"npm","package_name":"file-loader","requirements":"^6.2.0","kind":"Development","optional":false},{"id":1888286177,"ecosystem":"npm","package_name":"npm-run-all","requirements":"^4.1.5","kind":"Development","optional":false},{"id":1888286178,"ecosystem":"npm","package_name":"sass-loader","requirements":"^16.0.2","kind":"Development","optional":false},{"id":1888286179,"ecosystem":"npm","package_name":"tailwindcss","requirements":"^2.2.19","kind":"Development","optional":false},{"id":1888286180,"ecosystem":"npm","package_name":"webpack-cli","requirements":"^5.1.4","kind":"Development","optional":false},{"id":1888286181,"ecosystem":"npm","package_name":"autoprefixer","requirements":"^10.4.15","kind":"Development","optional":false},{"id":1888286182,"ecosystem":"npm","package_name":"babel-loader","requirements":"^9.1.3","kind":"Development","optional":false},{"id":1888286183,"ecosystem":"npm","package_name":"should-sinon","requirements":"^0.0.6","kind":"Development","optional":false},{"id":1888286184,"ecosystem":"npm","package_name":"style-loader","requirements":"^3.3.3","kind":"Development","optional":false},{"id":1888286185,"ecosystem":"npm","package_name":"dotenv-webpack","requirements":"^8.0.1","kind":"Development","optional":false},{"id":1888286186,"ecosystem":"npm","package_name":"postcss-loader","requirements":"^8.1.1","kind":"Development","optional":false},{"id":1888286187,"ecosystem":"npm","package_name":"@vue/test-utils","requirements":"^2.4.3","kind":"Development","optional":false},{"id":1888286188,"ecosystem":"npm","package_name":"cypress-mailpit","requirements":"^0.0.4","kind":"Development","optional":false},{"id":1888286189,"ecosystem":"npm","package_name":"eslint-plugin-n","requirements":"^16.0.2","kind":"Development","optional":false},{"id":1888286190,"ecosystem":"npm","package_name":"@babel/preset-env","requirements":"^7.22.15","kind":"Development","optional":false},{"id":1888286191,"ecosystem":"npm","package_name":"eslint-plugin-vue","requirements":"^9.19.2","kind":"Development","optional":false},{"id":1888286192,"ecosystem":"npm","package_name":"@vitejs/plugin-vue","requirements":"^5.0.2","kind":"Development","optional":false},{"id":1888286193,"ecosystem":"npm","package_name":"postcss-preset-env","requirements":"^9.1.3","kind":"Development","optional":false},{"id":1888286194,"ecosystem":"npm","package_name":"webpack-dev-server","requirements":"^5.2.1","kind":"Development","optional":false},{"id":1888286195,"ecosystem":"npm","package_name":"copy-webpack-plugin","requirements":"^12.0.2","kind":"Development","optional":false},{"id":1888286196,"ecosystem":"npm","package_name":"html-link-extractor","requirements":"^1.0.5","kind":"Development","optional":false},{"id":1888286197,"ecosystem":"npm","package_name":"html-webpack-plugin","requirements":"^5.5.3","kind":"Development","optional":false},{"id":1888286198,"ecosystem":"npm","package_name":"clean-webpack-plugin","requirements":"^4.0.0","kind":"Development","optional":false},{"id":1888286199,"ecosystem":"npm","package_name":"eslint-plugin-import","requirements":"^2.28.1","kind":"Development","optional":false},{"id":1888286200,"ecosystem":"npm","package_name":"eslint-plugin-cypress","requirements":"2.15.1","kind":"Development","optional":false},{"id":1888286201,"ecosystem":"npm","package_name":"eslint-plugin-promise","requirements":"^6.1.1","kind":"Development","optional":false},{"id":1888286202,"ecosystem":"npm","package_name":"eslint-config-standard","requirements":"^17.1.0","kind":"Development","optional":false},{"id":1888286203,"ecosystem":"npm","package_name":"mini-css-extract-plugin","requirements":"^2.7.6","kind":"Development","optional":false},{"id":1888286204,"ecosystem":"npm","package_name":"@vitest/coverage-istanbul","requirements":"^3.1.1","kind":"Development","optional":false},{"id":1888286205,"ecosystem":"npm","package_name":"eslint-plugin-no-only-tests","requirements":"^3.1.0","kind":"Development","optional":false}],"advisories":[],"package_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@flowfuse%2Fflowfuse"}