diff --git a/eslint.config.js b/eslint.config.js index dc07390..6cc98f5 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -3,8 +3,19 @@ module.exports = [ ...require("eslint-config-eslint/cjs").map(config => ({ ...config, - files: ["**/*.js"] + files: ["**/*.js", "**/*.mjs"] })), + { + files: ["**/*.mjs"], + languageOptions: { + sourceType: "module", + parserOptions: { + ecmaFeatures: { + impliedStrict: true + } + } + } + }, { plugins: { markdown: require(".") diff --git a/lib/processor.js b/lib/processor.js index 788ded3..92e367a 100644 --- a/lib/processor.js +++ b/lib/processor.js @@ -27,9 +27,12 @@ "use strict"; -const parse = require("mdast-util-from-markdown"); +const { createSyncFn } = require("synckit"); + const pkg = require("../package.json"); +const parse = createSyncFn(require.resolve("./worker.mjs")); + const UNSATISFIABLE_RULES = new Set([ "eol-last", // The Markdown parser strips trailing newlines in code fences "unicode-bom" // Code blocks will begin in the middle of Markdown files diff --git a/lib/worker.mjs b/lib/worker.mjs new file mode 100644 index 0000000..9c62a2d --- /dev/null +++ b/lib/worker.mjs @@ -0,0 +1,4 @@ +import { fromMarkdown } from "mdast-util-from-markdown"; +import { runAsWorker } from "synckit"; + +runAsWorker(fromMarkdown); diff --git a/package.json b/package.json index 804cb29..07bffd9 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "files": [ "index.js", "lib/index.js", - "lib/processor.js" + "lib/processor.js", + "lib/worker.mjs" ], "devDependencies": { "@eslint/js": "^8.56.0", @@ -46,7 +47,8 @@ "nyc": "^14.1.1" }, "dependencies": { - "mdast-util-from-markdown": "^0.8.5" + "mdast-util-from-markdown": "^2.0.0", + "synckit": "^0.9.0" }, "peerDependencies": { "eslint": ">=8"