npm package diff
Package: @forge/manifest
Versions: 7.5.2-next.0-experimental-10722bc - 7.7.0-next.13
File: package/out/interpolator/environment-variable-interpolator.js
Index: package/out/interpolator/environment-variable-interpolator.js
===================================================================
--- package/out/interpolator/environment-variable-interpolator.js
+++ package/out/interpolator/environment-variable-interpolator.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EnvironmentVariableInterpolator = exports.EnvironmentVariableInterpolatorError = void 0;
+const tslib_1 = require("tslib");
+const yaml_1 = require("yaml");
+const manifest_interpolator_1 = require("./manifest-interpolator");
+const text_1 = require("../text");
+const Sentry = tslib_1.__importStar(require("@sentry/node"));
+class EnvironmentVariableInterpolatorError extends manifest_interpolator_1.ManifestInterpolatorError {
+ constructor(message) {
+ super(message);
+ this.name = 'EnvironmentVariableInterpolatorError';
+ }
+}
+exports.EnvironmentVariableInterpolatorError = EnvironmentVariableInterpolatorError;
+class EnvironmentVariableInterpolator {
+ envVarsRecord;
+ type = manifest_interpolator_1.InterpolatorType.ENVIRONMENT_VARIABLE;
+ POSSIBLE_ENVIRONMENT_VARIABLE = /\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g;
+ envVarsToReplace;
+ constructor(envVarsRecord = {}) {
+ this.envVarsRecord = envVarsRecord;
+ this.envVarsToReplace = [];
+ }
+ interpolate(manifest) {
+ this.envVarsToReplace = manifest.environment?.variables ?? [];
+ return (0, yaml_1.parse)(JSON.stringify(manifest), this.environmentVariableReviver);
+ }
+ environmentVariableReviver = (_, value) => {
+ if (!(typeof value == 'string')) {
+ return value;
+ }
+ value = value.replace(this.POSSIBLE_ENVIRONMENT_VARIABLE, (original, envVarName) => {
+ if (!this.envVarsToReplace.includes(envVarName)) {
+ return original;
+ }
+ const envVar = this.envVarsRecord[envVarName];
+ if (envVar === undefined) {
+ throw new EnvironmentVariableInterpolatorError(text_1.errors.schema.missingEnvironmentVariable(envVarName));
+ }
+ Sentry.captureMessage('replaced environment variable');
+ return envVar;
+ });
+ return value;
+ };
+}
+exports.EnvironmentVariableInterpolator = EnvironmentVariableInterpolator;