firebase-tools
Version:
Command-Line Interface for Firebase
40 lines (39 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.get_rules = void 0;
const zod_1 = require("zod");
const apiv2_1 = require("../../../apiv2");
const tool_1 = require("../../tool");
const util_1 = require("../../util");
exports.get_rules = (0, tool_1.tool)({
name: "get_rules",
description: "Get an RTDB database's rules",
inputSchema: zod_1.z.object({
databaseUrl: zod_1.z
.string()
.optional()
.describe("connect to the database at url. If omitted, use default database instance <project>-default-rtdb.firebaseio.com. Can point to emulator URL (e.g. localhost:6000/<instance>)"),
}),
annotations: {
title: "Get Realtime Database rules",
readOnlyHint: true,
},
_meta: {
requiresAuth: false,
requiresProject: false,
},
}, async ({ databaseUrl }, { projectId }) => {
const dbUrl = databaseUrl !== null && databaseUrl !== void 0 ? databaseUrl : `https://${projectId}-default-rtdb.us-central1.firebasedatabase.app`;
const client = new apiv2_1.Client({ urlPrefix: dbUrl });
const response = await client.request({
method: "GET",
path: "/.settings/rules.json",
responseType: "stream",
resolveOnHTTPError: true,
});
if (response.status !== 200) {
return (0, util_1.mcpError)(`Failed to fetch current rules. Code: ${response.status}`);
}
const rules = await response.response.text();
return (0, util_1.toContent)(rules);
});