diff --git a/example/viewscreen/lib/outside.js b/example/viewscreen/lib/outside.js index bfabf55..7897f26 100644 --- a/example/viewscreen/lib/outside.js +++ b/example/viewscreen/lib/outside.js @@ -28,7 +28,7 @@ window.addEventListener( * * @param {MessageEvent} event */ - function (event) { + (event) => { // eslint-disable-next-line unicorn/prefer-switch if (event.data.type === 'resize') { // We use unique names, but not bad to handle arrays. @@ -39,7 +39,10 @@ window.addEventListener( } } else if (event.data.type === 'resolve') { const viewscreen = viewscreens.get(event.data.id) - if (!viewscreen) throw new Error('Expected viewscreen') + if (!viewscreen) { + throw new Error('Expected viewscreen') + } + // Note: this never happens. // When `reject` is added to the DOM, it replaces the frame, which // offloads it, so `resolve` will never happen. @@ -48,9 +51,15 @@ window.addEventListener( } } else if (event.data.type === 'reject') { const viewscreen = viewscreens.get(event.data.id) - if (!viewscreen) throw new Error('Expected viewscreen') + if (!viewscreen) { + throw new Error('Expected viewscreen') + } + const body = viewscreen.reject.querySelector('.flash-body') - if (!body) throw new Error('Expected body') + if (!body) { + throw new Error('Expected body') + } + body.textContent = event.data.value if (viewscreen.resolve.parentElement) { viewscreen.resolve.replaceWith(viewscreen.reject) @@ -66,12 +75,17 @@ const prefix = 'language-' for (const node of nodes) { const className = Array.from(node.classList).find((d) => d.startsWith(prefix)) - if (!className) continue + if (!className) { + continue + } + const name = className.slice(prefix.length) const specifier = hasOwn.call(types, name) ? types[name] : undefined - if (!specifier) continue + if (!specifier) { + continue + } const value = node.textContent || '' const id = crypto.randomUUID() @@ -92,9 +106,12 @@ for (const node of nodes) { // Hide for now. iframe.setAttribute('style', 'opacity:0') - iframe.addEventListener('load', function () { + iframe.addEventListener('load', () => { const otherWindow = iframe.contentWindow - if (!otherWindow) throw new Error('Expected `contentWindow`') + if (!otherWindow) { + throw new Error('Expected `contentWindow`') + } + /** @type {ToViewscreenMessage} */ const message = {type: 'content', id, value} iframe.setAttribute('style', '') diff --git a/package.json b/package.json index f243fae..2dddaae 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "create-gfm-fixtures": "^1.0.0", "hastscript": "^7.0.0", "jsdom": "^21.0.0", + "patch-package": "^8.0.0", "prettier": "^2.0.0", "rehype-parse": "^8.0.0", "rehype-raw": "^6.0.0", @@ -54,9 +55,10 @@ "semver": "^7.0.0", "type-coverage": "^2.0.0", "typescript": "^5.0.0", - "xo": "^0.54.0" + "xo": "^0.56.0" }, "scripts": { + "prepare": "patch-package", "prepack": "npm run build && npm run format", "build": "tsc --build --clean && tsc --build && type-coverage", "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", diff --git a/packages/break/readme.md b/packages/break/readme.md index 1759713..fd9cfbd 100644 --- a/packages/break/readme.md +++ b/packages/break/readme.md @@ -28,6 +28,7 @@ * [Security](#security) * [Related](#related) * [Contribute](#contribute) +* [Notice](#notice) * [License](#license) ## What is this? diff --git a/packages/break/test/index.js b/packages/break/test/index.js index 5d02bad..83ce5d8 100644 --- a/packages/break/test/index.js +++ b/packages/break/test/index.js @@ -31,7 +31,7 @@ test('remarkGithubBreak', async () => { ) }) -test('fixtures', async function () { +test('fixtures', async () => { const base = new URL('fixtures/', import.meta.url) await createGfmFixtures(base, { @@ -78,41 +78,41 @@ test('fixtures', async function () { // CommonMark doesn’t seem to do that. .replace(/(alt="im)\n(age")/, '$1 $2') // GitHub drops HTML comments. - .replace(//g, '') + .replaceAll(//g, '') // Elements that GH drops the tags of. - .replace(/<\/?article>/g, '') + .replaceAll(/<\/?article>/g, '') // GitHub uses weird code. // To do: `create-github-fixtures` should support this. - .replace( - /
a\nb\.\n<\/code><\/pre>/g,
+      .replaceAll(
+        '
a\nb.\n
', '
a\nb.
' ) // Elements that GitHub cleans (To do: implemment tagfilter somewhere?) - .replace(/<(\/?script>)/g, '<$1') + .replaceAll(/<(\/?script>)/g, '<$1') // To do: `remark-rehype` should change the order. - .replace(/checked disabled/g, 'disabled checked') - .replace( - /class="sr-only" id="footnote-label"/g, + .replaceAll('checked disabled', 'disabled checked') + .replaceAll( + 'class="sr-only" id="footnote-label"', 'id="footnote-label" class="sr-only"' ) // To do: `remark-rehype` should implement new labels. - .replace( - /class="data-footnote-backref" aria-label="Back to content"/g, + .replaceAll( + 'class="data-footnote-backref" aria-label="Back to content"', 'aria-label="Back to reference 1" class="data-footnote-backref"' ) // To do: `create-github-fixtures` should remove this on `ol`s too. - .replace(/ class="contains-task-list"/g, '') + .replaceAll(' class="contains-task-list"', '') // To do: `create-github-fixtures` should support this. - .replace(/ class="task-list-item"/g, '') + .replaceAll(' class="task-list-item"', '') expected = expected // To do: add to `create-gfm-fixtures`. // GH adds `notranslate`, this should be (optionally) removed by `crate-gfm-fixtures`. - .replace(/ class="notranslate"/g, '') + .replaceAll(' class="notranslate"', '') // To do: `create-github-fixtures` should remove this on `ol`s too. - .replace(/ class="contains-task-list"/g, '') + .replaceAll(' class="contains-task-list"', '') // To do: `create-github-fixtures` should support this. - .replace(/ class="task-list-item"/g, '') + .replaceAll(' class="task-list-item"', '') assert.equal(actual, expected, name) } diff --git a/packages/color/lib/index.js b/packages/color/lib/index.js index ccaeaea..b7cd2c3 100644 --- a/packages/color/lib/index.js +++ b/packages/color/lib/index.js @@ -99,7 +99,7 @@ export default function rehypeGithubColor(options) { const behavior = config.behavior || 'append' return function (tree) { - visit(tree, 'element', function (node, index, parent) { + visit(tree, 'element', (node, index, parent) => { if ( node.tagName === 'code' && node.properties && diff --git a/packages/color/readme.md b/packages/color/readme.md index ad31af6..b0ad09b 100644 --- a/packages/color/readme.md +++ b/packages/color/readme.md @@ -33,6 +33,7 @@ * [Security](#security) * [Related](#related) * [Contribute](#contribute) +* [Notice](#notice) * [License](#license) ## What is this? diff --git a/packages/color/test/index.js b/packages/color/test/index.js index ee1e619..8187024 100644 --- a/packages/color/test/index.js +++ b/packages/color/test/index.js @@ -97,7 +97,7 @@ test('rehypeGithubColor', async () => { ) }) -test('fixtures', async function () { +test('fixtures', async () => { const base = new URL('fixtures/', import.meta.url) await createGfmFixtures(base, { @@ -134,7 +134,7 @@ test('fixtures', async function () { // To do: add to `create-gfm-fixtures`. // GH adds `notranslate`, this should be (optionally) removed by `crate-gfm-fixtures`. - expected = expected.replace(/ class="notranslate"/g, '') + expected = expected.replaceAll(' class="notranslate"', '') assert.equal(actual, expected, name) } diff --git a/packages/dir/lib/index.js b/packages/dir/lib/index.js index 352d27f..656be82 100644 --- a/packages/dir/lib/index.js +++ b/packages/dir/lib/index.js @@ -45,7 +45,7 @@ export default function rehypeGithubDir(options) { const include = config.include || defaultInclude return function (tree) { - visit(tree, 'element', function (node) { + visit(tree, 'element', (node) => { if ( node.type === 'element' && include.includes(node.tagName) && diff --git a/packages/dir/readme.md b/packages/dir/readme.md index 68f6fae..2542879 100644 --- a/packages/dir/readme.md +++ b/packages/dir/readme.md @@ -30,6 +30,7 @@ * [Security](#security) * [Related](#related) * [Contribute](#contribute) +* [Notice](#notice) * [License](#license) ## What is this? diff --git a/packages/dir/test/index.js b/packages/dir/test/index.js index 36d2d26..3933c31 100644 --- a/packages/dir/test/index.js +++ b/packages/dir/test/index.js @@ -18,7 +18,7 @@ test('rehypeGithubDir', async () => { ) }) -test('fixtures', async function () { +test('fixtures', async () => { const base = new URL('fixtures/', import.meta.url) await createGfmFixtures(base, {keep: {dir: true}}) @@ -55,20 +55,20 @@ test('fixtures', async function () { // To do: add to `create-gfm-fixtures`. // GH adds `notranslate`, this should be (optionally) removed by `crate-gfm-fixtures`. expected = expected - .replace(/ class="notranslate"/g, '') + .replaceAll(' class="notranslate"', '') // To do: `create-github-fixtures` should remove this on `ol`s too. - .replace(/ class="contains-task-list"/g, '') + .replaceAll(' class="contains-task-list"', '') // To do: `create-github-fixtures` should support this. - .replace(/ class="task-list-item"/g, '') + .replaceAll(' class="task-list-item"', '') if (name === 'markdown') { // There’s something weird about line endings. Perhaps related to `rehype-raw`? // To do: investigate. - actual = actual.replace( + actual = actual.replaceAll( /\n*(<\/?(?:table|thead|tbody|tr|th|td)>)\n*/g, '$1' ) - expected = expected.replace( + expected = expected.replaceAll( /\n*(<\/?(?:table|thead|tbody|tr|th|td)>)\n*/g, '$1' ) @@ -76,24 +76,24 @@ test('fixtures', async function () { actual = actual // To do: `create-github-fixtures` should remove this on `ol`s too. - .replace(/ class="contains-task-list"/g, '') + .replaceAll(' class="contains-task-list"', '') // To do: `create-github-fixtures` should support this. - .replace(/ class="task-list-item"/g, '') + .replaceAll(' class="task-list-item"', '') // To do: `remark-rehype` should change the order. - .replace(/checked disabled/g, 'disabled checked') - .replace( - /class="sr-only" id="footnote-label"/g, + .replaceAll('checked disabled', 'disabled checked') + .replaceAll( + 'class="sr-only" id="footnote-label"', 'id="footnote-label" class="sr-only"' ) // To do: `remark-rehype` should implement new labels. - .replace( - /class="data-footnote-backref" aria-label="Back to content"/g, + .replaceAll( + 'class="data-footnote-backref" aria-label="Back to content"', 'aria-label="Back to reference 1" class="data-footnote-backref"' ) // GitHub uses weird code. // To do: `create-github-fixtures` should support this. - .replace( - /
a\nb\.\n<\/code><\/pre>/g,
+      .replaceAll(
+        '
a\nb.\n
', '
a\nb.
' ) @@ -101,14 +101,14 @@ test('fixtures', async function () { // Elements that GH drops the tags of. // To do: improve `rehype-sanitize`? actual = actual - .replace( + .replaceAll( /<\/?(?:a|abbr|acronym|address|applet|article|aside|audio|bdi|bdo|big|blink|button|canvas|center|cite|content|data|datalist|dfn|dialog|dir|element|fieldset|figcaption|figure|font|footer|form|header|hgroup|label|legend|listing|main|map|mark|marquee|math|menu|meter|multicol|nav|nobr|noscript|object|optgroup|option|output|progress|rb|rbc|rtc|search|select|shadow|slot|small|spacer|svg|template|time|u)>/g, '' ) // Elements that GitHub drops entirely - .replace(/