UNPKG

mongodb-rag-core

Version:

Common elements used by MongoDB Chatbot Framework components.

49 lines (47 loc) 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeNodeJsDriverCode = void 0; const vm_1 = __importDefault(require("vm")); const extractCodeFromMarkdown_1 = require("./extractCodeFromMarkdown"); /** Execute the Node.js driver code using the provided MongoDB client instance. This function expects that the driver code uses the `database` variable of type `Db` to access the MongoDB database. If you do not provide a `database` variable in the driver code, this function will not work as expected. */ async function executeNodeJsDriverCode(params) { const { generatedDriverCode, mongoClient, databaseName } = params; const database = mongoClient.db(databaseName); // Wrap the generated code in an async IIFE to guarantee that it returns a Promise const promiseCode = `(async () => ( ${removeTrailingSemiColon((0, extractCodeFromMarkdown_1.extractCodeFromMarkdown)(generatedDriverCode))} ))()`; const startTime = Date.now(); try { const result = await vm_1.default.runInNewContext(promiseCode, { database }); const endTime = Date.now(); return { result, executionTimeMs: endTime - startTime, }; } catch (error) { const errorMessage = error instanceof Error ? error.message : "An unknown error occurred"; return { result: null, error: { message: errorMessage, }, executionTimeMs: null, }; } } exports.executeNodeJsDriverCode = executeNodeJsDriverCode; function removeTrailingSemiColon(code) { return code.replace(/;$/, ""); } //# sourceMappingURL=executeNodeJsDriverCode.js.map