const MagicString = require('magic-string');
/**
* This workaround plugin removes `Object.freeze` usage with Rollup
* because there is no way to disable and we need it to
* properly add deprecated methods/classes on namespaces
* such as `PIXI.utils` or `PIXI.loaders`, code was borrowed
* from 'rollup-plugin-replace'.
* @todo Remove this when opt-out option for Rollup is available
* @private
*/
export default function unfreeze()
{
const pattern = /Object.freeze\s*\(\s*([^)]*)\)/g;
return {
name: 'unfreeze',
transformBundle(code)
{
const str = new MagicString(code);
let hasReplacements = false;
let match;
while ((match = pattern.exec(code)))
{
hasReplacements = true;
const start = match.index;
str.overwrite(
start,
start + match[0].length,
match[1]
);
}
if (!hasReplacements)
{
return null;
}
return {
code: str.toString(),
map: str.generateMap({ hires: true }),
};
},
};
}