Source: highlight.js
Version: 10.7.3+dfsg-1
Severity: grave
Justification: renders package unusable
Tags: patch
X-Debbugs-Cc: [email protected], [email protected]

Dear Maintainer,

Due to a breaking change in behavior from Rollup 2 to 3, IIFE regex replacement
for `hljs.registerLanguage` calls breaks.

Rollup 2, which this version of hljs targeted, generates this:

var dummyName = (function () { /* ... */ }());

which is replaced by hljs to:

hljs.registerLanguage('${language.name}', function () { /* ... */ }());

while Rollup 3 generates this:

var dummyName = (function () { /* ... */ })();

which is replaced by hljs to:

hljs.registerLanguage('${language.name}', function () { /* ... */ })();

You can see that while the previous replacement calls the function *inside*,
current replacement calls the "result" of the `hljs.registerLanguage` call.

The following patch fixes it by calling `hljs.registerLanguage` in a separate
statement.

Note, it's intended to be in the debian/patches series, not a debdiff.

--- a/tools/lib/language.js
+++ b/tools/lib/language.js
@@ -86,14 +86,14 @@

 async function compileLanguage (language, options) {
   const EXPORT_REGEX = /export default (.*);/;
-  const IIFE_HEADER_REGEX = /^(var dummyName = )?\(function \(\)/;
+  //const IIFE_HEADER_REGEX = /^(var dummyName = )?\(function \(\)/;
 
   // TODO: cant we use the source we already have?
   const input = { ...build_config.rollup.browser.input, input: language.path };
   const output = { ...build_config.rollup.browser.output,  name: `dummyName`, 
file: "out.js" };
   var data = await rollupCode(input, output)
 
-  data = data.replace(IIFE_HEADER_REGEX, 
`hljs.registerLanguage('${language.name}', function ()`)
+  data = `(function() {\n${data}\nhljs.registerLanguage('${language.name}', 
dummyName);\n})();` //data = data.replace(IIFE_HEADER_REGEX, 
`hljs.registerLanguage('${language.name}', function ()`)
 
   var original = data;
   language.module = data;

-- 
    ,Sdrager
Blair Noctis

🇵🇸

Attachment: signature.asc
Description: PGP signature

Reply via email to