70 lines
2.7 KiB
JavaScript
70 lines
2.7 KiB
JavaScript
(function (factory) {
|
||
if (typeof module === "object" && typeof module.exports === "object") {
|
||
var v = factory(require, exports);
|
||
if (v !== undefined) module.exports = v;
|
||
}
|
||
else if (typeof define === "function" && define.amd) {
|
||
define(["require", "exports", "./errors/expression.error"], factory);
|
||
}
|
||
})(function (require, exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.createEnvProviderState = createEnvProviderState;
|
||
exports.createEnvProvider = createEnvProvider;
|
||
const expression_error_1 = require("./errors/expression.error");
|
||
/**
|
||
* Captures a snapshot of the environment variables and configuration
|
||
* that can be used to initialize an environment provider.
|
||
*/
|
||
function createEnvProviderState() {
|
||
const isProcessAvailable = typeof process !== 'undefined';
|
||
const isEnvAccessBlocked = isProcessAvailable
|
||
? process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE === 'true'
|
||
: false;
|
||
const env = !isProcessAvailable || isEnvAccessBlocked ? {} : process.env;
|
||
return {
|
||
isProcessAvailable,
|
||
isEnvAccessBlocked,
|
||
env,
|
||
};
|
||
}
|
||
/**
|
||
* Creates a proxy that provides access to the environment variables
|
||
* in the `WorkflowDataProxy`. Use the `createEnvProviderState` to
|
||
* create the default state object that is needed for the proxy,
|
||
* unless you need something specific.
|
||
*
|
||
* @example
|
||
* createEnvProvider(
|
||
* runIndex,
|
||
* itemIndex,
|
||
* createEnvProviderState(),
|
||
* )
|
||
*/
|
||
function createEnvProvider(runIndex, itemIndex, providerState) {
|
||
return new Proxy({}, {
|
||
has() {
|
||
return true;
|
||
},
|
||
get(_, name) {
|
||
if (name === 'isProxy')
|
||
return true;
|
||
if (!providerState.isProcessAvailable) {
|
||
throw new expression_error_1.ExpressionError('not accessible via UI, please run node', {
|
||
runIndex,
|
||
itemIndex,
|
||
});
|
||
}
|
||
if (providerState.isEnvAccessBlocked) {
|
||
throw new expression_error_1.ExpressionError('access to env vars denied', {
|
||
causeDetailed: 'If you need access please contact the administrator to remove the environment variable ‘N8N_BLOCK_ENV_ACCESS_IN_NODE‘',
|
||
runIndex,
|
||
itemIndex,
|
||
});
|
||
}
|
||
return providerState.env[name.toString()];
|
||
},
|
||
});
|
||
}
|
||
});
|
||
//# sourceMappingURL=workflow-data-proxy-env-provider.js.map
|