UNPKG

firebase-tools

Version:
49 lines (48 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.execute_graphql_read = void 0; const zod_1 = require("zod"); const tool_js_1 = require("../../tool.js"); const dataplane = require("../../../dataconnect/dataplaneClient.js"); const fileUtils_js_1 = require("../../../dataconnect/fileUtils.js"); const converter_js_1 = require("./converter.js"); const emulator_js_1 = require("./emulator.js"); exports.execute_graphql_read = (0, tool_js_1.tool)({ name: "execute_graphql_read", description: "Executes an arbitrary GraphQL query against a Data Connect service or its emulator. Cannot write data.", inputSchema: zod_1.z.object({ query: zod_1.z.string().describe("A GraphQL query to execute against the service"), service_id: zod_1.z .string() .nullable() .describe("The Firebase Data Connect service ID to look for. If there is only one service defined in firebase.json, this can be omitted and that will be used."), variables: zod_1.z .string() .optional() .describe("A stringified JSON object containing variables for the operation. MUST be valid JSON."), use_emulator: zod_1.z.boolean().default(false).describe("Target the DataConnect emulator if true."), }), annotations: { title: "Execute Data Connect GraphQL Query", readOnlyHint: true, }, _meta: { requiresProject: true, requiresAuth: true, }, }, async ({ query, service_id, variables: unparsedVariables, use_emulator }, { projectId, config, host }) => { const serviceInfo = await (0, fileUtils_js_1.pickService)(projectId, config, service_id || undefined); let apiClient; if (use_emulator) { apiClient = await (0, emulator_js_1.getDataConnectEmulatorClient)(host); } else { apiClient = dataplane.dataconnectDataplaneClient(); } const response = await dataplane.executeGraphQLRead(apiClient, serviceInfo.serviceName, { name: "", query, variables: (0, converter_js_1.parseVariables)(unparsedVariables), }); return (0, converter_js_1.graphqlResponseToToolResponse)(response.body); });