@unito/integration-cli
Version:
Integration CLI
33 lines (32 loc) • 1.3 kB
JavaScript
;
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;
}