'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var MagicString = require('magic-string'); var pluginutils = require('@rollup/pluginutils'); function escape(str) { return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&'); } function ensureFunction(functionOrValue) { if (typeof functionOrValue === 'function') { return functionOrValue; } return function () { return functionOrValue; }; } function longest(a, b) { return b.length - a.length; } function getReplacements(options) { if (options.values) { return Object.assign({}, options.values); } var values = Object.assign({}, options); delete values.delimiters; delete values.include; delete values.exclude; delete values.sourcemap; delete values.sourceMap; delete values.objectGuards; delete values.preventAssignment; return values; } function mapToFunctions(object) { return Object.keys(object).reduce(function (fns, key) { var functions = Object.assign({}, fns); functions[key] = ensureFunction(object[key]); return functions; }, {}); } var objKeyRegEx = /^([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)(\.([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*))+$/; function expandTypeofReplacements(replacements) { Object.keys(replacements).forEach(function (key) { var objMatch = key.match(objKeyRegEx); if (!objMatch) { return; } var dotIndex = objMatch[1].length; do { // eslint-disable-next-line no-param-reassign replacements[("typeof " + (key.slice(0, dotIndex)))] = '"object"'; dotIndex = key.indexOf('.', dotIndex + 1); } while (dotIndex !== -1); }); } function replace(options) { if ( options === void 0 ) options = {}; var filter = pluginutils.createFilter(options.include, options.exclude); var delimiters = options.delimiters; if ( delimiters === void 0 ) delimiters = ['\\b', '\\b(?!\\.)']; var preventAssignment = options.preventAssignment; var objectGuards = options.objectGuards; var replacements = getReplacements(options); if (objectGuards) { expandTypeofReplacements(replacements); } var functionValues = mapToFunctions(replacements); var keys = Object.keys(functionValues).sort(longest).map(escape); var lookbehind = preventAssignment ? '(?