UNPKG

@unito/integration-cli

Version:

Integration CLI

33 lines (32 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.expandTemplate = expandTemplate; function encode(value) { return value ? value .toString() .split(/(%[0-9A-Fa-f]{2})/g) .map(function (part) { if (!/%[0-9A-Fa-f]/.test(part)) { part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']'); } return part; }) .join('') : ''; } function expandTemplate(template, context, options) { let interpolated = template.replaceAll( // eslint is wrong about the following rule, the escape character is required. // eslint-disable-next-line no-useless-escape /{!base64\(([^\)]+)\)}/g, (_outerMatch, innerMatch) => Buffer.from(expandTemplate(innerMatch, context, { urlEncodeVariables: false })).toString('base64')); interpolated = interpolated.replaceAll( // eslint is wrong about the following rule, the escape character is required. // eslint-disable-next-line no-useless-escape /{\+([^}]+)}/g, (_outerMatch, innerMatch) => { return options.urlEncodeVariables ? encode((context[innerMatch] ?? '').toString()) : (context[innerMatch] ?? '').toString(); }); return interpolated; }