diff --git a/.eslintrc.js b/.eslintrc.js index e531d00a73..1561b367b1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -36,12 +36,22 @@ module.exports = { "indent": ["error", 2, {"VariableDeclarator":2}], // seems like a good idea not to use explicit undefined "no-undefined": "error", + // ensure import specifier contains file extension + "import/extensions": ["error", "always"], // TODO maybe "camelcase": "off", // TODO: turn on later "init-declarations": ["error","always"] }, "overrides": [ + { + "files": ["src/**/*.js"], + "rules": { + // make sure there is no Node.js specific API slipping into the source files + "import/no-nodejs-modules": "error", + "import/no-commonjs": "error", + } + }, { "files": ["src/languages/*.js"], "rules": { diff --git a/src/highlight.js b/src/highlight.js index fbcca7a24d..ea4d4d0cb7 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -3,13 +3,13 @@ Syntax highlighting with language autodetection. https://highlightjs.org/ */ -import deepFreeze from './vendor/deep_freeze'; -import Response from './lib/response'; -import TokenTreeEmitter from './lib/token_tree'; -import * as regex from './lib/regex'; -import * as utils from './lib/utils'; -import * as MODES from './lib/modes'; -import { compileLanguage } from './lib/mode_compiler'; +import deepFreeze from './vendor/deep_freeze.js'; +import Response from './lib/response.js'; +import TokenTreeEmitter from './lib/token_tree.js'; +import * as regex from './lib/regex.js'; +import * as utils from './lib/utils.js'; +import * as MODES from './lib/modes.js'; +import { compileLanguage } from './lib/mode_compiler.js'; import * as packageJSON from '../package.json'; const escape = utils.escapeHTML; diff --git a/src/languages/coffeescript.js b/src/languages/coffeescript.js index 458ce3872a..2d6a8f5094 100644 --- a/src/languages/coffeescript.js +++ b/src/languages/coffeescript.js @@ -7,7 +7,7 @@ Category: common, scripting Website: https://coffeescript.org */ -import * as ECMAScript from "./lib/ecmascript"; +import * as ECMAScript from './lib/ecmascript.js'; /** @type LanguageFn */ export default function(hljs) { diff --git a/src/languages/groovy.js b/src/languages/groovy.js index 20f8662d77..014019e72e 100644 --- a/src/languages/groovy.js +++ b/src/languages/groovy.js @@ -5,7 +5,7 @@ Website: https://groovy-lang.org */ -import * as regex from "../lib/regex"; +import * as regex from '../lib/regex.js'; function variants(variants, obj = {}) { obj.variants = variants; diff --git a/src/languages/handlebars.js b/src/languages/handlebars.js index 8578982470..eba95ab210 100644 --- a/src/languages/handlebars.js +++ b/src/languages/handlebars.js @@ -7,7 +7,7 @@ Website: https://handlebarsjs.com Category: template */ -import * as regex from '../lib/regex' +import * as regex from '../lib/regex.js' export default function(hljs) { const BUILT_INS = { diff --git a/src/languages/htmlbars.js b/src/languages/htmlbars.js index df09b5357d..caca6d4dad 100644 --- a/src/languages/htmlbars.js +++ b/src/languages/htmlbars.js @@ -19,7 +19,7 @@ TODO: Remove in version 11.0. */ // compile time dependency on handlebars -import handlebars from "./handlebars" +import handlebars from "./handlebars.js" export default function(hljs) { const definition = handlebars(hljs) diff --git a/src/languages/ini.js b/src/languages/ini.js index 0f4aaf527f..fd7377da86 100644 --- a/src/languages/ini.js +++ b/src/languages/ini.js @@ -1,4 +1,4 @@ -import * as regex from '../lib/regex'; +import * as regex from '../lib/regex.js'; /* Language: TOML, also INI diff --git a/src/languages/java.js b/src/languages/java.js index 45b314c1a3..a73e9bf5c6 100644 --- a/src/languages/java.js +++ b/src/languages/java.js @@ -5,7 +5,7 @@ Category: common, enterprise Website: https://www.java.com/ */ -import * as regex from "../lib/regex"; +import * as regex from '../lib/regex.js'; export default function(hljs) { var JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*'; diff --git a/src/languages/javascript.js b/src/languages/javascript.js index c8334357bc..bc7a4a5349 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -5,8 +5,8 @@ Category: common, scripting Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript */ -import * as ECMAScript from "./lib/ecmascript"; -import * as regex from "../lib/regex"; +import * as ECMAScript from './lib/ecmascript.js'; +import * as regex from '../lib/regex.js'; export default function(hljs) { var IDENT_RE = ECMAScript.IDENT_RE; diff --git a/src/languages/livescript.js b/src/languages/livescript.js index 4f1f072a90..a200bcde8b 100644 --- a/src/languages/livescript.js +++ b/src/languages/livescript.js @@ -8,7 +8,7 @@ Website: https://livescript.net Category: scripting */ -import * as ECMAScript from "./lib/ecmascript"; +import * as ECMAScript from './lib/ecmascript.js'; export default function(hljs) { var LIVESCRIPT_BUILT_INS = [ diff --git a/src/languages/typescript.js b/src/languages/typescript.js index e44ee9a86f..537d243679 100644 --- a/src/languages/typescript.js +++ b/src/languages/typescript.js @@ -7,7 +7,7 @@ Website: https://www.typescriptlang.org Category: common, scripting */ -import * as ECMAScript from "./lib/ecmascript"; +import * as ECMAScript from './lib/ecmascript.js'; export default function(hljs) { var IDENT_RE = ECMAScript.IDENT_RE; diff --git a/src/lib/html_renderer.js b/src/lib/html_renderer.js index 9e98a07ab4..e2a437bc67 100644 --- a/src/lib/html_renderer.js +++ b/src/lib/html_renderer.js @@ -1,4 +1,4 @@ -import { escapeHTML } from './utils'; +import { escapeHTML } from './utils.js'; /** * @typedef {object} Renderer diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 063283b173..7608d6a156 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -1,5 +1,5 @@ -import * as regex from './regex'; -import { inherit } from './utils'; +import * as regex from './regex.js'; +import { inherit } from './utils.js'; // keywords that should have no default relevance value var COMMON_KEYWORDS = 'of and for in not or if then'.split(' '); diff --git a/src/lib/modes.js b/src/lib/modes.js index 33d18a9105..f493f073cb 100644 --- a/src/lib/modes.js +++ b/src/lib/modes.js @@ -1,5 +1,5 @@ -import { inherit } from './utils'; -import * as regex from './regex'; +import { inherit } from './utils.js'; +import * as regex from './regex.js'; // Common regexps export const IDENT_RE = '[a-zA-Z]\\w*'; diff --git a/src/lib/token_tree.js b/src/lib/token_tree.js index 6e2fba63b2..b748d6b3df 100644 --- a/src/lib/token_tree.js +++ b/src/lib/token_tree.js @@ -1,4 +1,4 @@ -import HTMLRenderer from './html_renderer'; +import HTMLRenderer from './html_renderer.js'; /** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */ /** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */