{
    "name": "@flowfuse/flowfuse",
    "version": "2.30.1",
    "description": "An open source low-code development platform",
    "homepage": "https://flowfuse.com",
    "bugs": {
        "url": "https://github.com/FlowFuse/flowfuse/issues"
    },
    "repository": {
        "type": "git",
        "url": "git+https://github.com/FlowFuse/flowfuse.git"
    },
    "license": "SEE LICENSE IN ./LICENSE",
    "author": {
        "name": "FlowFuse Inc."
    },
    "bin": {
        "ff-install-stack": "./scripts/install-stack.js",
        "flowforge": "./forge/app.js",
        "flowfuse": "./forge/app.js"
    },
    "scripts": {
        "start": "node forge/app.js",
        "repl": "node forge/app.js --repl",
        "build": "webpack --mode=production -c ./config/webpack.config.js",
        "serve": "npm-run-all --parallel build-watch start-watch",
        "serve-repl": "npm-run-all --parallel build-watch start-watch-repl",
        "start-watch": "cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js",
        "start-watch-repl": "cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl",
        "build-watch": "webpack --mode=development -c ./config/webpack.config.js --watch",
        "lint": "eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"",
        "lint:fix": "eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix",
        "test": "npm-run-all --sequential lint test:unit test:system",
        "test:unit": "npm-run-all --sequential test:unit:forge test:unit:frontend",
        "test:unit:forge": "mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict",
        "test:unit:frontend": "vitest run --config ./config/vitest.config.ts",
        "test:docs": "node test/e2e/docs/valid-links.js ./docs",
        "test:system": "mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict",
        "cy:web-server": "npm-run-all --parallel cy:web-server:os cy:web-server:ee",
        "cy:web-server:os": "node ./test/e2e/frontend/test_environment_os",
        "cy:web-server:ee": "node ./test/e2e/frontend/test_environment_ee",
        "cy:run": "npm-run-all --parallel cy:run:os cy:run:ee",
        "cy:run:os": "cypress run --config-file ./config/cypress-os.config.js",
        "cy:run:ee": "cypress run --config-file ./config/cypress-ee.config.js",
        "cy:open:os": "cypress open --config-file ./config/cypress-os.config.js",
        "cy:open:ee": "cypress open --config-file ./config/cypress-ee.config.js",
        "cover": "npm-run-all --sequential cover:unit cover:system cover:report",
        "cover:unit": "npm-run-all --sequential cover:unit:forge cover:unit:frontend",
        "cover:unit:forge": "nyc --silent npm run test:unit:forge && 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",
        "cover:system": "nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json",
        "cover:report": "nyc report --reporter=html --reporter=json -t './coverage/reports'",
        "install-stack": "node scripts/install-stack.js --",
        "generate:types": "node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix"
    },
    "dependencies": {
        "@aws-sdk/client-sesv2": "^3.916.0",
        "@aws-sdk/credential-provider-node": "^3.352.0",
        "@fastify/cookie": "^11.0.2",
        "@fastify/csrf-protection": "^7.1.0",
        "@fastify/formbody": "^8.0.2",
        "@fastify/helmet": "^13.0.2",
        "@fastify/multipart": "^9.3.0",
        "@fastify/passport": "^3.0.2",
        "@fastify/rate-limit": "^10.3.0",
        "@fastify/routes": "^6.0.2",
        "@fastify/static": "^9.1.2",
        "@fastify/swagger": "^9.6.1",
        "@fastify/swagger-ui": "^5.2.5",
        "@fastify/websocket": "^11.2.0",
        "@flowfuse/driver-localfs": "^2.30.1",
        "@flowfuse/flow-renderer": "^0.5.1",
        "@headlessui/vue": "1.7.19",
        "@heroicons/vue": "1.0.6",
        "@immobiliarelabs/fastify-sentry": "^9.0.1",
        "@levminer/speakeasy": "^1.4.2",
        "@node-red/util": "^4.0.2",
        "@node-saml/passport-saml": "^5.0.0",
        "@redis/client": "^5.11.0",
        "@sentry/node": "^7.73.0",
        "@sentry/profiling-node": "^1.2.1",
        "@sentry/vue": "^7.91.0",
        "@sentry/webpack-plugin": "^2.7.1",
        "@vuepic/vue-datepicker": "^11.0.2",
        "axios": "^1.4.0",
        "bcrypt": "^6.0.0",
        "cronosjs": "^1.7.1",
        "diff": "^5.2.0",
        "dompurify": "^3.3.0",
        "dotenv": "^16.3.1",
        "echarts": "^5.6.0",
        "fastify": "^5.6.2",
        "fastify-metrics": "^12.1.0",
        "fastify-plugin": "^5.1.0",
        "google-auth-library": "^10.1.0",
        "handlebars": "^4.7.7",
        "hashids": "^2.3.0",
        "highlight.js": "^11.11.1",
        "jsonwebtoken": "^9.0.0",
        "ldapts": "^7.0.12",
        "lottie-web-vue": "^2.0.7",
        "lru-cache": "^11.1.0",
        "marked": "^15.0.7",
        "mqtt": "^5.1.1",
        "mqtt-match": "^3.0.0",
        "nodemailer": "^8.0.4",
        "pg": "^8.11.3",
        "pinia": "3.0.4",
        "pinia-plugin-persistedstate": "4.7.1",
        "pino": "^8.15.1",
        "pino-pretty": "^10.0.0",
        "posthog-node": "^5.33.2",
        "qrcode": "^1.5.3",
        "random-words": "~2.0.0",
        "semver": "~7.6.0",
        "sequelize": "^6.33.0",
        "sqlite3": "^6.0.1",
        "stripe": "^8.222.0",
        "tar-stream": "^3.1.7",
        "uuid": "^14.0.0",
        "vue": "^3.4.5",
        "vue-echarts": "^7.0.3",
        "vue-router": "^4.2.5",
        "vue-shepherd": "^3.0.0",
        "vue3-google-login": "^2.0.33",
        "yaml": "^2.3.1",
        "zxcvbn": "^4.4.2"
    },
    "devDependencies": {
        "@babel/core": "^7.22.15",
        "@babel/preset-env": "^7.22.15",
        "@fastify/response-validation": "^3.0.3",
        "@pinia/testing": "1.0.3",
        "@types/mqtt": "^0.0.34",
        "@typescript-eslint/eslint-plugin": "^8.58.0",
        "@typescript-eslint/parser": "^8.58.0",
        "@vitejs/plugin-vue": "^5.0.2",
        "@vitest/coverage-istanbul": "^3.1.1",
        "@vue/test-utils": "^2.4.3",
        "ajv": "^8.18.0",
        "autoprefixer": "^10.4.15",
        "babel-loader": "^9.1.3",
        "clean-webpack-plugin": "^4.0.0",
        "copy-webpack-plugin": "^12.0.2",
        "cross-env": "^7.0.3",
        "css-loader": "^7.1.2",
        "cypress": "^15.14.2",
        "cypress-mailpit": "^0.0.4",
        "dotenv-webpack": "^8.0.1",
        "eslint": "^8.48.0",
        "eslint-config-standard": "^17.1.0",
        "eslint-plugin-cypress": "2.15.1",
        "eslint-plugin-import": "^2.28.1",
        "eslint-plugin-n": "^16.0.2",
        "eslint-plugin-no-only-tests": "^3.1.0",
        "eslint-plugin-promise": "^6.1.1",
        "eslint-plugin-vue": "^9.19.2",
        "file-loader": "^6.2.0",
        "html-link-extractor": "^1.0.5",
        "html-webpack-plugin": "^5.5.3",
        "jsdom": "^25.0.1",
        "mini-css-extract-plugin": "^2.7.6",
        "mocha": "^10.2.0",
        "mocha-cli": "^1.0.1",
        "mockdate": "^3.0.5",
        "nodemon": "^3.0.1",
        "npm-run-all": "^4.1.5",
        "nyc": "^15.1.0",
        "openapi-typescript": "^7.13.0",
        "postcss": "^8.4.29",
        "postcss-loader": "^8.1.1",
        "postcss-preset-env": "^9.1.3",
        "promptly": "^3.2.0",
        "sass": "^1.97.3",
        "sass-loader": "^16.0.2",
        "should": "^13.2.3",
        "should-sinon": "^0.0.6",
        "sinon": "^21.0.1",
        "style-loader": "^3.3.3",
        "tailwindcss": "^2.2.19",
        "ts-loader": "^9.5.7",
        "typescript": "^5.9.3",
        "vitest": "^3.1.1",
        "vue-loader": "^17.4.2",
        "vue-tsc": "^3.2.6",
        "webpack": "^5.88.2",
        "webpack-cli": "^5.1.4",
        "webpack-dev-server": "^5.2.1",
        "ws": "^8.14.0"
    },
    "engines": {
        "node": ">=20.x"
    },
    "keywords": [
        "low-code-platform",
        "low-code-development",
        "low-code-development-platform",
        "visual-programming",
        "flow-based-programming",
        "no-code",
        "low-code",
        "node-red"
    ]
}
