UNPKG

n8n

Version:

n8n Workflow Automation Tool

51 lines 2.34 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExternalSecretExpressionPaths = getExternalSecretExpressionPaths; exports.extractProviderKeysFromExpression = extractProviderKeysFromExpression; exports.extractProviderKeysFromCredentialData = extractProviderKeysFromCredentialData; const api_types_1 = require("@n8n/api-types"); const get_1 = __importDefault(require("lodash/get")); const utils_1 = require("../utils"); function containsExternalSecretExpression(value) { const containsExpression = value.includes('{{') && value.includes('}}'); if (!containsExpression) { return false; } return value.includes('$secrets.') || value.includes('$secrets['); } function getExternalSecretExpressionPaths(data) { return (0, utils_1.getAllKeyPaths)(data, '', [], containsExternalSecretExpression); } function extractProviderKeysFromExpression(expression) { const providerKeys = new Set(); const expressionBlocks = expression.matchAll(/\{\{(.*?)\}\}/gs); for (const expression of expressionBlocks) { const expressionContent = expression[1]; const dotMatches = expressionContent.matchAll(new RegExp(`\\$secrets\\.(${api_types_1.SECRETS_PROVIDER_KEY_PATTERN})(?=\\.|\\[)`, 'g')); for (const match of dotMatches) { providerKeys.add(match[1]); } const bracketMatches = expressionContent.matchAll(new RegExp(`\\$secrets\\[['"](${api_types_1.SECRETS_PROVIDER_KEY_PATTERN})['"]\\]`, 'g')); for (const match of bracketMatches) { providerKeys.add(match[1]); } } return Array.from(providerKeys); } function extractProviderKeysFromCredentialData(data) { const secretPaths = getExternalSecretExpressionPaths(data); const providerKeys = new Set(); for (const path of secretPaths) { const expressionString = (0, get_1.default)(data, path); if (typeof expressionString !== 'string') continue; for (const providerKey of extractProviderKeysFromExpression(expressionString)) { providerKeys.add(providerKey); } } return providerKeys; } //# sourceMappingURL=external-secrets.utils.js.map