UNPKG

@n8n/n8n-nodes-langchain

Version:
74 lines 3.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CHAT_MODEL_USER_AGENT = void 0; exports.getDatabricksTokenProvider = getDatabricksTokenProvider; exports.createDatabricksFetch = createDatabricksFetch; const ai_utilities_1 = require("@n8n/ai-utilities"); const client_oauth2_1 = require("@n8n/client-oauth2"); const n8n_workflow_1 = require("n8n-workflow"); exports.CHAT_MODEL_USER_AGENT = 'n8n_DatabricksNode'; function getDatabricksTokenProvider(node, credential, egressFilter) { const tokenUrl = `${credential.host.replace(/\/$/, '')}/oidc/v1/token`; let cached; let expiresAt = 0; const mint = async () => { try { const oAuthClient = new client_oauth2_1.ClientOAuth2({ clientId: credential.clientId, clientSecret: credential.clientSecret, accessTokenUri: tokenUrl, scopes: credential.scope?.split(' '), authentication: credential.authentication, ssrfBridge: egressFilter, headers: { 'User-Agent': exports.CHAT_MODEL_USER_AGENT }, }); const token = await oAuthClient.credentials.getToken(); const expiresIn = Number(token.data.expires_in); expiresAt = Number.isNaN(expiresIn) ? 0 : Date.now() + (expiresIn - 60) * 1000; return token.accessToken; } catch (error) { cached = undefined; expiresAt = 0; const message = error instanceof Error ? error.message : undefined; throw new n8n_workflow_1.NodeOperationError(node, 'Failed to retrieve Databricks access token', { description: message && credential.clientSecret ? message.replaceAll(credential.clientSecret, '***') : message, }); } }; return async () => { if (!cached || Date.now() >= expiresAt) { expiresAt = Infinity; cached = mint(); } return await cached; }; } function createDatabricksFetch(getToken, egressFilter) { return async (input, init) => { const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined)); headers.set('authorization', `Bearer ${await getToken()}`); headers.set('user-agent', exports.CHAT_MODEL_USER_AGENT); const requestInit = { ...init }; if (input instanceof Request) { requestInit.method ??= input.method; requestInit.signal ??= input.signal; if (requestInit.body === undefined && input.body) { requestInit.body = await input.arrayBuffer(); } } const startUrl = input instanceof Request ? input.url : input; return await (0, ai_utilities_1.fetchFollowingRedirects)(fetch, startUrl, { ...requestInit, headers }, { onBeforeHop: async (hopUrl) => { if (egressFilter) { const result = await egressFilter.validateUrl(hopUrl); if (!result.ok) throw result.error; } }, }); }; } //# sourceMappingURL=token-provider.js.map