{ "name": "firebase-tools", "version": "15.14.0", "description": "Command-Line Interface for Firebase", "main": "./lib/index.js", "mcpName": "io.github.firebase/firebase-mcp", "bin": { "firebase": "./lib/bin/firebase.js" }, "scripts": { "build": "tsc && npm run copyfiles", "build:publish": "tsc --build tsconfig.publish.json && npm run copyfiles", "build:watch": "npm run build && tsc --watch", "clean": "node -e \"fs.rmSync('lib', { recursive: true, force: true }); fs.rmSync('dev', { recursive: true, force: true });\"", "copyfiles": "node -e \"const fs = require('fs'); fs.copyFileSync('./src/dynamicImport.js', './lib/dynamicImport.js'); fs.cpSync('./src/firebase_studio', './lib/firebase_studio', {recursive: true, filter: (src) => fs.statSync(src).isDirectory() || src.endsWith('.md') || src.endsWith('.js')});\"", "format": "npm run format:ts && npm run format:other", "format:other": "npm run lint:other -- --write", "format:ts": "npm run lint:ts -- --fix --quiet", "generate:auth-api": "ts-node scripts/gen-auth-api-spec.ts", "generate:json-schema": "typescript-json-schema --strictNullChecks --required --noExtraProps --ignoreErrors src/firebaseConfig.ts FirebaseConfig > schema/firebase-config.json", "lint": "npm run lint:ts && npm run lint:other", "lint:changed-files": "ts-node ./scripts/lint-changed-files.ts", "lint:other": "prettier --check '**/*.{md,yaml,yml}'", "lint:quiet": "npm run lint:ts -- --quiet && npm run lint:other", "lint:ts": "eslint --cache --config .eslintrc.js --ext .ts,.js .", "mocha:fast": "mocha 'src/**/*.spec.{ts,js}'", "mocha": "nyc --reporter=html mocha 'src/**/*.spec.{ts,js}'", "prepare": "npm run clean && npm run build:publish", "test": "npm run lint:quiet && npm run test:compile && npm run mocha", "test:appdistribution": "npm run lint:quiet && npm run test:compile && nyc mocha 'src/appdistribution/*.spec.{ts,js}'", "test:apptesting": "npm run lint:quiet && npm run test:compile && nyc mocha 'src/apptesting/*.spec.{ts,js}'", "test:client-integration": "bash ./scripts/client-integration-tests/run.sh", "test:compile": "tsc --project tsconfig.compile.json", "test:management": "npm run lint:quiet && npm run test:compile && nyc mocha 'src/management/*.spec.{ts,js}'", "test:dataconnect-deploy": "bash ./scripts/dataconnect-test/run.sh", "test:dataconnect-emulator": "bash ./scripts/dataconnect-emulator-tests/run.sh", "test:all-emulators": "npm run test:emulator && npm run test:extensions-emulator && npm run test:import-export && npm run test:storage-emulator-integration", "test:emulator": "bash ./scripts/emulator-tests/run.sh", "test:extensions-deploy": "bash ./scripts/extensions-deploy-tests/run.sh", "test:extensions-emulator": "bash ./scripts/extensions-emulator-tests/run.sh", "test:frameworks": "bash ./scripts/webframeworks-deploy-tests/run.sh", "test:functions-deploy": "bash ./scripts/functions-deploy-tests/run.sh", "test:functions-discover": "bash ./scripts/functions-discover-tests/run.sh", "test:hosting": "bash ./scripts/hosting-tests/run.sh", "test:hosting-rewrites": "bash ./scripts/hosting-tests/rewrites-tests/run.sh", "test:import-export": "bash ./scripts/emulator-import-export-tests/run.sh", "test:triggers-end-to-end": "bash ./scripts/triggers-end-to-end-tests/run.sh", "test:triggers-end-to-end:inspect": "bash ./scripts/triggers-end-to-end-tests/run.sh inspect", "test:storage-deploy": "bash ./scripts/storage-deploy-tests/run.sh", "test:storage-emulator-integration": "bash ./scripts/storage-emulator-integration/run.sh" }, "files": [ "lib", "prompts", "schema", "standalone", "templates" ], "repository": { "type": "git", "url": "https://github.com/firebase/firebase-tools.git" }, "keywords": [ "cdn", "cli", "ssl", "cloud", "hosting", "firebase", "realtime", "websockets", "synchronization" ], "preferGlobal": true, "engines": { "node": ">=20.0.0 || >=22.0.0 || >=24.0.0" }, "author": "Firebase (https://firebase.google.com/)", "license": "MIT", "bugs": { "url": "https://github.com/firebase/firebase-tools/issues" }, "homepage": "https://github.com/firebase/firebase-tools", "publishConfig": { "registry": "https://wombat-dressing-room.appspot.com" }, "nyc": { "require": [ "ts-node/register" ], "reporter": [ "lcovonly", "text" ], "report-dir": "./.coverage", "extension": [ ".js", ".ts" ], "exclude": [ "src/**/*.spec.*", "src/**/testing/**/*", "src/test/**/*" ] }, "dependencies": { "@apphosting/build": "^0.1.7", "@apphosting/common": "^0.0.8", "@electric-sql/pglite": "^0.3.3", "@electric-sql/pglite-tools": "^0.2.8", "@google-cloud/cloud-sql-connector": "^1.3.3", "@google-cloud/pubsub": "^5.2.0", "@inquirer/prompts": "^7.10.1", "@modelcontextprotocol/sdk": "^1.24.0", "abort-controller": "^3.0.0", "ajv": "^8.17.1", "ajv-formats": "3.0.1", "archiver": "^7.0.0", "async-lock": "1.4.1", "body-parser": "^1.19.0", "chokidar": "^3.6.0", "cjson": "^0.3.1", "cli-table3": "0.6.5", "colorette": "^2.0.19", "commander": "^5.1.0", "configstore": "^5.0.1", "cors": "^2.8.5", "cross-env": "^7.0.3", "cross-spawn": "^7.0.5", "csv-parse": "^5.0.4", "deep-equal-in-any-order": "^2.0.6", "exegesis": "^4.2.0", "exegesis-express": "^4.0.0", "express": "^4.16.4", "filesize": "^6.1.0", "form-data": "^4.0.1", "fs-extra": "^10.1.0", "fuzzy": "^0.1.3", "gaxios": "^6.7.0", "glob": "^10.5.0", "google-auth-library": "^9.11.0", "ignore": "^7.0.4", "js-yaml": "^3.14.2", "jsonwebtoken": "^9.0.2", "leven": "^3.1.0", "libsodium-wrappers": "^0.7.10", "lodash": "^4.18.0", "lsofi": "1.0.0", "marked": "^13.0.2", "marked-terminal": "^7.0.0", "mime": "^2.5.2", "minimatch": "^3.0.4", "morgan": "^1.10.0", "node-fetch": "^2.6.7", "open": "^6.3.0", "ora": "^5.4.1", "p-limit": "^3.0.1", "pg": "^8.11.3", "pg-gateway": "^0.3.0-beta.4", "pglite-2": "npm:@electric-sql/pglite@0.2.17", "portfinder": "^1.0.32", "progress": "^2.0.3", "proxy-agent": "^6.3.0", "retry": "^0.13.1", "semver": "^7.5.2", "sql-formatter": "^15.3.0", "stream-chain": "^2.2.4", "stream-json": "^1.7.3", "superstatic": "^10.0.0", "tar": "^7.5.11", "tcp-port-used": "^1.0.2", "tmp": "^0.2.3", "triple-beam": "^1.3.0", "universal-analytics": "^0.5.3", "update-notifier-cjs": "^5.1.6", "uuid": "^8.3.2", "winston": "^3.0.0", "winston-transport": "^4.4.0", "ws": "^7.5.10", "yaml": "^2.4.1", "zod": "^3.24.3", "zod-to-json-schema": "^3.24.5" }, "devDependencies": { "@angular-devkit/architect": "^0.1402.2", "@angular-devkit/core": "^14.2.2", "@google/events": "^5.1.1", "@types/archiver": "^6.0.0", "@types/async-lock": "^1.4.2", "@types/body-parser": "^1.17.0", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.4", "@types/cjson": "^0.5.0", "@types/configstore": "^4.0.0", "@types/cors": "^2.8.10", "@types/cross-spawn": "^6.0.1", "@types/deep-equal-in-any-order": "^1.0.3", "@types/express": "^4.17.0", "@types/express-serve-static-core": "^4.17.8", "@types/fs-extra": "^9.0.13", "@types/html-escaper": "^3.0.0", "@types/inquirer": "^8.1.3", "@types/inquirer-autocomplete-prompt": "^2.0.2", "@types/js-yaml": "^3.12.2", "@types/jsonwebtoken": "^9.0.5", "@types/libsodium-wrappers": "^0.7.9", "@types/lodash": "^4.14.149", "@types/lsofi": "1.0.2", "@types/marked-terminal": "^6.1.1", "@types/mocha": "^9.0.0", "@types/mock-fs": "4.13.4", "@types/multer": "^1.4.3", "@types/node": "^25.0.3", "@types/node-fetch": "^2.6.13", "@types/pg": "^8.11.2", "@types/progress": "^2.0.3", "@types/react": "^18.2.58", "@types/react-dom": "^18.2.19", "@types/retry": "^0.12.1", "@types/semver": "^6.0.0", "@types/sinon": "^9.0.10", "@types/sinon-chai": "^3.2.2", "@types/stream-json": "^1.7.2", "@types/supertest": "^2.0.12", "@types/swagger2openapi": "^7.0.0", "@types/tcp-port-used": "^1.0.1", "@types/tmp": "^0.2.3", "@types/triple-beam": "^1.3.0", "@types/universal-analytics": "^0.4.5", "@types/update-notifier": "^5.1.0", "@types/uuid": "^8.3.1", "@types/ws": "^7.2.3", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", "astro": "^2.2.3", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "eslint": "^8.56.0", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-brikke": "^2.2.2", "eslint-plugin-jsdoc": "^48.0.1", "eslint-plugin-prettier": "^5.1.3", "firebase": "^9.16.0", "firebase-admin": "^11.5.0", "firebase-functions": "^4.3.1", "google-discovery-to-swagger": "^2.1.0", "googleapis": "^105.0.0", "mocha": "^11.7.1", "mock-fs": "5.2.0", "next": "^14.1.0", "nock": "^13.0.5", "node-mocks-http": "^1.11.0", "nyc": "^15.1.0", "openapi-merge": "^1.0.23", "openapi-typescript": "^4.5.0", "openapi3-ts": "^3.2.0", "prettier": "^3.2.4", "proxy": "^1.0.2", "puppeteer": "^19.0.0", "sinon": "^9.2.3", "sinon-chai": "^3.6.0", "source-map-support": "^0.5.9", "supertest": "^6.2.3", "swagger2openapi": "^7.0.8", "ts-node": "^10.4.0", "typescript": "^5.3.3", "typescript-json-schema": "^0.65.1", "vite": "^4.2.1" }, "overrides": { "@angular-devkit/core": { "ajv-formats": "3.0.1", "ajv": "^8.17.1" }, "node-fetch": { "whatwg-url": "^14.0.0" }, "hono": "^4.11.4", "@tootallnate/once": "^3.0.1" } }