From fa6bfb33bd4715bb2f6a6955b9ef03a0ffe8b651 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:28:25 -0400 Subject: [PATCH 01/25] (chore) Rename second_best to secondBest (highlightAuto) Work towards #2558. --- docs/api.rst | 2 +- src/highlight.js | 14 +++++++------- tools/checkAutoDetect.js | 16 ++++++++-------- tools/developer.html | 4 ++-- types/index.d.ts | 4 ++-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index 3c2936b0d4..b8c59ee812 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -42,7 +42,7 @@ Returns an object with the following properties: * ``language``: detected language * ``relevance``: integer value representing the relevance score * ``value``: HTML string with highlighting markup -* ``second_best``: object with the same structure for second-best heuristically detected language (may be absent) +* ``secondBest``: object with the same structure for second-best heuristically detected language (may be absent) ``fixMarkup(value)`` (deprecated as of 10.3) diff --git a/src/highlight.js b/src/highlight.js index 49d974af18..ba514360d6 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -579,7 +579,7 @@ const HLJS = function(hljs) { - language (detected language) - relevance (int) - value (an HTML string with highlighting markup) - - second_best (object with the same structure for second-best heuristically + - secondBest (object with the same structure for second-best heuristically detected language, may be absent) @param {string} code @@ -620,7 +620,7 @@ const HLJS = function(hljs) { /** @type {AutoHighlightResult} */ const result = best; - result.second_best = secondBest; + result.secondBest = secondBest; return result; } @@ -721,12 +721,12 @@ const HLJS = function(hljs) { re: result.relevance, relavance: result.relevance }; - if (result.second_best) { - element.second_best = { - language: result.second_best.language, + if (result.secondBest) { + element.secondBest = { + language: result.secondBest.language, // TODO: remove with version 11.0 - re: result.second_best.relevance, - relavance: result.second_best.relevance + re: result.secondBest.relevance, + relavance: result.secondBest.relevance }; } } diff --git a/tools/checkAutoDetect.js b/tools/checkAutoDetect.js index 4836a557b0..f4ff21ed0e 100755 --- a/tools/checkAutoDetect.js +++ b/tools/checkAutoDetect.js @@ -26,13 +26,13 @@ function testAutoDetection(language, index, languages) { .forEach(function(content) { const expected = language, actual = hljs.highlightAuto(content); - if (actual.language !== expected && actual.second_best.language !== expected) { + if (actual.language !== expected && actual.secondBest.language !== expected) { return resultTable.push([ expected, colors.red(actual.language), actual.relevance ? actual.relevance : colors.grey('None'), - colors.red(actual.second_best.language), - actual.second_best.relevance ? actual.second_best.relevance : colors.grey('None') + colors.red(actual.secondBest.language), + actual.secondBest.relevance ? actual.secondBest.relevance : colors.grey('None') ]); } if (actual.language !== expected) { @@ -40,18 +40,18 @@ function testAutoDetection(language, index, languages) { expected, colors.yellow(actual.language), actual.relevance ? actual.relevance : colors.grey('None'), - colors.yellow(actual.second_best.language), - actual.second_best.relevance ? actual.second_best.relevance : colors.grey('None') + colors.yellow(actual.secondBest.language), + actual.secondBest.relevance ? actual.secondBest.relevance : colors.grey('None') ]); } // equal relevance is flagged - if (actual.relevance == actual.second_best.relevance) { + if (actual.relevance == actual.secondBest.relevance) { return resultTable.push([ expected, actual.language, actual.relevance ? colors.yellow(actual.relevance) : colors.grey('None'), - actual.second_best.language, - actual.second_best.relevance ? colors.yellow(actual.second_best.relevance) : colors.grey('None'), + actual.secondBest.language, + actual.secondBest.relevance ? colors.yellow(actual.secondBest.relevance) : colors.grey('None'), "Relevance match." ]); } diff --git a/tools/developer.html b/tools/developer.html index b446aacd13..f01722d392 100644 --- a/tools/developer.html +++ b/tools/developer.html @@ -215,8 +215,8 @@

Markup

vue.language = hljs.getLanguage(language) ? language : ''; var rendering_stats = result.language + ': relevance ' + (result.relevance ); - if (result.second_best) { - rendering_stats += ', ' + result.second_best.language + ': ' + (result.second_best.relevance || result.second_best.r); + if (result.secondBest) { + rendering_stats += ', ' + result.secondBest.language + ': ' + (result.secondBest.relevance || result.secondBest.r); } editor.find('.rendering_stats').text(rendering_stats); editor.find('.rendering_time').text(rendering_time); diff --git a/types/index.d.ts b/types/index.d.ts index 96b14965c6..49afb86032 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -81,7 +81,7 @@ interface HighlightResult { sofar? : string errorRaised? : Error // * for auto-highlight - second_best? : Omit + secondBest? : Omit code?: string } interface AutoHighlightResult extends HighlightResult {} @@ -136,7 +136,7 @@ interface CallbackResponse { type AnnotatedError = Error & {mode?: Mode | Language, languageName?: string, badRule?: Mode} type ModeCallback = (match: RegExpMatchArray, response: CallbackResponse) => void -type HighlightedHTMLElement = HTMLElement & {result?: object, second_best?: object, parentNode: HTMLElement} +type HighlightedHTMLElement = HTMLElement & {result?: object, secondBest?: object, parentNode: HTMLElement} type EnhancedMatch = RegExpMatchArray & {rule: CompiledMode, type: MatchType} type MatchType = "begin" | "end" | "illegal" From 24d133811a7386882e274c3ba078e5ab3166e426 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:30:40 -0400 Subject: [PATCH 02/25] (chore) remove apache, http, nginx, properties, coffeescript from :common Fully resolves #2848. Related #2558. --- VERSION_11_UPGRADE.md | 4 ++++ src/languages/apache.js | 2 +- src/languages/coffeescript.js | 2 +- src/languages/http.js | 2 +- src/languages/nginx.js | 2 +- src/languages/properties.js | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 VERSION_11_UPGRADE.md diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md new file mode 100644 index 0000000000..b4d805a422 --- /dev/null +++ b/VERSION_11_UPGRADE.md @@ -0,0 +1,4 @@ +# very rough draft + +- rename second_best to secondBest (highlightAuto) +- remove apache, http, nginx, properties, coffeescript from :common #2848 diff --git a/src/languages/apache.js b/src/languages/apache.js index 605bdfa455..6afaff143d 100644 --- a/src/languages/apache.js +++ b/src/languages/apache.js @@ -4,7 +4,7 @@ Author: Ruslan Keba Contributors: Ivan Sagalaev Website: https://httpd.apache.org Description: language definition for Apache configuration files (httpd.conf & .htaccess) -Category: common, config +Category: config Audit: 2020 */ diff --git a/src/languages/coffeescript.js b/src/languages/coffeescript.js index 0097546326..8c1acc7ee5 100644 --- a/src/languages/coffeescript.js +++ b/src/languages/coffeescript.js @@ -3,7 +3,7 @@ Language: CoffeeScript Author: Dmytrii Nagirniak Contributors: Oleg Efimov , Cédric Néhémie Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/ -Category: common, scripting +Category: scripting Website: https://coffeescript.org */ diff --git a/src/languages/http.js b/src/languages/http.js index 577d9db1af..af19f087e1 100644 --- a/src/languages/http.js +++ b/src/languages/http.js @@ -2,7 +2,7 @@ Language: HTTP Description: HTTP request and response headers with automatic body highlighting Author: Ivan Sagalaev -Category: common, protocols +Category: protocols Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview */ diff --git a/src/languages/nginx.js b/src/languages/nginx.js index c6bddb6b64..83ac6c2100 100644 --- a/src/languages/nginx.js +++ b/src/languages/nginx.js @@ -2,7 +2,7 @@ Language: Nginx config Author: Peter Leonov Contributors: Ivan Sagalaev -Category: common, config +Category: config Website: https://www.nginx.com */ diff --git a/src/languages/properties.js b/src/languages/properties.js index 4f5fa8d0f5..87eb082e30 100644 --- a/src/languages/properties.js +++ b/src/languages/properties.js @@ -2,7 +2,7 @@ Language: .properties Contributors: Valentin Aitken , Egor Rogov Website: https://en.wikipedia.org/wiki/.properties -Category: common, config +Category: config */ export default function(hljs) { From df5b85b9f3b85a79b0f5167faf2319001d7ad2c5 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:33:59 -0400 Subject: [PATCH 03/25] (chore) remove background from Schoolbook theme Related #2923. Work towards #2558. --- VERSION_11_UPGRADE.md | 1 + src/styles/school-book.css | 8 ++------ src/styles/school-book.png | Bin 486 -> 0 bytes 3 files changed, 3 insertions(+), 6 deletions(-) delete mode 100644 src/styles/school-book.png diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index b4d805a422..bed66889e6 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -2,3 +2,4 @@ - rename second_best to secondBest (highlightAuto) - remove apache, http, nginx, properties, coffeescript from :common #2848 +- schoolbook no longer has a custom lined background, it's solid now diff --git a/src/styles/school-book.css b/src/styles/school-book.css index 94838513f1..02cb8085f0 100644 --- a/src/styles/school-book.css +++ b/src/styles/school-book.css @@ -7,12 +7,8 @@ School Book style from goldblog.com.ua (c) Zaripov Yura .hljs { display: block; overflow-x: auto; - padding: 15px 0.5em 0.5em 30px; - font-size: 11px; - line-height:16px; - background:#f6f6ae url(./school-book.png); - border-top: solid 2px #d2e8b9; - border-bottom: solid 1px #d2e8b9; + padding: 0.5em; + background:#f6f5b2; } .hljs-keyword, diff --git a/src/styles/school-book.png b/src/styles/school-book.png deleted file mode 100644 index 956e9790a0e2c079b3d568348ff3accd1d9cac30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV7?7x3vjRjNjAS6Ga$v1?&#~tz_9*=IcwKTAYZb? zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4)r;B4q#jQ7Ycl#YS5MfK$ z?b^fh#qmaEhFDxvyThwfhdfkOPApt1lr{NA;Vr%uzxJuVIyzm(ed_8_-0$LLU})H&o5Re&aDemE>EG#(|F^t9_pa-H z_Mf?rMVrs}-M?S|?ZdY@c6s41zy8~}@a{v&#Ea7V)wJ$+#K|u$5UvWCdFLwGac}6w{_s*=8A6L7Rfc|9gboFyt I=akR{0OLZ+qyPW_ From fe312ea0130b5dc85c1223cb328ec3871d592f6b Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:36:14 -0400 Subject: [PATCH 04/25] (chore) remove c-like and htmlbars stubs --- VERSION_11_UPGRADE.md | 6 +++++ src/languages/c-like.js | 46 --------------------------------------- src/languages/htmlbars.js | 42 ----------------------------------- 3 files changed, 6 insertions(+), 88 deletions(-) delete mode 100644 src/languages/c-like.js delete mode 100644 src/languages/htmlbars.js diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index bed66889e6..74006b075a 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -3,3 +3,9 @@ - rename second_best to secondBest (highlightAuto) - remove apache, http, nginx, properties, coffeescript from :common #2848 - schoolbook no longer has a custom lined background, it's solid now + + +### Grammar's removed or renamed + +- remove the old htmlbars stub, use handlebars +- remove c-like, use c, cpp, or arduino diff --git a/src/languages/c-like.js b/src/languages/c-like.js deleted file mode 100644 index 88a3d988eb..0000000000 --- a/src/languages/c-like.js +++ /dev/null @@ -1,46 +0,0 @@ -/* -Language: C-like (deprecated, use C and C++ instead) -Author: Ivan Sagalaev -Contributors: Evgeny Stepanischev , Zaven Muradyan , Roel Deckers , Sam Wu , Jordi Petit , Pieter Vantorre , Google Inc. (David Benjamin) -*/ - -/* -C and C++ have now been fully split into `c.js` and `cpp.js`. -This file only exists for legacy purposes to support v10. -TODO: Remove this in v11. - -See: https://github.com/highlightjs/highlight.js/issues/2146 -*/ - -import cPlusPlus from './cpp.js'; - -/** @type LanguageFn */ -export default function(hljs) { - const lang = cPlusPlus(hljs); - - const C_ALIASES = [ - "c", - "h" - ]; - - const CPP_ALIASES = [ - 'cc', - 'c++', - 'h++', - 'hpp', - 'hh', - 'hxx', - 'cxx' - ]; - - lang.disableAutodetect = true; - lang.aliases = []; - // support users only loading c-like (legacy) - if (!hljs.getLanguage("c")) lang.aliases.push(...C_ALIASES); - if (!hljs.getLanguage("cpp")) lang.aliases.push(...CPP_ALIASES); - - // if c and cpp are loaded after then they will reclaim these - // aliases for themselves - - return lang; -} diff --git a/src/languages/htmlbars.js b/src/languages/htmlbars.js deleted file mode 100644 index 4a5dddd64b..0000000000 --- a/src/languages/htmlbars.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - Language: HTMLBars (legacy) - Requires: xml.js - Description: Matcher for Handlebars as well as EmberJS additions. - Website: https://github.com/tildeio/htmlbars - Category: template - */ - -/* - -See: https://github.com/highlightjs/highlight.js/issues/2181 - -This file is a stub that is only left in place for compatbility reasons for -anyone who may be manually pulling in this file via a require or fetching -it individually via CDN. - -TODO: Remove in version 11.0. - -*/ - -// compile time dependency on handlebars -import handlebars from "./handlebars.js"; - -export default function(hljs) { - const definition = handlebars(hljs); - - definition.name = "HTMLbars"; - - // HACK: This lets handlebars do the auto-detection if it's been loaded (by - // default the build script will load in alphabetical order) and if not (perhaps - // an install is only using `htmlbars`, not `handlebars`) then this will still - // allow HTMLBars to participate in the auto-detection - - // worse case someone will have HTMLbars and handlebars competing for the same - // content and will need to change their setup to only require handlebars, but - // I don't consider this a breaking change - if (hljs.getLanguage("handlebars")) { - definition.disableAutodetect = true; - } - - return definition; -} From faf14e4ee2bdf8442c22e4361c3de571ccc501fc Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:37:34 -0400 Subject: [PATCH 05/25] (chore) no more old `re` key, use `relevance` --- VERSION_11_UPGRADE.md | 4 ++++ src/highlight.js | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 74006b075a..2be38279d6 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -9,3 +9,7 @@ - remove the old htmlbars stub, use handlebars - remove c-like, use c, cpp, or arduino + +## API's changed + +- highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead diff --git a/src/highlight.js b/src/highlight.js index ba514360d6..41a433a3d9 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -724,8 +724,6 @@ const HLJS = function(hljs) { if (result.secondBest) { element.secondBest = { language: result.secondBest.language, - // TODO: remove with version 11.0 - re: result.secondBest.relevance, relavance: result.secondBest.relevance }; } From 81386f723ec5766e3e4c982a9d2f02d00bb3cf01 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:38:27 -0400 Subject: [PATCH 06/25] (chore) mention relevance can be a float now --- VERSION_11_UPGRADE.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 2be38279d6..76fa525de8 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -13,3 +13,7 @@ ## API's changed - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead + +## Notable + +- `relevance` returned may be a floating point number now From 95c8b89f0e9103ccb4247535ce26405d3f60d0fb Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:39:35 -0400 Subject: [PATCH 07/25] (chore) remove extra php version aliases, use `php` instead --- VERSION_11_UPGRADE.md | 4 ++++ src/languages/php.js | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 76fa525de8..61e761c193 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -10,6 +10,10 @@ - remove the old htmlbars stub, use handlebars - remove c-like, use c, cpp, or arduino +### Alias Changes + +- php3,4,5,6,etc... aliases removed, use php instead + ## API's changed - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead diff --git a/src/languages/php.js b/src/languages/php.js index 847e6599fe..ce0af400a8 100644 --- a/src/languages/php.js +++ b/src/languages/php.js @@ -103,7 +103,6 @@ export default function(hljs) { 'Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass' }; return { - aliases: ['php3', 'php4', 'php5', 'php6', 'php7', 'php8'], case_insensitive: true, keywords: KEYWORDS, contains: [ From bfa4cdf816cf6968575908f06a5b97bea3bc6a9e Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 05:58:05 -0400 Subject: [PATCH 08/25] (chore) Remover useBR, fixMarkup, tabReplace features --- VERSION_11_UPGRADE.md | 6 ++ docs/api.rst | 12 ---- package.json | 1 + src/highlight.js | 76 +---------------------- test/api/fixmarkup.js | 31 --------- test/api/index.js | 1 - test/fixtures/expect/customtabreplace.txt | 4 -- test/fixtures/expect/tabreplace.txt | 2 - test/fixtures/index.html | 26 -------- test/special/customMarkup.js | 20 +----- test/special/index.js | 3 +- test/special/useBr.js | 30 --------- types/index.d.ts | 3 - 13 files changed, 11 insertions(+), 204 deletions(-) delete mode 100644 test/api/fixmarkup.js delete mode 100644 test/fixtures/expect/customtabreplace.txt delete mode 100644 test/fixtures/expect/tabreplace.txt delete mode 100644 test/special/useBr.js diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 61e761c193..656a508481 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -16,8 +16,14 @@ ## API's changed +- fixMarkup is gone now, provide your own replacement #2534 - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead +### Configuration options removed/changed + +- useBR gone, #2559 +- tabReplace gone, #2874 + ## Notable - `relevance` returned may be a floating point number now diff --git a/docs/api.rst b/docs/api.rst index b8c59ee812..4e6638faab 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -45,16 +45,6 @@ Returns an object with the following properties: * ``secondBest``: object with the same structure for second-best heuristically detected language (may be absent) -``fixMarkup(value)`` (deprecated as of 10.3) --------------------------------------------- - -**fixMarkup is deprecated and will be removed entirely in v11.** - -Post-processing of the highlighted markup. Currently consists of replacing indentation TAB characters and using ``
`` tags instead of new-line characters. Options are set globally with ``configure``. - -Accepts a string with the highlighted markup. - - ``highlightBlock(block)`` ------------------------- @@ -73,8 +63,6 @@ in the ``class`` attribute of the DOM node. See the :doc:`class reference Configures global options: -* ``tabReplace``: a string used to replace TAB characters in indentation. -* ``useBR``: a flag to generate ``
`` tags instead of new-line characters in the output, useful when code is marked up using a non-``
`` container.
 * ``classPrefix``: a string prefix added before class names in the generated markup, used for backwards compatibility with stylesheets.
 * ``languages``: an array of language names and aliases restricting auto detection to only these languages.
 * ``languageDetectRe``: a regex to configure how CSS class names map to language (allows class names like say `color-as-php` vs the default of `language-php`, etc.)
diff --git a/package.json b/package.json
index 783987da5a..3374944902 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,7 @@
     "lint": "eslint src/*.js src/lib/*.js src/plugins/*.js demo/*.js",
     "lint-languages": "eslint --no-eslintrc -c .eslintrc.lang.js src/languages/**/*.js",
     "build_and_test": "npm run build && npm run test",
+    "build_and_test_browser": "npm run build-browser && npm run test-browser",
     "build": "node ./tools/build.js -t node",
     "build-cdn": "node ./tools/build.js -t cdn",
     "build-browser": "node ./tools/build.js -t browser :common",
diff --git a/src/highlight.js b/src/highlight.js
index 41a433a3d9..b9c6e4ea6c 100644
--- a/src/highlight.js
+++ b/src/highlight.js
@@ -36,7 +36,6 @@ const HLJS = function(hljs) {
   // safe/production mode - swallows more errors, tries to keep running
   // even if a single syntax or parse hits a fatal error
   let SAFE_MODE = true;
-  const fixMarkupRe = /(^(<[^>]+>|\t|)+|\n)/gm;
   const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?";
   /** @type {Language} */
   const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };
@@ -48,8 +47,6 @@ const HLJS = function(hljs) {
     noHighlightRe: /^(no-?highlight)$/i,
     languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
     classPrefix: 'hljs-',
-    tabReplace: null,
-    useBR: false,
     languages: null,
     // beta configuration options, subject to change, welcome to discuss
     // https://github.com/highlightjs/highlight.js/issues/1086
@@ -625,30 +622,6 @@ const HLJS = function(hljs) {
     return result;
   }
 
-  /**
-  Post-processing of the highlighted markup:
-
-  - replace TABs with something more useful
-  - replace real line-breaks with '
' for non-pre containers - - @param {string} html - @returns {string} - */ - function fixMarkup(html) { - if (!(options.tabReplace || options.useBR)) { - return html; - } - - return html.replace(fixMarkupRe, match => { - if (match === '\n') { - return options.useBR ? '
' : match; - } else if (options.tabReplace) { - return match.replace(/\t/g, options.tabReplace); - } - return match; - }); - } - /** * Builds new class name for block given the language name * @@ -663,35 +636,8 @@ const HLJS = function(hljs) { if (language) element.classList.add(language); } - /** @type {HLJSPlugin} */ - const brPlugin = { - "before:highlightElement": ({ el }) => { - if (options.useBR) { - el.innerHTML = el.innerHTML.replace(/\n/g, '').replace(//g, '\n'); - } - }, - "after:highlightElement": ({ result }) => { - if (options.useBR) { - result.value = result.value.replace(/\n/g, "
"); - } - } - }; - - const TAB_REPLACE_RE = /^(<[^>]+>|\t)+/gm; - /** @type {HLJSPlugin} */ - const tabReplacePlugin = { - "after:highlightElement": ({ result }) => { - if (options.tabReplace) { - result.value = result.value.replace(TAB_REPLACE_RE, (m) => - m.replace(/\t/g, options.tabReplace) - ); - } - } - }; - /** - * Applies highlighting to a DOM node containing code. Accepts a DOM node and - * two optional parameters for fixMarkup. + * Applies highlighting to a DOM node containing code. * * @param {HighlightedHTMLElement} element - the HTML element to highlight */ @@ -735,10 +681,6 @@ const HLJS = function(hljs) { * @param {Partial} userOptions */ function configure(userOptions) { - if (userOptions.useBR) { - logger.deprecated("10.3.0", "'useBR' will be removed entirely in v11.0"); - logger.deprecated("10.3.0", "Please see https://github.com/highlightjs/highlight.js/issues/2559"); - } options = inherit(options, userOptions); } @@ -937,19 +879,6 @@ const HLJS = function(hljs) { }); } - /** - Note: fixMarkup is deprecated and will be removed entirely in v11 - - @param {string} arg - @returns {string} - */ - function deprecateFixMarkup(arg) { - logger.deprecated("10.2.0", "fixMarkup will be removed entirely in v11.0"); - logger.deprecated("10.2.0", "Please see https://github.com/highlightjs/highlight.js/issues/2534"); - - return fixMarkup(arg); - } - /** * * @param {HighlightedHTMLElement} el @@ -966,7 +895,6 @@ const HLJS = function(hljs) { highlight, highlightAuto, highlightAll, - fixMarkup: deprecateFixMarkup, highlightElement, // TODO: Remove with v12 API highlightBlock: deprecateHighlightBlock, @@ -1002,9 +930,7 @@ const HLJS = function(hljs) { Object.assign(hljs, MODES); // built-in plugins, likely to be moved out of core in the future - hljs.addPlugin(brPlugin); // slated to be removed in v11 hljs.addPlugin(mergeHTMLPlugin); - hljs.addPlugin(tabReplacePlugin); return hljs; }; diff --git a/test/api/fixmarkup.js b/test/api/fixmarkup.js deleted file mode 100644 index 360b6a51e9..0000000000 --- a/test/api/fixmarkup.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -const should = require('should'); -const hljs = require('../../build'); - -describe('.fixmarkup()', () => { - after(() => { - hljs.configure({ useBR: false }); - }); - - it('should not strip HTML from beginning of strings', () => { - hljs.configure({ useBR: true }); - const value = '"some": \n "json"'; - const result = hljs.fixMarkup(value); - - result.should.equal( - '"some":
"json"' - ); - }); - - it('should not add "undefined" to the beginning of the result (#1452)', () => { - hljs.configure({ useBR: true }); - const value = '{ "some": \n "json" }'; - const result = hljs.fixMarkup(value); - - - result.should.equal( - '{ "some":
"json" }' - ); - }); -}); diff --git a/test/api/index.js b/test/api/index.js index b15ed29936..12a475e80b 100644 --- a/test/api/index.js +++ b/test/api/index.js @@ -5,7 +5,6 @@ describe('hljs', function() { require('./beginKeywords'); require('./binaryNumber'); require('./cNumber'); - require('./fixmarkup'); require('./getLanguage'); require('./highlight'); require('./ident'); diff --git a/test/fixtures/expect/customtabreplace.txt b/test/fixtures/expect/customtabreplace.txt deleted file mode 100644 index f6a396b716..0000000000 --- a/test/fixtures/expect/customtabreplace.txt +++ /dev/null @@ -1,4 +0,0 @@ -for x in [1, 2, 3]: - count(x) - if x == 3: - count(x + 1) diff --git a/test/fixtures/expect/tabreplace.txt b/test/fixtures/expect/tabreplace.txt deleted file mode 100644 index 01d1c576ac..0000000000 --- a/test/fixtures/expect/tabreplace.txt +++ /dev/null @@ -1,2 +0,0 @@ -for x in [1, 2, 3]: - count(x) \ No newline at end of file diff --git a/test/fixtures/index.html b/test/fixtures/index.html index 99a45bdf71..532f83db22 100644 --- a/test/fixtures/index.html +++ b/test/fixtures/index.html @@ -33,22 +33,12 @@
- -
for x in [1, 2, 3]:
-	count(x)
-
<div id="contents">
   <p>Hello, World!Goodbye, cruel world!
 </div>
 
- -
for x in [1, 2, 3]:
-	count(x)
-	if x == 3:
-		count(x + 1)
-
>> '\x41\x42\x43'
'ABC'


>> '\x61\x62\x63'
'abc'
@@ -113,22 +103,6 @@
-
- -
<head>
<meta charset="utf-8">
<title></title>
</head>
- -
<head>
- <meta charset="utf-8">
- <title></title>
-</head>
- -
<head>
- <meta charset="utf-8">
- <title></title>
-</head>
- -
-
( [ ( ) ] )
diff --git a/test/special/customMarkup.js b/test/special/customMarkup.js index fd88e377cc..1e8f1db627 100644 --- a/test/special/customMarkup.js +++ b/test/special/customMarkup.js @@ -9,33 +9,17 @@ describe('custom markup', () => { this.blocks = [...testHTML].map(x => x.innerHTML); }); - it('should replace tabs', () => { - const filename = utility.buildPath('fixtures', 'expect', - 'tabreplace.txt'), - actual = this.blocks[0]; - - return utility.expectedFile(filename, 'utf-8', actual); - }); - it('should keep custom markup', () => { const filename = utility.buildPath('fixtures', 'expect', 'custommarkup.txt'), - actual = this.blocks[1]; - - return utility.expectedFile(filename, 'utf-8', actual); - }); - - it('should keep custom markup and replace tabs', () => { - const filename = utility.buildPath('fixtures', 'expect', - 'customtabreplace.txt'), - actual = this.blocks[2]; + actual = this.blocks[0]; return utility.expectedFile(filename, 'utf-8', actual); }); it('should keep the same amount of void elements (
,
, ...)', () => { const filename = utility.buildPath('fixtures', 'expect', 'brInPre.txt'), - actual = this.blocks[3]; + actual = this.blocks[1]; return utility.expectedFile(filename, 'utf-8', actual); }); diff --git a/test/special/index.js b/test/special/index.js index 80f91e3466..c00ce60400 100644 --- a/test/special/index.js +++ b/test/special/index.js @@ -25,7 +25,7 @@ describe('special cases tests', () => { blocks.forEach(hljs.highlightElement); // Setup hljs for non-`
` tests
-    hljs.configure({ useBR: true });
+    hljs.configure();
 
     blocks = document.querySelectorAll('.code');
     blocks.forEach(hljs.highlightElement);
@@ -37,6 +37,5 @@ describe('special cases tests', () => {
   require('./noHighlight');
   require('./subLanguages');
   require('./buildClassName');
-  require('./useBr');
   require('./endsWithParentVariants')
 });
diff --git a/test/special/useBr.js b/test/special/useBr.js
deleted file mode 100644
index 55b255fe9b..0000000000
--- a/test/special/useBr.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict';
-
-const utility = require('../utility');
-
-describe('use br', () => {
-  before(() => {
-    const filename = utility.buildPath('fixtures', 'expect', 'useBr.txt'),
-          testHTML = document.querySelectorAll('#use-br .hljs');
-
-    return utility.setupFile(filename, 'utf-8', this, testHTML);
-  });
-
-  it('should respect 
tags', () => { - const actual = this.blocks[0]; - - actual.should.equal(this.expected); - }); - - it('should ignore literal new lines', () => { - const actual = this.blocks[1]; - - actual.should.equal(this.expected); - }); - - it('should recognize xml-style
', () => { - const actual = this.blocks[2]; - - actual.should.equal(this.expected); - }); -}); diff --git a/types/index.d.ts b/types/index.d.ts index 49afb86032..3a1b7d45a6 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -17,7 +17,6 @@ interface VuePlugin { interface PublicApi { highlight: (languageName: string, code: string, ignoreIllegals?: boolean, continuation?: Mode) => HighlightResult highlightAuto: (code: string, languageSubset?: string[]) => AutoHighlightResult - fixMarkup: (html: string) => string highlightBlock: (element: HTMLElement) => void configure: (options: Partial) => void initHighlighting: () => void @@ -116,8 +115,6 @@ interface HLJSOptions { noHighlightRe: RegExp languageDetectRe: RegExp classPrefix: string - tabReplace?: string - useBR: boolean languages?: string[] __emitter: EmitterConstructor } From 92442622db163bd6c16672eb533dc51e0cb9d34d Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 06:02:17 -0400 Subject: [PATCH 09/25] (chore) rename regex.join to indicate it's internal --- VERSION_11_UPGRADE.md | 3 ++- src/lib/mode_compiler.js | 2 +- src/lib/regex.js | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 656a508481..f32ce3a0e6 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -24,6 +24,7 @@ - useBR gone, #2559 - tabReplace gone, #2874 -## Notable +## Others - `relevance` returned may be a floating point number now +- regex utility `join` renamed to `_eitherRewriteBackreferences` (this was always internal) diff --git a/src/lib/mode_compiler.js b/src/lib/mode_compiler.js index 173185c60e..4ab7bd27c4 100644 --- a/src/lib/mode_compiler.js +++ b/src/lib/mode_compiler.js @@ -66,7 +66,7 @@ export function compileLanguage(language, { plugins }) { this.exec = () => null; } const terminators = this.regexes.map(el => el[1]); - this.matcherRe = langRe(regex.join(terminators), true); + this.matcherRe = langRe(regex._eitherRewriteBackreferences(terminators), true); this.lastIndex = 0; } diff --git a/src/lib/regex.js b/src/lib/regex.js index 55714db46f..3422666df8 100644 --- a/src/lib/regex.js +++ b/src/lib/regex.js @@ -89,6 +89,7 @@ export function startsWith(re, lexeme) { // follow the '(' with a '?'. const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; +// **INTERNAL** Not intended for outside usage // join logically computes regexps.join(separator), but fixes the // backreferences so they continue to match. // it also places each individual regular expression into it's own @@ -99,7 +100,7 @@ const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; * @param {string} separator * @returns {string} */ -export function join(regexps, separator = "|") { +export function _eitherRewriteBackreferences(regexps) { let numCaptures = 0; return regexps.map((regex) => { @@ -127,5 +128,5 @@ export function join(regexps, separator = "|") { } } return out; - }).map(re => `(${re})`).join(separator); + }).map(re => `(${re})`).join("|"); } From 499ef71bc5913266b647cd9ab923be7685698dd8 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 06:09:01 -0400 Subject: [PATCH 10/25] (chore) move CSS_NUMBER_MODE -> css-shared It's too specific to CSS to be a general rule. --- VERSION_11_UPGRADE.md | 1 + src/languages/css.js | 6 +++--- src/languages/less.js | 2 +- src/languages/lib/css-shared.js | 13 +++++++++++++ src/languages/scss.js | 6 +++--- src/languages/stylus.js | 8 ++++---- src/lib/modes.js | 13 ------------- types/index.d.ts | 1 - 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index f32ce3a0e6..c0be4315e4 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -18,6 +18,7 @@ - fixMarkup is gone now, provide your own replacement #2534 - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead +- `CSS_NUMBER_MODE` has now been moved into the internal `css-shared` library ### Configuration options removed/changed diff --git a/src/languages/css.js b/src/languages/css.js index 58818f54c9..5198fa3c5e 100644 --- a/src/languages/css.js +++ b/src/languages/css.js @@ -43,7 +43,7 @@ export default function(hljs) { VENDOR_PREFIX, // to recognize keyframe 40% etc which are outside the scope of our // attribute value mode - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, { className: 'selector-id', begin: /#[A-Za-z0-9_-]+/, @@ -83,7 +83,7 @@ export default function(hljs) { contains: [ modes.HEXCOLOR, modes.IMPORTANT, - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, ...STRINGS, // needed to highlight these as strings and to avoid issues with // illegal characters that might be inside urls that would tigger the @@ -135,7 +135,7 @@ export default function(hljs) { className: "attribute" }, ...STRINGS, - hljs.CSS_NUMBER_MODE + modes.CSS_NUMBER_MODE ] } ] diff --git a/src/languages/less.js b/src/languages/less.js index 4cac68b418..6f83379595 100644 --- a/src/languages/less.js +++ b/src/languages/less.js @@ -58,7 +58,7 @@ export default function(hljs) { hljs.C_BLOCK_COMMENT_MODE, STRING_MODE("'"), STRING_MODE('"'), - hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :( + modes.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :( { begin: '(url|data-uri)\\(', starts: { diff --git a/src/languages/lib/css-shared.js b/src/languages/lib/css-shared.js index 127fd51fb6..1a9f9e79b2 100644 --- a/src/languages/lib/css-shared.js +++ b/src/languages/lib/css-shared.js @@ -17,6 +17,19 @@ export const MODES = (hljs) => { hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE ] + }, + CSS_NUMBER_MODE: { + className: 'number', + begin: hljs.NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 } }; }; diff --git a/src/languages/scss.js b/src/languages/scss.js index 9b32a3629c..06bb634271 100644 --- a/src/languages/scss.js +++ b/src/languages/scss.js @@ -58,7 +58,7 @@ export default function(hljs) { { // pseudo-selector params begin: /\(/, end: /\)/, - contains: [ hljs.CSS_NUMBER_MODE ] + contains: [ modes.CSS_NUMBER_MODE ] }, { className: 'attribute', @@ -73,7 +73,7 @@ export default function(hljs) { contains: [ VARIABLE, modes.HEXCOLOR, - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, hljs.QUOTE_STRING_MODE, hljs.APOS_STRING_MODE, modes.IMPORTANT @@ -109,7 +109,7 @@ export default function(hljs) { hljs.QUOTE_STRING_MODE, hljs.APOS_STRING_MODE, modes.HEXCOLOR, - hljs.CSS_NUMBER_MODE + modes.CSS_NUMBER_MODE ] } ] diff --git a/src/languages/stylus.js b/src/languages/stylus.js index 4a0236399e..6dfba93dfb 100644 --- a/src/languages/stylus.js +++ b/src/languages/stylus.js @@ -111,7 +111,7 @@ export default function(hljs) { keyword: AT_MODIFIERS, attribute: css.MEDIA_FEATURES.join(" ") }, - contains: [ hljs.CSS_NUMBER_MODE ] + contains: [ modes.CSS_NUMBER_MODE ] } }, @@ -125,7 +125,7 @@ export default function(hljs) { VARIABLE, // dimension - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, // functions // - only from beginning of line + whitespace @@ -147,7 +147,7 @@ export default function(hljs) { modes.HEXCOLOR, VARIABLE, hljs.APOS_STRING_MODE, - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, hljs.QUOTE_STRING_MODE ] } @@ -168,7 +168,7 @@ export default function(hljs) { VARIABLE, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, - hljs.CSS_NUMBER_MODE, + modes.CSS_NUMBER_MODE, hljs.C_BLOCK_COMMENT_MODE, modes.IMPORTANT ], diff --git a/src/lib/modes.js b/src/lib/modes.js index e4d2ab45b9..a6c6942ee6 100644 --- a/src/lib/modes.js +++ b/src/lib/modes.js @@ -99,19 +99,6 @@ export const BINARY_NUMBER_MODE = { begin: BINARY_NUMBER_RE, relevance: 0 }; -export const CSS_NUMBER_MODE = { - className: 'number', - begin: NUMBER_RE + '(' + - '%|em|ex|ch|rem' + - '|vw|vh|vmin|vmax' + - '|cm|mm|in|pt|pc|px' + - '|deg|grad|rad|turn' + - '|s|ms' + - '|Hz|kHz' + - '|dpi|dpcm|dppx' + - ')?', - relevance: 0 -}; export const REGEXP_MODE = { // this outer rule makes sure we actually have a WHOLE regex and not simply // an expression such as: diff --git a/types/index.d.ts b/types/index.d.ts index 3a1b7d45a6..d4c918f777 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -50,7 +50,6 @@ interface ModesAPI { NUMBER_MODE: Mode C_NUMBER_MODE: Mode BINARY_NUMBER_MODE: Mode - CSS_NUMBER_MODE: Mode REGEXP_MODE: Mode TITLE_MODE: Mode UNDERSCORE_TITLE_MODE: Mode From 1e9f86492e3b6dc77d993b75ef13b7a174dd2b28 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 06:11:29 -0400 Subject: [PATCH 11/25] (chore) goodbye sql_more --- VERSION_11_UPGRADE.md | 1 + src/languages/sql_more.js | 181 ------------------ test/detect/sql_more/default.txt | 12 -- test/markup/sql_more/interval.expect.txt | 17 -- test/markup/sql_more/interval.txt | 17 -- test/markup/sql_more/join.expect.txt | 17 -- test/markup/sql_more/join.txt | 17 -- test/markup/sql_more/lateral-view.expect.txt | 7 - test/markup/sql_more/lateral-view.txt | 7 - .../sql_more/window-function.expect.txt | 23 --- test/markup/sql_more/window-function.txt | 23 --- 11 files changed, 1 insertion(+), 321 deletions(-) delete mode 100644 src/languages/sql_more.js delete mode 100644 test/detect/sql_more/default.txt delete mode 100644 test/markup/sql_more/interval.expect.txt delete mode 100644 test/markup/sql_more/interval.txt delete mode 100644 test/markup/sql_more/join.expect.txt delete mode 100644 test/markup/sql_more/join.txt delete mode 100644 test/markup/sql_more/lateral-view.expect.txt delete mode 100644 test/markup/sql_more/lateral-view.txt delete mode 100644 test/markup/sql_more/window-function.expect.txt delete mode 100644 test/markup/sql_more/window-function.txt diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index c0be4315e4..0ddf9eb1bd 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -9,6 +9,7 @@ - remove the old htmlbars stub, use handlebars - remove c-like, use c, cpp, or arduino +- removed `sql_more`, use `sql` instead ### Alias Changes diff --git a/src/languages/sql_more.js b/src/languages/sql_more.js deleted file mode 100644 index eb18c83e0f..0000000000 --- a/src/languages/sql_more.js +++ /dev/null @@ -1,181 +0,0 @@ -/* - Language: SQL More (mix of MySQL, Oracle, etc) - Contributors: Nikolay Lisienko , Heiko August , Travis Odom , Vadimtro , Benjamin Auder - Website: https://en.wikipedia.org/wiki/SQL - Category: database - */ - -/* - -This is a preservation of the old bloated SQL grammar which includes pretty much -the kitchen sink because no one was keeping track of which keywords belong to -which databases. This is likely to be removed in the future. - -- Oracle SQL should be factored into it's own 3rd party grammar. -- MySQL should be factored out into it's own 3rd party grammar. - -*/ - -export default function(hljs) { - var COMMENT_MODE = hljs.COMMENT('--', '$'); - return { - name: 'SQL (more)', - aliases: ["mysql", "oracle"], - disableAutodetect: true, - case_insensitive: true, - illegal: /[<>{}*]/, - contains: [ - { - beginKeywords: - 'begin end start commit rollback savepoint lock alter create drop rename call ' + - 'delete do handler insert load replace select truncate update set show pragma grant ' + - 'merge describe use explain help declare prepare execute deallocate release ' + - 'unlock purge reset change stop analyze cache flush optimize repair kill ' + - 'install uninstall checksum restore check backup revoke comment values with', - end: /;/, endsWithParent: true, - keywords: { - $pattern: /[\w\.]+/, - keyword: - 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' + - 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' + - 'all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply ' + - 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' + - 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' + - 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' + - 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' + - 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' + - 'bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' + - 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' + - 'char_length character_length characters characterset charindex charset charsetform charsetid check ' + - 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' + - 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' + - 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' + - 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' + - 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' + - 'consider consistent constant constraint constraints constructor container content contents context ' + - 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' + - 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' + - 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' + - 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' + - 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' + - 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' + - 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' + - 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' + - 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' + - 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' + - 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' + - 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' + - 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' + - 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' + - 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' + - 'execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external ' + - 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' + - 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' + - 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' + - 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' + - 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' + - 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' + - 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' + - 'hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified ' + - 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' + - 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' + - 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' + - 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' + - 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' + - 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase ' + - 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' + - 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' + - 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' + - 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' + - 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' + - 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' + - 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' + - 'minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month ' + - 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' + - 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' + - 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' + - 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' + - 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' + - 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' + - 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' + - 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' + - 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' + - 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' + - 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' + - 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' + - 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' + - 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' + - 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' + - 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' + - 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' + - 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' + - 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' + - 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' + - 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' + - 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' + - 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' + - 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' + - 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' + - 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' + - 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' + - 'sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select ' + - 'self semi sequence sequential serializable server servererror session session_user sessions_per_user set ' + - 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' + - 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' + - 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' + - 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' + - 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' + - 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' + - 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' + - 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' + - 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' + - 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' + - 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' + - 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo ' + - 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' + - 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' + - 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' + - 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' + - 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' + - 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' + - 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' + - 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' + - 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' + - 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' + - 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' + - 'wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped ' + - 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' + - 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek', - literal: - 'true false null unknown', - built_in: - 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' + - 'numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void' - }, - contains: [ - { - className: 'string', - begin: '\'', end: '\'', - contains: [{begin: '\'\''}] - }, - { - className: 'string', - begin: '"', end: '"', - contains: [{begin: '""'}] - }, - { - className: 'string', - begin: '`', end: '`' - }, - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE, - COMMENT_MODE, - hljs.HASH_COMMENT_MODE - ] - }, - hljs.C_BLOCK_COMMENT_MODE, - COMMENT_MODE, - hljs.HASH_COMMENT_MODE - ] - }; -} diff --git a/test/detect/sql_more/default.txt b/test/detect/sql_more/default.txt deleted file mode 100644 index d4325cc1c5..0000000000 --- a/test/detect/sql_more/default.txt +++ /dev/null @@ -1,12 +0,0 @@ -CREATE TABLE "topic" ( - "id" serial NOT NULL PRIMARY KEY, - "forum_id" integer NOT NULL, - "subject" varchar(255) NOT NULL -); -ALTER TABLE "topic" -ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id") -REFERENCES "forum" ("id"); - --- Initials -insert into "topic" ("forum_id", "subject") -values (2, 'D''artagnian'); diff --git a/test/markup/sql_more/interval.expect.txt b/test/markup/sql_more/interval.expect.txt deleted file mode 100644 index fa32487be7..0000000000 --- a/test/markup/sql_more/interval.expect.txt +++ /dev/null @@ -1,17 +0,0 @@ -SELECT - CURRENT_TIMESTAMP - - INTERVAL 2 YEARS - + INTERVAL 1 MONTH - - INTERVAL 3 DAYS - + INTERVAL 10 HOURS - + interval 30 MINUTES - - INTERVAL 20 SECOND AS past_timestamp -FROM VALUES ("dummy"); - -WITH ts AS ( - SELECT CURRENT_TIMESTAMP AS now FROM VALUES ('dummy') - ) -SELECT - now - INTERVAL 1 DAY - INTERVAL 2 HOURS - INTERVAL 3 MINUTES - INTERVAL 4 SECONDS AS LONG_VERSION, - now - INTERVAL '1 2:3:4.100' DAY TO SECOND AS SHORT_VERSION -FROM ts; diff --git a/test/markup/sql_more/interval.txt b/test/markup/sql_more/interval.txt deleted file mode 100644 index 9f1657d4b6..0000000000 --- a/test/markup/sql_more/interval.txt +++ /dev/null @@ -1,17 +0,0 @@ -SELECT - CURRENT_TIMESTAMP - - INTERVAL 2 YEARS - + INTERVAL 1 MONTH - - INTERVAL 3 DAYS - + INTERVAL 10 HOURS - + interval 30 MINUTES - - INTERVAL 20 SECOND AS past_timestamp -FROM VALUES ("dummy"); - -WITH ts AS ( - SELECT CURRENT_TIMESTAMP AS now FROM VALUES ('dummy') - ) -SELECT - now - INTERVAL 1 DAY - INTERVAL 2 HOURS - INTERVAL 3 MINUTES - INTERVAL 4 SECONDS AS LONG_VERSION, - now - INTERVAL '1 2:3:4.100' DAY TO SECOND AS SHORT_VERSION -FROM ts; diff --git a/test/markup/sql_more/join.expect.txt b/test/markup/sql_more/join.expect.txt deleted file mode 100644 index fdeacf3663..0000000000 --- a/test/markup/sql_more/join.expect.txt +++ /dev/null @@ -1,17 +0,0 @@ -SELECT - left_table.col1 AS l_col1, - left_table.col2 AS l_col2 -FROM - VALUES (0, 10), (1, 11), (2, 12), (3,13), (4, 14), (5, 14) AS left_table - ANTI JOIN - VALUES (0, 10), (2, 12), (4, 14), (6, 16) AS right_table - ON left_table.col1 = right_table.col1; - -SELECT - left_table.col1 AS l_col1, - left_table.col2 AS l_col2 -FROM - VALUES (0, 10), (1, 11), (2, 12), (3,13), (4, 14), (5, 14) AS left_table - LEFT SEMI JOIN - VALUES (0, 10), (2, 12), (4, 14), (6, 16) AS right_table - ON left_table.col1 = right_table.col1; diff --git a/test/markup/sql_more/join.txt b/test/markup/sql_more/join.txt deleted file mode 100644 index 3c23573a84..0000000000 --- a/test/markup/sql_more/join.txt +++ /dev/null @@ -1,17 +0,0 @@ -SELECT - left_table.col1 AS l_col1, - left_table.col2 AS l_col2 -FROM - VALUES (0, 10), (1, 11), (2, 12), (3,13), (4, 14), (5, 14) AS left_table - ANTI JOIN - VALUES (0, 10), (2, 12), (4, 14), (6, 16) AS right_table - ON left_table.col1 = right_table.col1; - -SELECT - left_table.col1 AS l_col1, - left_table.col2 AS l_col2 -FROM - VALUES (0, 10), (1, 11), (2, 12), (3,13), (4, 14), (5, 14) AS left_table - LEFT SEMI JOIN - VALUES (0, 10), (2, 12), (4, 14), (6, 16) AS right_table - ON left_table.col1 = right_table.col1; diff --git a/test/markup/sql_more/lateral-view.expect.txt b/test/markup/sql_more/lateral-view.expect.txt deleted file mode 100644 index 006b309b70..0000000000 --- a/test/markup/sql_more/lateral-view.expect.txt +++ /dev/null @@ -1,7 +0,0 @@ -SELECT - master_child.col1 AS master_id, - child_table.child_id -FROM VALUES - ( 1 , ARRAY(1,2,3)), - (2, ARRAY(4,5,6)) AS master_child -LATERAL VIEW EXPLODE(master_child.col2) child_table AS child_id; diff --git a/test/markup/sql_more/lateral-view.txt b/test/markup/sql_more/lateral-view.txt deleted file mode 100644 index 9a152f3956..0000000000 --- a/test/markup/sql_more/lateral-view.txt +++ /dev/null @@ -1,7 +0,0 @@ -SELECT - master_child.col1 AS master_id, - child_table.child_id -FROM VALUES - ( 1 , ARRAY(1,2,3)), - (2, ARRAY(4,5,6)) AS master_child -LATERAL VIEW EXPLODE(master_child.col2) child_table AS child_id; diff --git a/test/markup/sql_more/window-function.expect.txt b/test/markup/sql_more/window-function.expect.txt deleted file mode 100644 index a6882aac4a..0000000000 --- a/test/markup/sql_more/window-function.expect.txt +++ /dev/null @@ -1,23 +0,0 @@ -SELECT * -FROM ( - SELECT - posts.col1 AS emp_id, - posts.col2 AS dept_id, - posts.col3 AS posts, - DENSE_RANK() OVER post_ranking AS rank - FROM VALUES - (1, 1 ,100), - (2, 1 ,50), - (8, 1 ,250), - (3, 2 ,200), - (4, 2 ,300), - (9, 2 ,1000), - (5, 3 ,300), - (6, 3 ,100), - (7, 3 ,400) AS posts - WINDOW post_ranking AS ( - PARTITION BY posts.col2 - ORDER BY posts.col3 DESC - ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) -) -WHERE rank <= 2; diff --git a/test/markup/sql_more/window-function.txt b/test/markup/sql_more/window-function.txt deleted file mode 100644 index a3dbf70c73..0000000000 --- a/test/markup/sql_more/window-function.txt +++ /dev/null @@ -1,23 +0,0 @@ -SELECT * -FROM ( - SELECT - posts.col1 AS emp_id, - posts.col2 AS dept_id, - posts.col3 AS posts, - DENSE_RANK() OVER post_ranking AS rank - FROM VALUES - (1, 1 ,100), - (2, 1 ,50), - (8, 1 ,250), - (3, 2 ,200), - (4, 2 ,300), - (9, 2 ,1000), - (5, 3 ,300), - (6, 3 ,100), - (7, 3 ,400) AS posts - WINDOW post_ranking AS ( - PARTITION BY posts.col2 - ORDER BY posts.col3 DESC - ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) -) -WHERE rank <= 2; From af5a25b4740930f7b8d19fc1d452fa4231444fb0 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 06:51:00 -0400 Subject: [PATCH 12/25] (chore) default padding 1em, some CSS consistency --- VERSION_11_UPGRADE.md | 10 +++++-- docs/style-guide.rst | 11 ------- src/styles/a11y-dark.css | 13 ++++----- src/styles/a11y-light.css | 13 ++++----- src/styles/agate.css | 3 -- src/styles/an-old-hope.css | 37 +++++++++++------------- src/styles/androidstudio.css | 3 -- src/styles/arduino-light.css | 9 ++---- src/styles/arta.css | 5 +--- src/styles/ascetic.css | 3 -- src/styles/atelier-cave-dark.css | 13 ++++----- src/styles/atelier-cave-light.css | 13 ++++----- src/styles/atelier-dune-dark.css | 13 ++++----- src/styles/atelier-dune-light.css | 13 ++++----- src/styles/atelier-estuary-dark.css | 13 ++++----- src/styles/atelier-estuary-light.css | 13 ++++----- src/styles/atelier-forest-dark.css | 13 ++++----- src/styles/atelier-forest-light.css | 13 ++++----- src/styles/atelier-heath-dark.css | 13 ++++----- src/styles/atelier-heath-light.css | 13 ++++----- src/styles/atelier-lakeside-dark.css | 13 ++++----- src/styles/atelier-lakeside-light.css | 13 ++++----- src/styles/atelier-plateau-dark.css | 13 ++++----- src/styles/atelier-plateau-light.css | 13 ++++----- src/styles/atelier-savanna-dark.css | 13 ++++----- src/styles/atelier-savanna-light.css | 13 ++++----- src/styles/atelier-seaside-dark.css | 13 ++++----- src/styles/atelier-seaside-light.css | 13 ++++----- src/styles/atelier-sulphurpool-dark.css | 13 ++++----- src/styles/atelier-sulphurpool-light.css | 13 ++++----- src/styles/atom-one-dark-reasonable.css | 3 -- src/styles/atom-one-dark.css | 3 -- src/styles/atom-one-light.css | 3 -- src/styles/brown-paper.css | 7 ++--- src/styles/codepen-embed.css | 3 -- src/styles/color-brewer.css | 7 ++--- src/styles/darcula.css | 5 ---- src/styles/dark.css | 8 ++--- src/styles/default.css | 8 ++--- src/styles/docco.css | 3 -- src/styles/dracula.css | 7 ++--- src/styles/far.css | 8 ++--- src/styles/foundation.css | 3 -- src/styles/github-gist.css | 3 -- src/styles/github.css | 3 -- src/styles/gml.css | 3 -- src/styles/googlecode.css | 3 -- src/styles/gradient-dark.css | 5 +--- src/styles/gradient-light.css | 5 +--- src/styles/grayscale.css | 3 -- src/styles/gruvbox-dark.css | 8 ++--- src/styles/gruvbox-light.css | 8 ++--- src/styles/hopscotch.css | 13 ++++----- src/styles/hybrid.css | 10 +------ src/styles/idea.css | 3 -- src/styles/ir-black.css | 3 -- src/styles/isbl-editor-dark.css | 3 -- src/styles/isbl-editor-light.css | 3 -- src/styles/kimbie.dark.css | 13 ++++----- src/styles/kimbie.light.css | 13 ++++----- src/styles/lightfair.css | 7 ++--- src/styles/lioshi.css | 13 ++++----- src/styles/magula.css | 3 -- src/styles/mono-blue.css | 3 -- src/styles/monokai-sublime.css | 5 +--- src/styles/monokai.css | 3 -- src/styles/night-owl.css | 7 ++--- src/styles/nnfx-dark.css | 3 -- src/styles/nnfx.css | 3 -- src/styles/nord.css | 3 -- src/styles/obsidian.css | 8 +---- src/styles/ocean.css | 13 ++++----- src/styles/paraiso-dark.css | 13 ++++----- src/styles/paraiso-light.css | 13 ++++----- src/styles/pojoaque.css | 3 -- src/styles/purebasic.css | 6 ---- src/styles/qtcreator_dark.css | 5 +--- src/styles/qtcreator_light.css | 7 +---- src/styles/railscasts.css | 3 -- src/styles/rainbow.css | 3 -- src/styles/routeros.css | 7 ++--- src/styles/school-book.css | 5 +--- src/styles/shades-of-purple.css | 15 ++++------ src/styles/solarized-dark.css | 3 -- src/styles/solarized-light.css | 3 -- src/styles/srcery.css | 3 -- src/styles/stackoverflow-dark.css | 3 -- src/styles/stackoverflow-light.css | 3 -- src/styles/sunburst.css | 3 -- src/styles/tomorrow-night-blue.css | 3 -- src/styles/tomorrow-night-bright.css | 3 -- src/styles/tomorrow-night-eighties.css | 13 ++++----- src/styles/tomorrow-night.css | 13 ++++----- src/styles/tomorrow.css | 13 ++++----- src/styles/vs.css | 3 -- src/styles/vs2015.css | 3 -- src/styles/xcode.css | 3 -- src/styles/xt256.css | 3 -- src/styles/zenburn.css | 3 -- tools/build_config.js | 4 ++- tools/lib/makestuff.js | 11 ++++++- 101 files changed, 241 insertions(+), 540 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 0ddf9eb1bd..d6ac2853c5 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -1,8 +1,6 @@ -# very rough draft +# Default Build Changes -- rename second_best to secondBest (highlightAuto) - remove apache, http, nginx, properties, coffeescript from :common #2848 -- schoolbook no longer has a custom lined background, it's solid now ### Grammar's removed or renamed @@ -11,12 +9,18 @@ - remove c-like, use c, cpp, or arduino - removed `sql_more`, use `sql` instead +### Visual / Themeing / CSS Changes + +- Default padding on `.hljs` is now 1em (up from 0.5em) +- schoolbook no longer has a custom lined background, it's solid now + ### Alias Changes - php3,4,5,6,etc... aliases removed, use php instead ## API's changed +- rename second_best to secondBest (highlightAuto) - fixMarkup is gone now, provide your own replacement #2534 - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead - `CSS_NUMBER_MODE` has now been moved into the internal `css-shared` library diff --git a/docs/style-guide.rst b/docs/style-guide.rst index e813f94ec3..b02b47b670 100644 --- a/docs/style-guide.rst +++ b/docs/style-guide.rst @@ -60,17 +60,6 @@ Okay to use: These may seem arbitrary at first but it's what has shown to make sense in practice. -There's also a common set of rules that *has* to be defined for the root -container verbatim: - -:: - - .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - } - ``.subst`` ---------- diff --git a/src/styles/a11y-dark.css b/src/styles/a11y-dark.css index b93b742a45..76f75f1a04 100644 --- a/src/styles/a11y-dark.css +++ b/src/styles/a11y-dark.css @@ -2,6 +2,11 @@ /* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ /* @author: ericwbailey */ +.hljs { + background: #2b2b2b; + color: #f8f8f2; +} + /* Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #dcc6e0; } -.hljs { - display: block; - overflow-x: auto; - background: #2b2b2b; - color: #f8f8f2; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/a11y-light.css b/src/styles/a11y-light.css index f1bf8f3f8f..504d60b79b 100644 --- a/src/styles/a11y-light.css +++ b/src/styles/a11y-light.css @@ -2,6 +2,11 @@ /* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ /* @author: ericwbailey */ +.hljs { + background: #fefefe; + color: #545454; +} + /* Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #7928a1; } -.hljs { - display: block; - overflow-x: auto; - background: #fefefe; - color: #545454; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/agate.css b/src/styles/agate.css index 5d7a3e8c78..57abd15a91 100644 --- a/src/styles/agate.css +++ b/src/styles/agate.css @@ -17,9 +17,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #333; color: white; } diff --git a/src/styles/an-old-hope.css b/src/styles/an-old-hope.css index a6d56f4b40..d0d2d3e768 100644 --- a/src/styles/an-old-hope.css +++ b/src/styles/an-old-hope.css @@ -1,4 +1,4 @@ -/* +/* An Old Hope – Star Wars Syntax (c) Gustavo Costa Original theme - Ocean Dark Theme – by https://github.com/gavsiu @@ -6,9 +6,16 @@ Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/Je */ +/* Millenium Falcon */ +.hljs +{ + background: #1C1D21; + color: #c0c5ce; +} + /* Death Star Comment */ .hljs-comment, -.hljs-quote +.hljs-quote { color: #B6B18B; } @@ -21,7 +28,7 @@ Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/Je .hljs-selector-id, .hljs-selector-class, .hljs-regexp, -.hljs-deletion +.hljs-deletion { color: #EB3C54; } @@ -34,13 +41,13 @@ Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/Je .hljs-type, .hljs-params, .hljs-meta, -.hljs-link +.hljs-link { color: #E7CE56; } /* Luke Skywalker */ -.hljs-attribute +.hljs-attribute { color: #EE7C2B; } @@ -49,41 +56,31 @@ Based on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/Je .hljs-string, .hljs-symbol, .hljs-bullet, -.hljs-addition +.hljs-addition { color: #4FB4D7; } /* Yoda */ .hljs-title, -.hljs-section +.hljs-section { color: #78BB65; } /* Mace Windu */ .hljs-keyword, -.hljs-selector-tag +.hljs-selector-tag { color: #B45EA4; } -/* Millenium Falcon */ -.hljs -{ - display: block; - overflow-x: auto; - background: #1C1D21; - color: #c0c5ce; - padding: 0.5em; -} - -.hljs-emphasis +.hljs-emphasis { font-style: italic; } -.hljs-strong +.hljs-strong { font-weight: bold; } diff --git a/src/styles/androidstudio.css b/src/styles/androidstudio.css index bc8e473b59..47779718bd 100644 --- a/src/styles/androidstudio.css +++ b/src/styles/androidstudio.css @@ -6,9 +6,6 @@ Author: Pedro Oliveira .hljs { color: #a9b7c6; background: #282b2e; - display: block; - overflow-x: auto; - padding: 0.5em; } .hljs-number, diff --git a/src/styles/arduino-light.css b/src/styles/arduino-light.css index e6039c36f8..ec7a25c09c 100644 --- a/src/styles/arduino-light.css +++ b/src/styles/arduino-light.css @@ -5,13 +5,10 @@ Arduino® Light Theme - Stefania Mellai */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #FFFFFF; + background: white; + color: #434f54; } -.hljs, .hljs-subst { color: #434f54; } @@ -83,5 +80,5 @@ Arduino® Light Theme - Stefania Mellai } .hljs-number { - color: #8A7B52; + color: #8A7B52; } diff --git a/src/styles/arta.css b/src/styles/arta.css index 75ef3a9e59..bd7d6eeee1 100644 --- a/src/styles/arta.css +++ b/src/styles/arta.css @@ -4,13 +4,10 @@ Author: pumbur */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #222; + color: #aaa; } -.hljs, .hljs-subst { color: #aaa; } diff --git a/src/styles/ascetic.css b/src/styles/ascetic.css index 48397e889d..73b3c314e6 100644 --- a/src/styles/ascetic.css +++ b/src/styles/ascetic.css @@ -5,9 +5,6 @@ Original style from softwaremaniacs.org (c) Ivan Sagalaev */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #363c69; background:#b7a68e url(./brown-papersq.png); } @@ -18,9 +16,8 @@ Brown Paper style from goldblog.com.ua (c) Zaripov Yura font-weight:bold; } -.hljs, .hljs-subst { - color: #363c69; + /* default */ } .hljs-string, diff --git a/src/styles/codepen-embed.css b/src/styles/codepen-embed.css index 195c4a0784..3189c1f33d 100644 --- a/src/styles/codepen-embed.css +++ b/src/styles/codepen-embed.css @@ -5,9 +5,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #222; color: #fff; } diff --git a/src/styles/color-brewer.css b/src/styles/color-brewer.css index 7934d986a7..51c85233b4 100644 --- a/src/styles/color-brewer.css +++ b/src/styles/color-brewer.css @@ -7,15 +7,12 @@ Ported by Fabrício Tavares de Oliveira */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #000; background: #fff; } -.hljs, .hljs-subst { - color: #000; + /* default */ } .hljs-string, diff --git a/src/styles/darcula.css b/src/styles/darcula.css index 4c734f1cd7..4b627925bf 100644 --- a/src/styles/darcula.css +++ b/src/styles/darcula.css @@ -1,14 +1,9 @@ /* - Darcula color scheme from the JetBrains family of IDEs - */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #2b2b2b; color: #bababa; } diff --git a/src/styles/dark.css b/src/styles/dark.css index b4724f5f50..34708897f3 100644 --- a/src/styles/dark.css +++ b/src/styles/dark.css @@ -5,9 +5,7 @@ Dark style from softwaremaniacs.org (c) Ivan Sagalaev - */ .hljs { display: block; overflow-x: auto; - padding: 0.5em; + padding: 1em; background: #F0F0F0; + color: #444; } /* Base color: saturation 0; */ -.hljs, .hljs-subst { - color: #444; + /* default */ } .hljs-comment { diff --git a/src/styles/docco.css b/src/styles/docco.css index db366be372..5a44d8651d 100644 --- a/src/styles/docco.css +++ b/src/styles/docco.css @@ -3,9 +3,6 @@ Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; color: #000; background: #f8f8ff; } diff --git a/src/styles/dracula.css b/src/styles/dracula.css index d591db6801..f8dfb3d529 100644 --- a/src/styles/dracula.css +++ b/src/styles/dracula.css @@ -15,9 +15,7 @@ http://zenorocha.mit-license.org */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #f8f8f2; background: #282a36; } @@ -33,9 +31,8 @@ http://zenorocha.mit-license.org color: #ff79c6; } -.hljs, .hljs-subst { - color: #f8f8f2; + /* default */ } .hljs-string, diff --git a/src/styles/far.css b/src/styles/far.css index 2b3f87b562..8669f97b95 100644 --- a/src/styles/far.css +++ b/src/styles/far.css @@ -5,15 +5,13 @@ FAR Style (c) MajestiC */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #0ff; background: #000080; } -.hljs, + .hljs-subst { - color: #0ff; + /* default */ } .hljs-string, diff --git a/src/styles/foundation.css b/src/styles/foundation.css index 67c6e10152..d32f8050f6 100644 --- a/src/styles/foundation.css +++ b/src/styles/foundation.css @@ -7,9 +7,6 @@ Date: 2013-04-02 */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #eee; color: black; } diff --git a/src/styles/github-gist.css b/src/styles/github-gist.css index 18240c8882..982ce16cdf 100644 --- a/src/styles/github-gist.css +++ b/src/styles/github-gist.css @@ -5,11 +5,8 @@ */ .hljs { - display: block; background: white; - padding: 0.5em; color: #333333; - overflow-x: auto; } .hljs-comment, diff --git a/src/styles/github.css b/src/styles/github.css index 791932b87e..4e7f3d1740 100644 --- a/src/styles/github.css +++ b/src/styles/github.css @@ -5,9 +5,6 @@ github.com style (c) Vasily Polovnyov */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; color: #333; background: #f8f8f8; } diff --git a/src/styles/gml.css b/src/styles/gml.css index 7fff0b8772..3c47525a1a 100644 --- a/src/styles/gml.css +++ b/src/styles/gml.css @@ -5,9 +5,6 @@ GML Theme - Meseta */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #222222; color: #C0C0C0; } diff --git a/src/styles/googlecode.css b/src/styles/googlecode.css index 884ad63538..2a5adcbb1c 100644 --- a/src/styles/googlecode.css +++ b/src/styles/googlecode.css @@ -5,9 +5,6 @@ Google Code style (c) Aahan Krish */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: white; color: black; } diff --git a/src/styles/gradient-dark.css b/src/styles/gradient-dark.css index ca6d001b41..35ae517dab 100644 --- a/src/styles/gradient-dark.css +++ b/src/styles/gradient-dark.css @@ -6,9 +6,6 @@ Gradient Dark (c) Samia Ali .hljs { -display: block; -overflow-x: auto; -padding: 0.5em; background: rgb(80,31,122); background: linear-gradient(166deg, rgba(80,31,122,1) 0%, rgba(40,32,179,1) 80%); color:#e7e4eb; @@ -42,7 +39,7 @@ color:#e7e4eb; { color:#F19FFF; - + } .hljs-keyword, diff --git a/src/styles/gradient-light.css b/src/styles/gradient-light.css index 801a136f4f..af57b67be9 100644 --- a/src/styles/gradient-light.css +++ b/src/styles/gradient-light.css @@ -6,9 +6,6 @@ Gradient Light (c) Samia Ali .hljs { -display: block; -overflow-x: auto; -padding: 0.5em; background: rgb(255,253,141); background: linear-gradient(142deg, rgba(255,253,141,1) 0%, rgba(252,183,255,1) 35%, rgba(144,236,255,1) 100%); color:#250482; @@ -42,7 +39,7 @@ color:#01958B; { color:#43449F; - + } .hljs-keyword, diff --git a/src/styles/grayscale.css b/src/styles/grayscale.css index 5376f34064..a549abcf31 100644 --- a/src/styles/grayscale.css +++ b/src/styles/grayscale.css @@ -5,9 +5,6 @@ grayscale style (c) MY Sun */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; color: #333; background: #fff; } diff --git a/src/styles/gruvbox-dark.css b/src/styles/gruvbox-dark.css index f563811a86..493a100abe 100644 --- a/src/styles/gruvbox-dark.css +++ b/src/styles/gruvbox-dark.css @@ -5,15 +5,13 @@ Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/mor */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #ebdbb2; background: #282828; } -.hljs, + .hljs-subst { - color: #ebdbb2; + /* default */ } /* Gruvbox Red */ diff --git a/src/styles/gruvbox-light.css b/src/styles/gruvbox-light.css index ff45468eb2..28d56116c3 100644 --- a/src/styles/gruvbox-light.css +++ b/src/styles/gruvbox-light.css @@ -5,15 +5,13 @@ Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/mo */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #3c3836; background: #fbf1c7; } -.hljs, + .hljs-subst { - color: #3c3836; + /* default */ } /* Gruvbox Red */ diff --git a/src/styles/hopscotch.css b/src/styles/hopscotch.css index 5934601a00..e408c6d2b9 100644 --- a/src/styles/hopscotch.css +++ b/src/styles/hopscotch.css @@ -6,6 +6,11 @@ * This work is licensed under the Creative Commons CC0 1.0 Universal License */ +.hljs { + background: #322931; + color: #b9b5b8; +} + /* Comment */ .hljs-comment, .hljs-quote { @@ -67,14 +72,6 @@ color: #c85e7c; } -.hljs { - display: block; - overflow-x: auto; - background: #322931; - color: #b9b5b8; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/hybrid.css b/src/styles/hybrid.css index 29735a1890..04ea31b9c7 100644 --- a/src/styles/hybrid.css +++ b/src/styles/hybrid.css @@ -4,12 +4,9 @@ vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) */ -/*background color*/ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #1d1f21; + color: #c5c8c6; } /*selection color*/ @@ -23,11 +20,6 @@ vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) background: #373b41; } -/*foreground color*/ -.hljs { - color: #c5c8c6; -} - /*color: fg_yellow*/ .hljs-title, .hljs-name { diff --git a/src/styles/idea.css b/src/styles/idea.css index 3bf1892bd4..5adc8f899d 100644 --- a/src/styles/idea.css +++ b/src/styles/idea.css @@ -5,9 +5,6 @@ Intellij Idea-like styling (c) Vasily Polovnyov */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; color: #000; background: #fff; } diff --git a/src/styles/ir-black.css b/src/styles/ir-black.css index bd4c755ed8..b70839ba47 100644 --- a/src/styles/ir-black.css +++ b/src/styles/ir-black.css @@ -3,9 +3,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #000; color: #f8f8f8; } diff --git a/src/styles/isbl-editor-dark.css b/src/styles/isbl-editor-dark.css index 2f1d95dd50..0d52ef6967 100644 --- a/src/styles/isbl-editor-dark.css +++ b/src/styles/isbl-editor-dark.css @@ -5,9 +5,6 @@ ISBL Editor style dark color scheme (c) Dmitriy Tarasov */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #404040; color: #f0f0f0; } diff --git a/src/styles/isbl-editor-light.css b/src/styles/isbl-editor-light.css index 5dee9ca037..8ad8661d0a 100644 --- a/src/styles/isbl-editor-light.css +++ b/src/styles/isbl-editor-light.css @@ -5,9 +5,6 @@ ISBL Editor style light color schemec (c) Dmitriy Tarasov */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: white; color: black; } diff --git a/src/styles/kimbie.dark.css b/src/styles/kimbie.dark.css index d139cb5d0c..866fdac8fe 100644 --- a/src/styles/kimbie.dark.css +++ b/src/styles/kimbie.dark.css @@ -5,6 +5,11 @@ URL: https://github.com/idleberg/Kimbie-highlight.js */ +.hljs { + background: #221a0f; + color: #d3af86; +} + /* Kimbie Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #98676a; } -.hljs { - display: block; - overflow-x: auto; - background: #221a0f; - color: #d3af86; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/kimbie.light.css b/src/styles/kimbie.light.css index 04ff6ed3a2..f865a538e3 100644 --- a/src/styles/kimbie.light.css +++ b/src/styles/kimbie.light.css @@ -5,6 +5,11 @@ URL: https://github.com/idleberg/Kimbie-highlight.js */ +.hljs { + background: #fbebd4; + color: #84613d; +} + /* Kimbie Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #98676a; } -.hljs { - display: block; - overflow-x: auto; - background: #fbebd4; - color: #84613d; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/lightfair.css b/src/styles/lightfair.css index 7d645d60f9..5a5103ec55 100644 --- a/src/styles/lightfair.css +++ b/src/styles/lightfair.css @@ -5,9 +5,7 @@ Lightfair style (c) Tristian Kelly */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #444 background: #fff; } @@ -19,9 +17,8 @@ Lightfair style (c) Tristian Kelly color:#778899; } -.hljs, .hljs-subst { - color: #444 + /* default */ } .hljs-comment { diff --git a/src/styles/lioshi.css b/src/styles/lioshi.css index 594ac21556..f1df5043d4 100644 --- a/src/styles/lioshi.css +++ b/src/styles/lioshi.css @@ -1,6 +1,11 @@ /* lioshi Theme */ /* Original theme - https://github.com/lioshi/vscode-lioshi-theme */ +.hljs { + background: #303030; + color: #c5c8c6; +} + /* Comment */ .hljs-comment { color: #8d8d8d; @@ -67,14 +72,6 @@ color: #dbc4d9; } -.hljs { - display: block; - overflow-x: auto; - background: #303030; - color: #c5c8c6; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/magula.css b/src/styles/magula.css index b8003bf422..a891a6f702 100644 --- a/src/styles/magula.css +++ b/src/styles/magula.css @@ -8,9 +8,6 @@ Music: Aphex Twin / Xtal */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background-color: #f4f4f4; color: black; } diff --git a/src/styles/mono-blue.css b/src/styles/mono-blue.css index 24a35a3d8c..6a0ab02308 100644 --- a/src/styles/mono-blue.css +++ b/src/styles/mono-blue.css @@ -2,9 +2,6 @@ Five-color theme from a single blue hue. */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #eaeef3; color: #00193a; } diff --git a/src/styles/monokai-sublime.css b/src/styles/monokai-sublime.css index 2864170daf..5039177632 100644 --- a/src/styles/monokai-sublime.css +++ b/src/styles/monokai-sublime.css @@ -5,13 +5,10 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #23241f; + color: #f8f8f2; } -.hljs, .hljs-tag, .hljs-subst { color: #f8f8f2; diff --git a/src/styles/monokai.css b/src/styles/monokai.css index af24834a99..cbd44e9cc8 100644 --- a/src/styles/monokai.css +++ b/src/styles/monokai.css @@ -3,9 +3,6 @@ Monokai style - ported by Luigi Maselli - http://grigio.org */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #272822; color: #ddd; } diff --git a/src/styles/night-owl.css b/src/styles/night-owl.css index 45f45cd298..ec55032a6c 100644 --- a/src/styles/night-owl.css +++ b/src/styles/night-owl.css @@ -2,8 +2,8 @@ Night Owl for highlight.js (c) Carl Baxter -An adaptation of Sarah Drasner's Night Owl VS Code Theme -https://github.com/sdras/night-owl-vscode-theme +An adaptation of Sarah Drasner's Night Owl VS Code Theme +https://github.com/sdras/night-owl-vscode-theme Copyright (c) 2018 Sarah Drasner @@ -28,9 +28,6 @@ SOFTWARE. */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #011627; color: #d6deeb; } diff --git a/src/styles/nnfx-dark.css b/src/styles/nnfx-dark.css index 0751ee5d99..efd329ffce 100644 --- a/src/styles/nnfx-dark.css +++ b/src/styles/nnfx-dark.css @@ -7,9 +7,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #333; color: #fff; } diff --git a/src/styles/nnfx.css b/src/styles/nnfx.css index e7beaa518a..0f3cde5cfe 100644 --- a/src/styles/nnfx.css +++ b/src/styles/nnfx.css @@ -7,9 +7,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #fff; color: #000; } diff --git a/src/styles/nord.css b/src/styles/nord.css index 424038443a..5c2420b932 100644 --- a/src/styles/nord.css +++ b/src/styles/nord.css @@ -11,9 +11,6 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #2E3440; } diff --git a/src/styles/obsidian.css b/src/styles/obsidian.css index 356630fa23..924f5049d8 100644 --- a/src/styles/obsidian.css +++ b/src/styles/obsidian.css @@ -4,9 +4,7 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #e0e2e4; background: #282b2e; } @@ -21,10 +19,6 @@ color: #ffcd22; } -.hljs { - color: #e0e2e4; -} - .hljs-attribute { color: #668bb0; } diff --git a/src/styles/ocean.css b/src/styles/ocean.css index 5901581b40..fabe751b8f 100644 --- a/src/styles/ocean.css +++ b/src/styles/ocean.css @@ -2,6 +2,11 @@ /* https://github.com/gavsiu */ /* Original theme - https://github.com/chriskempson/base16 */ +.hljs { + background: #2b303b; + color: #c0c5ce; +} + /* Ocean Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #b48ead; } -.hljs { - display: block; - overflow-x: auto; - background: #2b303b; - color: #c0c5ce; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/paraiso-dark.css b/src/styles/paraiso-dark.css index e7292401c6..c3af150a43 100644 --- a/src/styles/paraiso-dark.css +++ b/src/styles/paraiso-dark.css @@ -4,6 +4,11 @@ Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ +.hljs { + background: #2f1e2e; + color: #a39e9b; +} + /* Paraíso Comment */ .hljs-comment, .hljs-quote { @@ -55,14 +60,6 @@ color: #815ba4; } -.hljs { - display: block; - overflow-x: auto; - background: #2f1e2e; - color: #a39e9b; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/paraiso-light.css b/src/styles/paraiso-light.css index 944857cd8d..f349ab628f 100644 --- a/src/styles/paraiso-light.css +++ b/src/styles/paraiso-light.css @@ -4,6 +4,11 @@ Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ +.hljs { + background: #e7e9db; + color: #4f424c; +} + /* Paraíso Comment */ .hljs-comment, .hljs-quote { @@ -55,14 +60,6 @@ color: #815ba4; } -.hljs { - display: block; - overflow-x: auto; - background: #e7e9db; - color: #4f424c; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/pojoaque.css b/src/styles/pojoaque.css index 2e07847b2b..8b6e742bf7 100644 --- a/src/styles/pojoaque.css +++ b/src/styles/pojoaque.css @@ -7,9 +7,6 @@ Based on Solarized Style from http://ethanschoonover.com/solarized */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; color: #dccf8f; background: url(./pojoaque.jpg) repeat scroll left top #181914; } diff --git a/src/styles/purebasic.css b/src/styles/purebasic.css index 20a5230bcc..963e4e6d1b 100644 --- a/src/styles/purebasic.css +++ b/src/styles/purebasic.css @@ -22,13 +22,7 @@ NOTE_2: Color names provided in comments were derived using "Name that Color" on */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #FFFFDF; /* Half and Half (approx.) */ -/* --- Uncomment to add PureBASIC native IDE styled font! - font-family: Consolas; -*/ } .hljs, /* --- used for PureBASIC base color --- */ diff --git a/src/styles/qtcreator_dark.css b/src/styles/qtcreator_dark.css index 7aa56a3655..358ed69afc 100644 --- a/src/styles/qtcreator_dark.css +++ b/src/styles/qtcreator_dark.css @@ -6,13 +6,10 @@ Qt Creator dark color scheme .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #aaaaaa; background: #000000; } -.hljs, .hljs-subst, .hljs-tag, .hljs-title { diff --git a/src/styles/qtcreator_light.css b/src/styles/qtcreator_light.css index 1efa2c660f..6904d0dace 100644 --- a/src/styles/qtcreator_light.css +++ b/src/styles/qtcreator_light.css @@ -1,18 +1,13 @@ /* - Qt Creator light color scheme - */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #000000; background: #ffffff; } -.hljs, .hljs-subst, .hljs-tag, .hljs-title { diff --git a/src/styles/railscasts.css b/src/styles/railscasts.css index 008cdc5bf1..baafcb5348 100644 --- a/src/styles/railscasts.css +++ b/src/styles/railscasts.css @@ -5,9 +5,6 @@ Railscasts-like style (c) Visoft, Inc. (Damien White) */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #232323; color: #e6e1dc; } diff --git a/src/styles/rainbow.css b/src/styles/rainbow.css index 905eb8ef18..d39ca1832f 100644 --- a/src/styles/rainbow.css +++ b/src/styles/rainbow.css @@ -5,9 +5,6 @@ Style with support for rainbow parens */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #474949; color: #d1d9e1; } diff --git a/src/styles/routeros.css b/src/styles/routeros.css index ebe23990da..54b2a86946 100644 --- a/src/styles/routeros.css +++ b/src/styles/routeros.css @@ -5,15 +5,12 @@ */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #444; background: #F0F0F0; } /* Base color: saturation 0; */ -.hljs, .hljs-subst { color: #444; } @@ -32,7 +29,7 @@ .hljs-attribute { color: #0E9A00; -} +} .hljs-function { color: #99069A; diff --git a/src/styles/school-book.css b/src/styles/school-book.css index 02cb8085f0..19360ba92d 100644 --- a/src/styles/school-book.css +++ b/src/styles/school-book.css @@ -5,9 +5,7 @@ School Book style from goldblog.com.ua (c) Zaripov Yura */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; + color: #3e5915; background:#f6f5b2; } @@ -18,7 +16,6 @@ School Book style from goldblog.com.ua (c) Zaripov Yura font-weight:bold; } -.hljs, .hljs-subst { color: #3e5915; } diff --git a/src/styles/shades-of-purple.css b/src/styles/shades-of-purple.css index 9759cdd2b8..388618f755 100644 --- a/src/styles/shades-of-purple.css +++ b/src/styles/shades-of-purple.css @@ -7,15 +7,15 @@ */ .hljs { - display: block; - overflow-x: auto; - /* Custom font is optional */ - /* font-family: 'Operator Mono', 'Fira Code', 'Menlo', 'Monaco', 'Courier New', 'monospace'; */ - padding: 0.5em; background: #2d2b57; + color: #e3dfff; font-weight: normal; } +.hljs-subst { + color: #e3dfff; +} + .hljs-title { color: #fad000; font-weight: normal; @@ -44,11 +44,6 @@ color: #fb9e00; } -.hljs, -.hljs-subst { - color: #e3dfff; -} - .hljs-string, .hljs-attribute, .hljs-symbol, diff --git a/src/styles/solarized-dark.css b/src/styles/solarized-dark.css index b4c0da1f78..dcc33ebd7e 100644 --- a/src/styles/solarized-dark.css +++ b/src/styles/solarized-dark.css @@ -5,9 +5,6 @@ Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #000; color: #f8f8f8; } diff --git a/src/styles/tomorrow-night-blue.css b/src/styles/tomorrow-night-blue.css index 78e59cc8cb..5712b98b45 100644 --- a/src/styles/tomorrow-night-blue.css +++ b/src/styles/tomorrow-night-blue.css @@ -59,11 +59,8 @@ } .hljs { - display: block; - overflow-x: auto; background: #002451; color: white; - padding: 0.5em; } .hljs-emphasis { diff --git a/src/styles/tomorrow-night-bright.css b/src/styles/tomorrow-night-bright.css index e05af8ae24..f63d1c9f50 100644 --- a/src/styles/tomorrow-night-bright.css +++ b/src/styles/tomorrow-night-bright.css @@ -58,11 +58,8 @@ } .hljs { - display: block; - overflow-x: auto; background: black; color: #eaeaea; - padding: 0.5em; } .hljs-emphasis { diff --git a/src/styles/tomorrow-night-eighties.css b/src/styles/tomorrow-night-eighties.css index 08fd51c742..d666acbd9f 100644 --- a/src/styles/tomorrow-night-eighties.css +++ b/src/styles/tomorrow-night-eighties.css @@ -2,6 +2,11 @@ /* Original theme - https://github.com/chriskempson/tomorrow-theme */ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +.hljs { + background: #2d2d2d; + color: #cccccc; +} + /* Tomorrow Comment */ .hljs-comment, .hljs-quote { @@ -57,14 +62,6 @@ color: #cc99cc; } -.hljs { - display: block; - overflow-x: auto; - background: #2d2d2d; - color: #cccccc; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/tomorrow-night.css b/src/styles/tomorrow-night.css index ddd270a4e7..53eb2d5cc5 100644 --- a/src/styles/tomorrow-night.css +++ b/src/styles/tomorrow-night.css @@ -3,6 +3,11 @@ /* Original theme - https://github.com/chriskempson/tomorrow-theme */ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +.hljs { + background: #1d1f21; + color: #c5c8c6; +} + /* Tomorrow Comment */ .hljs-comment, .hljs-quote { @@ -58,14 +63,6 @@ color: #b294bb; } -.hljs { - display: block; - overflow-x: auto; - background: #1d1f21; - color: #c5c8c6; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/tomorrow.css b/src/styles/tomorrow.css index 026a62fe3b..e604fb80d7 100644 --- a/src/styles/tomorrow.css +++ b/src/styles/tomorrow.css @@ -1,5 +1,10 @@ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +.hljs { + background: white; + color: #4d4d4c; +} + /* Tomorrow Comment */ .hljs-comment, .hljs-quote { @@ -55,14 +60,6 @@ color: #8959a8; } -.hljs { - display: block; - overflow-x: auto; - background: white; - color: #4d4d4c; - padding: 0.5em; -} - .hljs-emphasis { font-style: italic; } diff --git a/src/styles/vs.css b/src/styles/vs.css index c5d07d3115..a1ed6da859 100644 --- a/src/styles/vs.css +++ b/src/styles/vs.css @@ -4,9 +4,6 @@ Visual Studio-like style based on original C# coloring by Jason Diamond */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #fff; color: black; } diff --git a/src/styles/xt256.css b/src/styles/xt256.css index 3e35ad2d5c..be5eea634d 100644 --- a/src/styles/xt256.css +++ b/src/styles/xt256.css @@ -7,11 +7,8 @@ */ .hljs { - display: block; - overflow-x: auto; color: #eaeaea; background: #000; - padding: 0.5em; } .hljs-subst { diff --git a/src/styles/zenburn.css b/src/styles/zenburn.css index 07be502016..9f32e58eb2 100644 --- a/src/styles/zenburn.css +++ b/src/styles/zenburn.css @@ -6,9 +6,6 @@ based on dark.css by Ivan Sagalaev */ .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; background: #3f3f3f; color: #dcdcdc; } diff --git a/tools/build_config.js b/tools/build_config.js index 9052aaf92e..b522e54a49 100644 --- a/tools/build_config.js +++ b/tools/build_config.js @@ -5,7 +5,9 @@ const { nodeResolve } = require('@rollup/plugin-node-resolve'); module.exports = { build_dir: "build", copyrightYears: `2006-${new Date().getFullYear()}`, - clean_css: {}, + clean_css: { + level: 2 + }, rollup: { node: { output: { format: "cjs", strict: false, exports: "auto" }, diff --git a/tools/lib/makestuff.js b/tools/lib/makestuff.js index 1562ea8798..38d15a0582 100644 --- a/tools/lib/makestuff.js +++ b/tools/lib/makestuff.js @@ -14,8 +14,17 @@ function install(file, dest = file) { fs.copyFileSync(file, `${process.env.BUILD_DIR}/${dest}`); } +const DEFAULT_CSS = ` +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; +} +`.trim(); + function installCleanCSS(file, dest) { - const content = fs.readFileSync(file, { encoding: "utf8" }); + const theme = fs.readFileSync(file, { encoding: "utf8" }); + const content = DEFAULT_CSS + "\n" + theme; const out = new CleanCSS(config.clean_css).minify(content).styles; fs.writeFileSync(`${process.env.BUILD_DIR}/${dest}`, out); } From c10a0b91605653f4705e85b406f39d03091a02c7 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 07:07:18 -0400 Subject: [PATCH 13/25] (chore) older API defers to highlightAll() now --- VERSION_11_UPGRADE.md | 5 +++++ docs/api.rst | 5 +++-- src/highlight.js | 19 ++++--------------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index d6ac2853c5..da70df2724 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -3,6 +3,11 @@ - remove apache, http, nginx, properties, coffeescript from :common #2848 +### Behavior changes + +- `initHighlighting` and `initHighlightingOnLoad` call `highlightAll` +- Calling `highlightAll` over and over is not guarded against + ### Grammar's removed or renamed - remove the old htmlbars stub, use handlebars diff --git a/docs/api.rst b/docs/api.rst index 4e6638faab..1f58be722e 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -72,11 +72,12 @@ Accepts an object representing options with the values to updated. Other options :: hljs.configure({ - tabReplace: ' ', // 4 spaces + noHighlightRe: /^do-not-highlightme$/i, + languageDetectRe: /\bgrammar-([\w-]+)\b/i, // for `grammar-swift` style CSS naming classPrefix: '' // don't append class prefix // … other options aren't changed }); - hljs.initHighlighting(); + hljs.highlightAll(); ``highlightAll()`` diff --git a/src/highlight.js b/src/highlight.js index b9c6e4ea6c..1fe2cc509f 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -684,27 +684,16 @@ const HLJS = function(hljs) { options = inherit(options, userOptions); } - /** - * Highlights to all
 blocks on a page
-   *
-   * @type {Function & {called?: boolean}}
-   */
   // TODO: remove v12, deprecated
   const initHighlighting = () => {
-    if (initHighlighting.called) return;
-    initHighlighting.called = true;
-
-    logger.deprecated("10.6.0", "initHighlighting() is deprecated.  Use highlightAll() instead.");
-
-    const blocks = document.querySelectorAll('pre code');
-    blocks.forEach(highlightElement);
+    highlightAll();
+    logger.deprecated("10.6.0", "initHighlighting() deprecated.  Use highlightAll() now.");
   };
 
-  // Higlights all when DOMContentLoaded fires
   // TODO: remove v12, deprecated
   function initHighlightingOnLoad() {
-    logger.deprecated("10.6.0", "initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.");
-    wantsHighlight = true;
+    highlightAll();
+    logger.deprecated("10.6.0", "initHighlightingOnLoad() deprecated.  Use highlightAll() now.");
   }
 
   let wantsHighlight = false;

From 07b428fee5eb599dc70b49676a41b4548b4dabd1 Mon Sep 17 00:00:00 2001
From: Josh Goebel 
Date: Wed, 17 Mar 2021 07:30:36 -0400
Subject: [PATCH 14/25] (chore) remove HTML auto-merging

Related #2889.
---
 VERSION_11_UPGRADE.md                 |   5 +-
 src/highlight.js                      |   3 -
 src/plugins/merge_html.js             | 156 --------------------------
 test/fixtures/expect/brInPre.txt      |   1 -
 test/fixtures/expect/custommarkup.txt |   3 -
 test/fixtures/index.html              |  14 ---
 test/special/customMarkup.js          |  26 -----
 test/special/index.js                 |   1 -
 8 files changed, 4 insertions(+), 205 deletions(-)
 delete mode 100644 src/plugins/merge_html.js
 delete mode 100644 test/fixtures/expect/brInPre.txt
 delete mode 100644 test/fixtures/expect/custommarkup.txt
 delete mode 100644 test/special/customMarkup.js

diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md
index da70df2724..f97d20a454 100644
--- a/VERSION_11_UPGRADE.md
+++ b/VERSION_11_UPGRADE.md
@@ -2,6 +2,10 @@
 
 -  remove apache, http, nginx, properties, coffeescript from :common #2848
 
+### Feature Removal
+
+- HTML merging is now no longer included in core.  You'll want to use a plugin instead. https://github.com/highlightjs/highlight.js/issues/2889
+- fixMarkup is gone now, provide your own replacement #2534
 
 ### Behavior changes
 
@@ -26,7 +30,6 @@
 ## API's changed
 
 - rename second_best to secondBest (highlightAuto)
-- fixMarkup is gone now, provide your own replacement #2534
 - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead
 - `CSS_NUMBER_MODE` has now been moved into the internal `css-shared` library
 
diff --git a/src/highlight.js b/src/highlight.js
index 1fe2cc509f..a5b0cea49f 100644
--- a/src/highlight.js
+++ b/src/highlight.js
@@ -13,7 +13,6 @@ import * as MODES from './lib/modes.js';
 import { compileLanguage } from './lib/mode_compiler.js';
 import * as packageJSON from '../package.json';
 import { BuildVuePlugin } from "./plugins/vue.js";
-import { mergeHTMLPlugin } from "./plugins/merge_html.js";
 import * as logger from "./lib/logger.js";
 
 const escape = utils.escapeHTML;
@@ -918,8 +917,6 @@ const HLJS = function(hljs) {
   // merge all the modes/regexs into our main object
   Object.assign(hljs, MODES);
 
-  // built-in plugins, likely to be moved out of core in the future
-  hljs.addPlugin(mergeHTMLPlugin);
   return hljs;
 };
 
diff --git a/src/plugins/merge_html.js b/src/plugins/merge_html.js
deleted file mode 100644
index a081df649f..0000000000
--- a/src/plugins/merge_html.js
+++ /dev/null
@@ -1,156 +0,0 @@
-import { escapeHTML } from "../lib/utils.js";
-
-/* plugin itself */
-
-/** @type {HLJSPlugin} */
-export const mergeHTMLPlugin = {
-  "after:highlightElement": ({ el, result, text }) => {
-    const originalStream = nodeStream(el);
-    if (!originalStream.length) return;
-
-    const resultNode = document.createElement('div');
-    resultNode.innerHTML = result.value;
-    result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
-  }
-};
-
-/* Stream merging support functions */
-
-/**
- * @typedef Event
- * @property {'start'|'stop'} event
- * @property {number} offset
- * @property {Node} node
- */
-
-/**
- * @param {Node} node
- */
-function tag(node) {
-  return node.nodeName.toLowerCase();
-}
-
-/**
- * @param {Node} node
- */
-export function nodeStream(node) {
-  /** @type Event[] */
-  const result = [];
-  (function _nodeStream(node, offset) {
-    for (let child = node.firstChild; child; child = child.nextSibling) {
-      if (child.nodeType === 3) {
-        offset += child.nodeValue.length;
-      } else if (child.nodeType === 1) {
-        result.push({
-          event: 'start',
-          offset: offset,
-          node: child
-        });
-        offset = _nodeStream(child, offset);
-        // Prevent void elements from having an end tag that would actually
-        // double them in the output. There are more void elements in HTML
-        // but we list only those realistically expected in code display.
-        if (!tag(child).match(/br|hr|img|input/)) {
-          result.push({
-            event: 'stop',
-            offset: offset,
-            node: child
-          });
-        }
-      }
-    }
-    return offset;
-  })(node, 0);
-  return result;
-}
-
-/**
- * @param {any} original - the original stream
- * @param {any} highlighted - stream of the highlighted source
- * @param {string} value - the original source itself
- */
-export function mergeStreams(original, highlighted, value) {
-  let processed = 0;
-  let result = '';
-  const nodeStack = [];
-
-  function selectStream() {
-    if (!original.length || !highlighted.length) {
-      return original.length ? original : highlighted;
-    }
-    if (original[0].offset !== highlighted[0].offset) {
-      return (original[0].offset < highlighted[0].offset) ? original : highlighted;
-    }
-
-    /*
-    To avoid starting the stream just before it should stop the order is
-    ensured that original always starts first and closes last:
-
-    if (event1 == 'start' && event2 == 'start')
-      return original;
-    if (event1 == 'start' && event2 == 'stop')
-      return highlighted;
-    if (event1 == 'stop' && event2 == 'start')
-      return original;
-    if (event1 == 'stop' && event2 == 'stop')
-      return highlighted;
-
-    ... which is collapsed to:
-    */
-    return highlighted[0].event === 'start' ? original : highlighted;
-  }
-
-  /**
-   * @param {Node} node
-   */
-  function open(node) {
-    /** @param {Attr} attr */
-    function attributeString(attr) {
-      return ' ' + attr.nodeName + '="' + escapeHTML(attr.value) + '"';
-    }
-    // @ts-ignore
-    result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') + '>';
-  }
-
-  /**
-   * @param {Node} node
-   */
-  function close(node) {
-    result += '';
-  }
-
-  /**
-   * @param {Event} event
-   */
-  function render(event) {
-    (event.event === 'start' ? open : close)(event.node);
-  }
-
-  while (original.length || highlighted.length) {
-    let stream = selectStream();
-    result += escapeHTML(value.substring(processed, stream[0].offset));
-    processed = stream[0].offset;
-    if (stream === original) {
-      /*
-      On any opening or closing tag of the original markup we first close
-      the entire highlighted node stack, then render the original tag along
-      with all the following original tags at the same offset and then
-      reopen all the tags on the highlighted stack.
-      */
-      nodeStack.reverse().forEach(close);
-      do {
-        render(stream.splice(0, 1)[0]);
-        stream = selectStream();
-      } while (stream === original && stream.length && stream[0].offset === processed);
-      nodeStack.reverse().forEach(open);
-    } else {
-      if (stream[0].event === 'start') {
-        nodeStack.push(stream[0].node);
-      } else {
-        nodeStack.pop();
-      }
-      render(stream.splice(0, 1)[0]);
-    }
-  }
-  return result + escapeHTML(value.substr(processed));
-}
diff --git a/test/fixtures/expect/brInPre.txt b/test/fixtures/expect/brInPre.txt
deleted file mode 100644
index e065147ab3..0000000000
--- a/test/fixtures/expect/brInPre.txt
+++ /dev/null
@@ -1 +0,0 @@
->> '\x41\x42\x43'
'ABC'


>> '\x61\x62\x63'
'abc' diff --git a/test/fixtures/expect/custommarkup.txt b/test/fixtures/expect/custommarkup.txt deleted file mode 100644 index f0304c200c..0000000000 --- a/test/fixtures/expect/custommarkup.txt +++ /dev/null @@ -1,3 +0,0 @@ -<div id="contents"> - <p>Hello, World!Goodbye, cruel world! -</div> diff --git a/test/fixtures/index.html b/test/fixtures/index.html index 532f83db22..0ca5640bbb 100644 --- a/test/fixtures/index.html +++ b/test/fixtures/index.html @@ -31,20 +31,6 @@ -
- - -
<div id="contents">
-  <p>Hello, World!Goodbye, cruel world!
-</div>
-
- - -
>> '\x41\x42\x43'
'ABC'


>> '\x61\x62\x63'
'abc' -
- -
-
diff --git a/test/special/customMarkup.js b/test/special/customMarkup.js deleted file mode 100644 index 1e8f1db627..0000000000 --- a/test/special/customMarkup.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const utility = require('../utility'); - -describe('custom markup', () => { - before(() => { - const testHTML = document.querySelectorAll('#custom-markup .hljs'); - - this.blocks = [...testHTML].map(x => x.innerHTML); - }); - - it('should keep custom markup', () => { - const filename = utility.buildPath('fixtures', 'expect', - 'custommarkup.txt'), - actual = this.blocks[0]; - - return utility.expectedFile(filename, 'utf-8', actual); - }); - - it('should keep the same amount of void elements (
,
, ...)', () => { - const filename = utility.buildPath('fixtures', 'expect', 'brInPre.txt'), - actual = this.blocks[1]; - - return utility.expectedFile(filename, 'utf-8', actual); - }); -}); diff --git a/test/special/index.js b/test/special/index.js index c00ce60400..9fd2881c33 100644 --- a/test/special/index.js +++ b/test/special/index.js @@ -32,7 +32,6 @@ describe('special cases tests', () => { }); require('./explicitLanguage'); - require('./customMarkup'); require('./languageAlias'); require('./noHighlight'); require('./subLanguages'); From ed1a146305a2fb72b561bf88e76e59162e4bb4a7 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 07:51:20 -0400 Subject: [PATCH 15/25] (chore) top, illegalBy, and emitter are not private Related #2558. --- VERSION_11_UPGRADE.md | 1 + src/highlight.js | 45 ++++++++++++++++++++++--------------------- types/index.d.ts | 13 ++++++++----- 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index f97d20a454..05c081530a 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -32,6 +32,7 @@ - rename second_best to secondBest (highlightAuto) - highlightElement/highlightBlock result now no longer returns `re` key, use `relevance` instead - `CSS_NUMBER_MODE` has now been moved into the internal `css-shared` library +- `highlight()` result now renames some keys to mark them as private: `_top`, `_emitter`, and `_illegalBy` ### Configuration options removed/changed diff --git a/src/highlight.js b/src/highlight.js index a5b0cea49f..d522766054 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -197,7 +197,7 @@ const HLJS = function(hljs) { return; } result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]); - continuations[top.subLanguage] = /** @type {CompiledMode} */ (result.top); + continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top); } else { result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null); } @@ -209,7 +209,7 @@ const HLJS = function(hljs) { if (top.relevance > 0) { relevance += result.relevance; } - emitter.addSublanguage(result.emitter, result.language); + emitter.addSublanguage(result._emitter, result.language); } function processBuffer() { @@ -512,36 +512,37 @@ const HLJS = function(hljs) { return { // avoid possible breakage with v10 clients expecting // this to always be an integer - relevance: Math.floor(relevance), - value: result, language: languageName, + value: result, + relevance: Math.floor(relevance), illegal: false, - emitter: emitter, - top: top + _emitter: emitter, + _top: top }; } catch (err) { if (err.message && err.message.includes('Illegal')) { return { + value: escape(codeToHighlight), illegal: true, - illegalBy: { - msg: err.message, + relevance: 0, + _illegalBy: { + message: err.message, + index: index, context: codeToHighlight.slice(index - 100, index + 100), - mode: err.mode + mode: err.mode, + resultSoFar: result }, - sofar: result, - relevance: 0, - value: escape(codeToHighlight), - emitter: emitter + _emitter: emitter }; } else if (SAFE_MODE) { return { + language: languageName, + value: escape(codeToHighlight), illegal: false, relevance: 0, - value: escape(codeToHighlight), - emitter: emitter, - language: languageName, - top: top, - errorRaised: err + errorRaised: err, + _emitter: emitter, + _top: top }; } else { throw err; @@ -558,13 +559,13 @@ const HLJS = function(hljs) { */ function justTextHighlightResult(code) { const result = { - relevance: 0, - emitter: new options.__emitter(options), value: escape(code), illegal: false, - top: PLAINTEXT_LANGUAGE + relevance: 0, + _top: PLAINTEXT_LANGUAGE, + _emitter: new options.__emitter(options) }; - result.emitter.addText(code); + result._emitter.addText(code); return result; } diff --git a/types/index.d.ts b/types/index.d.ts index d4c918f777..28a19be9ba 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -72,21 +72,24 @@ interface HighlightResult { relevance : number value : string language? : string - emitter : Emitter illegal : boolean - top? : Language | CompiledMode - illegalBy? : illegalData - sofar? : string + _illegalBy? : illegalData errorRaised? : Error // * for auto-highlight secondBest? : Omit code?: string + // technically psuedo-private API + _emitter : Emitter + _top? : Language | CompiledMode + } interface AutoHighlightResult extends HighlightResult {} interface illegalData { - msg: string + message: string context: string + index: number + resultSoFar : string mode: CompiledMode } From d9b6836414cdd1c643a3f39e5aebdab696a8ef75 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 08:03:30 -0400 Subject: [PATCH 16/25] (chore) `freepascal`, `lazarus`, `lpr`, `lpm` aliases removed. - Use `delphi` instead or add your own aliases --- VERSION_11_UPGRADE.md | 2 ++ src/languages/bash.js | 2 +- src/languages/delphi.js | 6 +----- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/VERSION_11_UPGRADE.md b/VERSION_11_UPGRADE.md index 05c081530a..c418aaba78 100644 --- a/VERSION_11_UPGRADE.md +++ b/VERSION_11_UPGRADE.md @@ -26,6 +26,8 @@ ### Alias Changes - php3,4,5,6,etc... aliases removed, use php instead +- `zsh` removed, use `sh` instead +- `freepascal`, `lazarus`, `lpr`, `lpm` removed. Use `delphi` or add you own aliases back. ## API's changed diff --git a/src/languages/bash.js b/src/languages/bash.js index 9dd90dd6bd..7941603405 100644 --- a/src/languages/bash.js +++ b/src/languages/bash.js @@ -103,7 +103,7 @@ export default function(hljs) { return { name: 'Bash', - aliases: ['sh', 'zsh'], + aliases: ['sh'], keywords: { $pattern: /\b[a-z._-]+\b/, keyword: diff --git a/src/languages/delphi.js b/src/languages/delphi.js index 5f1dbfdc29..1ff672c6c6 100644 --- a/src/languages/delphi.js +++ b/src/languages/delphi.js @@ -102,11 +102,7 @@ export default function(hljs) { 'dpr', 'dfm', 'pas', - 'pascal', - 'freepascal', - 'lazarus', - 'lpr', - 'lfm' + 'pascal' ], case_insensitive: true, keywords: KEYWORDS, From 5d48c7e260c1bd909bf848704fcb570da09cff88 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 08:31:20 -0400 Subject: [PATCH 17/25] (chore) bump deps --- package-lock.json | 1527 +++++++++++++++++++-------------------------- 1 file changed, 658 insertions(+), 869 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7217d29247..eb3f0d3ead 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,9 +83,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -95,7 +95,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -103,6 +102,21 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -112,6 +126,15 @@ "node": ">= 4" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -250,15 +273,6 @@ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -300,13 +314,13 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz", - "integrity": "sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz", + "integrity": "sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.15.1", - "@typescript-eslint/scope-manager": "4.15.1", + "@typescript-eslint/experimental-utils": "4.18.0", + "@typescript-eslint/scope-manager": "4.18.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -344,15 +358,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz", - "integrity": "sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz", + "integrity": "sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, @@ -368,14 +382,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.1.tgz", - "integrity": "sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.18.0.tgz", + "integrity": "sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "debug": "^4.1.1" }, "engines": { @@ -395,13 +409,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz", - "integrity": "sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz", + "integrity": "sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1" + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -412,9 +426,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.1.tgz", - "integrity": "sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.18.0.tgz", + "integrity": "sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -425,13 +439,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz", - "integrity": "sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz", + "integrity": "sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -467,12 +481,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz", - "integrity": "sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz", + "integrity": "sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/types": "4.18.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -725,9 +739,9 @@ } }, "node_modules/binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { "node": ">=8" @@ -791,15 +805,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -871,14 +876,13 @@ } }, "node_modules/chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -889,13 +893,13 @@ "node": ">= 8.10.0" }, "optionalDependencies": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" } }, "node_modules/clean-css": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.0.1.tgz", - "integrity": "sha512-F1zAGOowUCg8yxT0O4UR+nmbMauf3YwbiUS60CPxpzJU7ulpamGzQomFrJSK4w/HqHtMmQKSHJUNue+dQQYQdg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.1.tgz", + "integrity": "sha512-GQ6HdEyJN0543mRTA/TkZ7RPoMXGWKq1shs9H86F2kLuixR0RI+xd4JfhJxWUW08FGKQXTKAKpVjKQXu5zkFNA==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -914,91 +918,35 @@ } }, "node_modules/cli-table": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.4.tgz", - "integrity": "sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/cli-table/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", + "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "colors": "1.0.3" }, "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cli-table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">= 0.2.0" } }, - "node_modules/cli-table/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "node_modules/cli-table/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.1.90" } }, "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "node_modules/color-convert": { @@ -1038,9 +986,9 @@ } }, "node_modules/commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true, "engines": { "node": ">= 10" @@ -1138,24 +1086,20 @@ } }, "node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decimal.js": { @@ -1232,9 +1176,9 @@ "dev": true }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { "node": ">=0.3.1" @@ -1296,9 +1240,9 @@ } }, "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/enquirer": { @@ -1367,6 +1311,15 @@ "node": ">= 0.4" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1377,33 +1330,44 @@ } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "optionator": "^0.8.1" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, "engines": { "node": ">=4.0" } }, "node_modules/eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1416,10 +1380,10 @@ "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -1427,7 +1391,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1923,15 +1887,6 @@ "node": ">= 6" } }, - "node_modules/fast-glob/node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -1954,9 +1909,9 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { "flat-cache": "^3.0.4" @@ -2022,9 +1977,9 @@ } }, "node_modules/flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "node_modules/forever-agent": { @@ -2057,10 +2012,11 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -2129,9 +2085,9 @@ } }, "node_modules/glob-promise": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.0.1.tgz", - "integrity": "sha512-QwMkHW0vn0hXHFQg3JWsj2HW8pJQhHeAvsaIcpn4EDP5bU757GtJP/ClLX4iKIFtzgodRiKtb+aOG/k6i2B5mw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.1.0.tgz", + "integrity": "sha512-wOdaX1+QJi3ldbjq4fXX/BbGSjhsG6eGXqMnBjQj9ubDiDLvrXbbXRj02rA0CXbMMM7J58dajiQ72va63D7pNw==", "dev": true, "dependencies": { "@types/glob": "^7.1.3" @@ -2144,12 +2100,12 @@ } }, "node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -2191,15 +2147,14 @@ } }, "node_modules/handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", "source-map": "^0.6.1", - "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" }, "bin": { @@ -2377,15 +2332,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2582,9 +2528,9 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { "argparse": "^1.0.7", @@ -2601,40 +2547,60 @@ "dev": true }, "node_modules/jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.1.tgz", + "integrity": "sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.0.5", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", "html-encoding-sniffer": "^2.0.1", "is-potential-custom-element-name": "^1.0.0", "nwsapi": "^2.2.0", - "parse5": "5.1.1", + "parse5": "6.0.1", "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "ws": "^7.4.4", "xml-name-validator": "^3.0.0" }, "engines": { "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/json-schema": { @@ -2729,9 +2695,9 @@ } }, "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "node_modules/lodash.sortby": { @@ -2826,35 +2792,35 @@ "dev": true }, "node_modules/mocha": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", - "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.4.3", - "debug": "4.2.0", - "diff": "4.0.2", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.14.0", + "js-yaml": "4.0.0", "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "nanoid": "3.1.12", + "ms": "2.1.3", + "nanoid": "3.1.20", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", - "supports-color": "7.2.0", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.2", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { @@ -2863,8 +2829,18 @@ }, "engines": { "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2883,16 +2859,37 @@ "node": ">=8" } }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/mocha/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/ms": { @@ -2902,15 +2899,15 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", - "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^10 || ^12 || >=13.7" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/natural-compare": { @@ -3102,9 +3099,9 @@ } }, "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "node_modules/path-exists": { @@ -3156,12 +3153,15 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pify": { @@ -3403,15 +3403,6 @@ "node": ">=8.10.0" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, "node_modules/refa": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/refa/-/refa-0.4.1.tgz", @@ -3522,12 +3513,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", @@ -3573,13 +3558,10 @@ } }, "node_modules/rollup": { - "version": "2.39.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", - "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", + "version": "2.41.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.4.tgz", + "integrity": "sha512-f9IHfMO8p2Y8OdisI7Oj3oKkPuaQ6cgSwYqAi0TDvP3w2p+oX1VejX/w28a1h8WTnrapzfO5d4Uqhww+gL0b0g==", "dev": true, - "dependencies": { - "fsevents": "~2.3.1" - }, "bin": { "rollup": "dist/bin/rollup" }, @@ -3590,20 +3572,6 @@ "fsevents": "~2.3.1" } }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -3652,12 +3620,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3899,38 +3861,26 @@ } }, "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/string.prototype.trimend": { @@ -4308,35 +4258,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/terser": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", @@ -4397,14 +4318,14 @@ } }, "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "dev": true, "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" }, "engines": { "node": ">=6" @@ -4483,18 +4404,21 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4527,6 +4451,15 @@ "dev": true, "optional": true }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4649,12 +4582,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -4714,46 +4641,61 @@ "dev": true }, "node_modules/workerpool": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", - "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4761,12 +4703,24 @@ "dev": true }, "node_modules/ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", "dev": true, "engines": { "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/xml-name-validator": { @@ -4782,10 +4736,13 @@ "dev": true }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "4.0.0", @@ -4794,31 +4751,30 @@ "dev": true }, "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=10" } }, "node_modules/yargs-unparser": { @@ -4853,55 +4809,6 @@ "engines": { "node": ">=10" } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } } }, "dependencies": { @@ -4945,9 +4852,9 @@ } }, "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -4957,16 +4864,30 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -5087,12 +5008,6 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true } } }, @@ -5137,13 +5052,13 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz", - "integrity": "sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz", + "integrity": "sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.15.1", - "@typescript-eslint/scope-manager": "4.15.1", + "@typescript-eslint/experimental-utils": "4.18.0", + "@typescript-eslint/scope-manager": "4.18.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -5161,55 +5076,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz", - "integrity": "sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz", + "integrity": "sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.1.tgz", - "integrity": "sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.18.0.tgz", + "integrity": "sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz", - "integrity": "sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz", + "integrity": "sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1" + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0" } }, "@typescript-eslint/types": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.1.tgz", - "integrity": "sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.18.0.tgz", + "integrity": "sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz", - "integrity": "sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz", + "integrity": "sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -5229,12 +5144,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz", - "integrity": "sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz", + "integrity": "sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/types": "4.18.0", "eslint-visitor-keys": "^2.0.0" }, "dependencies": { @@ -5431,9 +5346,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "brace-expansion": { @@ -5485,12 +5400,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -5549,14 +5458,14 @@ } }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -5565,9 +5474,9 @@ } }, "clean-css": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.0.1.tgz", - "integrity": "sha512-F1zAGOowUCg8yxT0O4UR+nmbMauf3YwbiUS60CPxpzJU7ulpamGzQomFrJSK4w/HqHtMmQKSHJUNue+dQQYQdg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.1.tgz", + "integrity": "sha512-GQ6HdEyJN0543mRTA/TkZ7RPoMXGWKq1shs9H86F2kLuixR0RI+xd4JfhJxWUW08FGKQXTKAKpVjKQXu5zkFNA==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -5580,77 +5489,31 @@ "dev": true }, "cli-table": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.4.tgz", - "integrity": "sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", + "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", "dev": true, "requires": { - "chalk": "^2.4.1", - "string-width": "^4.2.0" + "colors": "1.0.3" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } } } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -5684,9 +5547,9 @@ } }, "commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true }, "commondir": { @@ -5768,20 +5631,14 @@ } }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", @@ -5844,9 +5701,9 @@ "dev": true }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "dir-glob": { @@ -5895,9 +5752,9 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "enquirer": { @@ -5956,6 +5813,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5963,26 +5826,34 @@ "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -5995,10 +5866,10 @@ "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -6006,7 +5877,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -6386,12 +6257,6 @@ "requires": { "is-glob": "^4.0.1" } - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true } } }, @@ -6417,9 +6282,9 @@ } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -6469,9 +6334,9 @@ } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "forever-agent": { @@ -6498,9 +6363,9 @@ "dev": true }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -6555,21 +6420,21 @@ } }, "glob-promise": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.0.1.tgz", - "integrity": "sha512-QwMkHW0vn0hXHFQg3JWsj2HW8pJQhHeAvsaIcpn4EDP5bU757GtJP/ClLX4iKIFtzgodRiKtb+aOG/k6i2B5mw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.1.0.tgz", + "integrity": "sha512-wOdaX1+QJi3ldbjq4fXX/BbGSjhsG6eGXqMnBjQj9ubDiDLvrXbbXRj02rA0CXbMMM7J58dajiQ72va63D7pNw==", "dev": true, "requires": { "@types/glob": "^7.1.3" } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "globby": { @@ -6599,9 +6464,9 @@ "dev": true }, "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { "minimist": "^1.2.5", @@ -6733,12 +6598,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6895,9 +6754,9 @@ "dev": true }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -6911,37 +6770,45 @@ "dev": true }, "jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.1.tgz", + "integrity": "sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA==", "dev": true, "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.0.5", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", "html-encoding-sniffer": "^2.0.1", "is-potential-custom-element-name": "^1.0.0", "nwsapi": "^2.2.0", - "parse5": "5.1.1", + "parse5": "6.0.1", "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "ws": "^7.4.4", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", + "dev": true + } } }, "json-schema": { @@ -7021,9 +6888,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.sortby": { @@ -7097,38 +6964,44 @@ "dev": true }, "mocha": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", - "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", + "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.4.3", - "debug": "4.2.0", - "diff": "4.0.2", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.14.0", + "js-yaml": "4.0.0", "log-symbols": "4.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", - "nanoid": "3.1.12", + "ms": "2.1.3", + "nanoid": "3.1.20", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", - "supports-color": "7.2.0", + "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.0.2", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -7141,10 +7014,25 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -7159,9 +7047,9 @@ "dev": true }, "nanoid": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", - "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true }, "natural-compare": { @@ -7317,9 +7205,9 @@ } }, "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "path-exists": { @@ -7359,9 +7247,9 @@ "dev": true }, "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pify": { @@ -7547,14 +7435,6 @@ "dev": true, "requires": { "picomatch": "^2.2.1" - }, - "dependencies": { - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - } } }, "refa": { @@ -7650,12 +7530,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", @@ -7688,21 +7562,12 @@ } }, "rollup": { - "version": "2.39.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", - "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", + "version": "2.41.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.4.tgz", + "integrity": "sha512-f9IHfMO8p2Y8OdisI7Oj3oKkPuaQ6cgSwYqAi0TDvP3w2p+oX1VejX/w28a1h8WTnrapzfO5d4Uqhww+gL0b0g==", "dev": true, "requires": { "fsevents": "~2.3.1" - }, - "dependencies": { - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - } } }, "run-parallel": { @@ -7747,12 +7612,6 @@ "randombytes": "^2.1.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7955,30 +7814,21 @@ "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -8282,31 +8132,6 @@ "lodash": "^4.17.20", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } } }, "terser": { @@ -8359,14 +8184,14 @@ } }, "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "dev": true, "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" } }, "tr46": { @@ -8430,15 +8255,15 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "uglify-js": { @@ -8460,6 +8285,12 @@ } } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -8561,12 +8392,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -8616,36 +8441,45 @@ "dev": true }, "workerpool": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", - "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", "dev": true }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, @@ -8656,10 +8490,11 @@ "dev": true }, "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", - "dev": true + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", @@ -8674,9 +8509,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", "dev": true }, "yallist": { @@ -8686,71 +8521,25 @@ "dev": true }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true }, "yargs-unparser": { "version": "2.0.0", From 3fbf897483ddde2c695f80cfb3bc3d564c948ea7 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Fri, 13 Nov 2020 20:10:44 -0500 Subject: [PATCH 18/25] (chore) build a true monolith, not concat Builds the browser and CDN `highlight.js` as a single unit, as in Rollup sees the entire dependency tree and can optimize it most effectively. Previously we compiled core separately and each languages separately. The final distributable was then a concatenation of all these separate builds - meaning that often it could include repeated code from grammars pulling in the same dependencies (regex libs, etc.) The common build (minified) is now 20kb smaller which results in a 4-5kb reduction in the gzip size. --- src/stub.js | 12 +++++++++++ tools/build_browser.js | 45 +++++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 src/stub.js diff --git a/src/stub.js b/src/stub.js new file mode 100644 index 0000000000..72444311d9 --- /dev/null +++ b/src/stub.js @@ -0,0 +1,12 @@ +import HighlightJS from "./highlight.js"; +// @ts-ignore +import * as builtIns from "builtInLanguages" + +const hljs = HighlightJS; + +for (const languageName of Object.keys(builtIns)) { + hljs.registerLanguage(languageName, builtIns[languageName]); +} +// console.log(hljs.listLanguages()); + +export default hljs; diff --git a/tools/build_browser.js b/tools/build_browser.js index 3b2b59592f..ae40a03a91 100644 --- a/tools/build_browser.js +++ b/tools/build_browser.js @@ -31,7 +31,7 @@ async function buildBrowser(options) { log("Preparing languages."); await Promise.all( languages.map(async(lang) => { - await lang.compile({ terser: config.terser }); + // await lang.compile({ terser: config.terser }); process.stdout.write("."); }) ); @@ -42,12 +42,8 @@ async function buildBrowser(options) { log("-----"); log("Core :", size.core, "bytes"); if (options.minify) { log("Core (min) :", size.core_min, "bytes"); } - log("Languages :", + log("Languages (raw) :", languages.map((el) => el.data.length).reduce((acc, curr) => acc + curr, 0), "bytes"); - if (options.minify) { - log("Languages (min) :", - languages.map((el) => el.minified.length).reduce((acc, curr) => acc + curr, 0), "bytes"); - } log("highlight.js :", size.full, "bytes"); if (options.minify) { log("highlight.min.js :", size.minified, "bytes"); @@ -150,19 +146,42 @@ async function buildBrowserHighlightJS(languages, { minify }) { const outFile = `${process.env.BUILD_DIR}/highlight.js`; const minifiedFile = outFile.replace(/js$/, "min.js"); - const input = { ...config.rollup.browser_core.input, input: `src/highlight.js` }; + const built_in_langs = { + name: "dynamicLanguages", + resolveId: (source) => { + if (source == "builtInLanguages") { return "builtInLanguages"} + return null; + }, + load: (id) => { + if (id == "builtInLanguages") { + let escape = (s) => s.replace("-","_"); + let src = ""; + src += languages.map((x) => `import ${escape(x.name)} from '${x.path}'`).join("\n"); + src += `\nexport {${languages.map((x) => escape(x.name)).join(",")}}`; + return src; + } + return null; + } + } + + const plugins = [...config.rollup.browser_core.input.plugins, built_in_langs]; + + const input = { ...config.rollup.browser_core.input, input: `src/stub.js`, plugins }; const output = { ...config.rollup.browser_core.output, file: outFile }; let librarySrc = await rollupCode(input, output); - // var librarySrc = await fs.readFile("src/highlight.js", {encoding: "utf8"}); - const coreSize = librarySrc.length; + + // we don't use this, we just use it to get a size approximation for the build stats + const coreSrc = await rollupCode({ ...config.rollup.browser_core.input, input: `src/highlight.js`, plugins }, output); + const coreSize = coreSrc.length; // strip off the original top comment librarySrc = librarySrc.replace(/\/\*.*?\*\//s, ""); const fullSrc = [ header, librarySrc, - ...languages.map((lang) => lang.module)].join("\n"); + // ...languages.map((lang) => lang.module) + ].join("\n"); const tasks = []; tasks.push(fs.writeFile(outFile, fullSrc, { encoding: "utf8" })); @@ -175,13 +194,15 @@ async function buildBrowserHighlightJS(languages, { minify }) { if (minify) { const tersed = await Terser.minify(librarySrc, config.terser); + const tersedCore = await Terser.minify(coreSrc, config.terser); minifiedSrc = [ header, tersed.code, - ...languages.map((lang) => lang.minified)].join("\n"); + // ...languages.map((lang) => lang.minified) + ].join("\n"); // get approximate core minified size - core_min = [header, tersed.code].join().length; + core_min = [header, tersedCore.code].join().length; tasks.push(fs.writeFile(minifiedFile, minifiedSrc, { encoding: "utf8" })); shas["highlight.min.js"] = bundling.sha384(minifiedSrc); From b5b61968a2bfdf9f22287b3619757ff0ce31dc74 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 09:53:00 -0400 Subject: [PATCH 19/25] add size stats when building browser --- tools/build_browser.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/build_browser.js b/tools/build_browser.js index ae40a03a91..eccfe45ce6 100644 --- a/tools/build_browser.js +++ b/tools/build_browser.js @@ -12,6 +12,8 @@ const { install, installCleanCSS, mkdir, renderTemplate } = require("./lib/makes const log = (...args) => console.log(...args); const { rollupCode } = require("./lib/bundling.js"); const bundling = require('./lib/bundling.js'); +const Table = require('cli-table'); +const { result } = require('lodash'); function buildHeader(args) { return "/*\n" + @@ -20,6 +22,23 @@ function buildHeader(args) { ` Copyright (c) ${config.copyrightYears}, ${args.author.name}\n*/`; } +function detailedGrammarSizes(languages) { + if (languages.length > 180) return; + + const resultTable = new Table({ + head: ['lang','minified'], + // colWidths: [20,20,10,20,10,20], + chars: {'mid': '', 'left-mid': '', 'mid-mid': '', 'right-mid': ''}, + style: { + head: ['grey'] + } + }); + languages.map(async(lang) => { + resultTable.push([lang.name, lang.data.length]); + }); + console.log(resultTable.sort((b, a) => a[1] - b[1]).toString()); +} + async function buildBrowser(options) { let languages = await getLanguages(); // filter languages for inclusion in the highlight.js bundle @@ -37,6 +56,8 @@ async function buildBrowser(options) { ); log(""); + detailedGrammarSizes(languages); + const size = await buildBrowserHighlightJS(languages, { minify: options.minify }); log("-----"); From 2895642a83ab1b34e7bb0853c9037951e3bffc19 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 14:03:40 -0400 Subject: [PATCH 20/25] fixup: remove html auto-merging --- test/browser/plain.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/test/browser/plain.js b/test/browser/plain.js index 0416e94d3f..a3c3a324dd 100644 --- a/test/browser/plain.js +++ b/test/browser/plain.js @@ -2,16 +2,6 @@ const {newTestCase, defaultCase, buildFakeDOM } = require('./test_case') -describe('browser with html with quotes in attributes', function() { - it('should property escape all quotes', - newTestCase({ - code: "const oops = pick(employee, ['name', 'height'])\n", - language: "javascript", - expect: `const oops = pick(employee, ['name', 'height'])\n` - }).runner - ); -}) - describe('plain browser', function() { it('should return relevance key', async function() { From 2fd239f717fdbfecb740452e2df102c694ce5716 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 14:10:09 -0400 Subject: [PATCH 21/25] fixup: build monolith --- tools/build.js | 0 tools/build_browser.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 tools/build.js diff --git a/tools/build.js b/tools/build.js old mode 100644 new mode 100755 diff --git a/tools/build_browser.js b/tools/build_browser.js index eccfe45ce6..1afb51e739 100644 --- a/tools/build_browser.js +++ b/tools/build_browser.js @@ -175,7 +175,7 @@ async function buildBrowserHighlightJS(languages, { minify }) { }, load: (id) => { if (id == "builtInLanguages") { - let escape = (s) => s.replace("-","_"); + const escape = (s) => "grmr_" + s.replace("-", "_"); let src = ""; src += languages.map((x) => `import ${escape(x.name)} from '${x.path}'`).join("\n"); src += `\nexport {${languages.map((x) => escape(x.name)).join(",")}}`; From affd3a4b7d6bdb387c819ca919c59e7a37dd15e1 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 17 Mar 2021 14:18:34 -0400 Subject: [PATCH 22/25] fixup: build monolith again --- src/stub.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/stub.js b/src/stub.js index 72444311d9..ee342b5e3d 100644 --- a/src/stub.js +++ b/src/stub.js @@ -1,11 +1,12 @@ import HighlightJS from "./highlight.js"; // @ts-ignore -import * as builtIns from "builtInLanguages" +import * as builtIns from "builtInLanguages"; const hljs = HighlightJS; -for (const languageName of Object.keys(builtIns)) { - hljs.registerLanguage(languageName, builtIns[languageName]); +for (const key of Object.keys(builtIns)) { + const languageName = key.replace("grmr_", ""); + hljs.registerLanguage(languageName, builtIns[key]); } // console.log(hljs.listLanguages()); From 39f645bd771a3fecd01aa51ce0bb5c4877a50afe Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 15 Feb 2021 15:39:48 +0100 Subject: [PATCH 23/25] chore(test): refactor tests to use ESM syntax --- .eslintrc.js => .eslintrc.cjs | 0 .eslintrc.lang.js => .eslintrc.lang.cjs | 0 package.json | 7 +++- test/api/autoDetection.js | 6 +-- test/api/beginKeywords.js | 8 ++-- test/api/binaryNumber.js | 4 +- test/api/cNumber.js | 6 +-- test/api/getLanguage.js | 6 +-- test/api/highlight.cjs | 18 +++++++++ test/api/highlight.js | 5 +-- test/api/ident.js | 4 +- test/api/index.js | 32 +++++++-------- test/api/keywords.js | 4 +- test/api/number.js | 6 +-- test/api/registerAlias.js | 6 +-- test/api/starters.js | 4 +- test/api/underscoreIdent.js | 4 +- test/browser/highlight_block_callbacks.js | 6 +-- test/browser/index.js | 8 ++-- test/browser/plain.js | 4 +- test/browser/test_case.js | 14 ++++--- test/browser/worker.js | 6 +-- test/builds/browser_build_as_commonjs.js | 8 ++-- test/detect/index.js | 13 +++--- test/fixtures/nested.js | 2 +- test/index.js | 16 ++++---- test/markup/index.js | 12 +++--- test/parser/compiler-extensions.js | 2 +- test/parser/index.js | 14 +++---- test/parser/look-ahead-end-matchers.js | 5 ++- test/parser/resume-scan.js | 4 +- test/parser/reuse-endsWithParent.js | 5 ++- test/parser/should-not-destroyData.js | 5 ++- test/regex/index.js | 12 +++--- test/regex/lib/analysis.js | 2 +- test/regex/lib/util.js | 4 +- test/special/buildClassName.js | 2 +- test/special/document.js | 23 +++++++++++ test/special/endsWithParentVariants.js | 5 +-- test/special/explicitLanguage.js | 5 +-- test/special/index.js | 48 +++++------------------ test/special/languageAlias.js | 5 +-- test/special/noHighlight.js | 2 +- test/special/subLanguages.js | 5 +-- test/utility.js | 14 ++++--- tools/build_browser.js | 3 ++ tools/build_node.js | 1 + tools/package.json | 3 ++ 48 files changed, 185 insertions(+), 193 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) rename .eslintrc.lang.js => .eslintrc.lang.cjs (100%) create mode 100644 test/api/highlight.cjs create mode 100644 test/special/document.js create mode 100644 tools/package.json diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/.eslintrc.lang.js b/.eslintrc.lang.cjs similarity index 100% rename from .eslintrc.lang.js rename to .eslintrc.lang.cjs diff --git a/package.json b/package.json index 3374944902..7da0ee72d1 100644 --- a/package.json +++ b/package.json @@ -34,10 +34,15 @@ }, "main": "./lib/index.js", "types": "./types/index.d.ts", + "imports": { + "#hljs": "./build/lib/index.js", + "#tools/*": "./tools/lib/*.js" + }, + "type": "module", "scripts": { "mocha": "mocha", "lint": "eslint src/*.js src/lib/*.js src/plugins/*.js demo/*.js", - "lint-languages": "eslint --no-eslintrc -c .eslintrc.lang.js src/languages/**/*.js", + "lint-languages": "eslint --no-eslintrc -c .eslintrc.lang.cjs src/languages/**/*.js", "build_and_test": "npm run build && npm run test", "build_and_test_browser": "npm run build-browser && npm run test-browser", "build": "node ./tools/build.js -t node", diff --git a/test/api/autoDetection.js b/test/api/autoDetection.js index dc8d3d25a7..e47b9a9b95 100644 --- a/test/api/autoDetection.js +++ b/test/api/autoDetection.js @@ -1,7 +1,5 @@ -'use strict'; - -const hljs = require('../../build'); -const should = require('should'); +import hljs from '#hljs'; +import should from 'should'; describe('.autoDetection()', () => { it('should get an existing language', () => { diff --git a/test/api/beginKeywords.js b/test/api/beginKeywords.js index 53bf85b796..53162e29f3 100644 --- a/test/api/beginKeywords.js +++ b/test/api/beginKeywords.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; let grammar = function() { return { @@ -24,6 +22,10 @@ describe('beginKeywords', () => { hljs.registerLanguage("test", grammar); hljs.registerLanguage("has-followup", grammarWithFollowupRule); }); + after( () => { + hljs.unregisterLanguage("test"); + hljs.unregisterLanguage('has-followup'); + }); it("should allow subsequence matches to still succeed", () => { let content = "A.class = self"; diff --git a/test/api/binaryNumber.js b/test/api/binaryNumber.js index 107788e213..caa2bddff2 100644 --- a/test/api/binaryNumber.js +++ b/test/api/binaryNumber.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; const pattern = new RegExp(`${hljs.BINARY_NUMBER_RE}$`); describe('.BINARY_NUMBER_RE', () => { diff --git a/test/api/cNumber.js b/test/api/cNumber.js index b852287965..26591cc174 100644 --- a/test/api/cNumber.js +++ b/test/api/cNumber.js @@ -1,7 +1,5 @@ -'use strict'; - -const _ = require('lodash'); -const hljs = require('../../build'); +import hljs from '#hljs'; +import _ from 'lodash'; const pattern = new RegExp(`${hljs.C_NUMBER_RE}$`); diff --git a/test/api/getLanguage.js b/test/api/getLanguage.js index ae14ebb92e..0cd765d22c 100644 --- a/test/api/getLanguage.js +++ b/test/api/getLanguage.js @@ -1,7 +1,5 @@ -'use strict'; - -const hljs = require('../../build'); -const should = require('should'); +import hljs from '#hljs'; +import should from 'should'; describe('.getLanguage()', () => { it('should get an existing language', () => { diff --git a/test/api/highlight.cjs b/test/api/highlight.cjs new file mode 100644 index 0000000000..0dbe49b7d2 --- /dev/null +++ b/test/api/highlight.cjs @@ -0,0 +1,18 @@ +'use strict'; + +const hljs = require('#hljs'); + +describe('.highlight()', () => { + it('should works without continuation', () => { + const code = "public void moveTo(int x, int y, int z);"; + const result = hljs.highlight('java', code, false, false); + + result.value.should.equal( + 'public ' + + 'void moveTo' + + '(int x, ' + + 'int y, ' + + 'int z);' + ); + }); +}); diff --git a/test/api/highlight.js b/test/api/highlight.js index 962c36e175..9a75f734c5 100644 --- a/test/api/highlight.js +++ b/test/api/highlight.js @@ -1,7 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); -const should = require('should'); +import hljs from '#hljs'; describe('.highlight()', () => { it('should works without continuation', () => { diff --git a/test/api/ident.js b/test/api/ident.js index 89ea859335..0bece8f379 100644 --- a/test/api/ident.js +++ b/test/api/ident.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; const pattern = new RegExp(`^${hljs.IDENT_RE}$`); diff --git a/test/api/index.js b/test/api/index.js index 12a475e80b..56396ecd97 100644 --- a/test/api/index.js +++ b/test/api/index.js @@ -1,17 +1,17 @@ -'use strict'; - -describe('hljs', function() { - require('./autoDetection'); - require('./beginKeywords'); - require('./binaryNumber'); - require('./cNumber'); - require('./getLanguage'); - require('./highlight'); - require('./ident'); - require('./keywords'); - require('./number'); - require('./registerAlias'); - require('./unregisterLanguage'); - require('./starters'); - require('./underscoreIdent'); +describe('hljs', async function() { + await import('./autoDetection.js'); + await import('./beginKeywords.js'); + await import('./binaryNumber.js'); + await import('./cNumber.js'); + await import('./fixmarkup.js'); + await import('./getLanguage.js'); + await import('./highlight.js'); + await import('./highlight.cjs'); + await import('./ident.js'); + await import('./keywords.js'); + await import('./number.js'); + await import('./registerAlias.js'); + await import('./unregisterLanguage.js'); + await import('./starters.js'); + await import('./underscoreIdent.js'); }); diff --git a/test/api/keywords.js b/test/api/keywords.js index f72a212c08..46362bdf87 100644 --- a/test/api/keywords.js +++ b/test/api/keywords.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; describe('computing the relevance score of a language', () => { it('should ignore common keywords', () => { diff --git a/test/api/number.js b/test/api/number.js index 85f60fe1a0..cef7ee3313 100644 --- a/test/api/number.js +++ b/test/api/number.js @@ -1,7 +1,5 @@ -'use strict'; - -const _ = require('lodash'); -const hljs = require('../../build'); +import hljs from '#hljs'; +import _ from 'lodash'; const pattern = new RegExp(`${hljs.NUMBER_RE}$`); diff --git a/test/api/registerAlias.js b/test/api/registerAlias.js index aede3ebb7a..94d3379097 100644 --- a/test/api/registerAlias.js +++ b/test/api/registerAlias.js @@ -1,7 +1,5 @@ -'use strict'; - -const hljs = require('../../build'); -const should = require('should'); +import hljs from '#hljs'; +import should from 'should'; describe('.registerAliases()', () => { it('should get an existing language by alias', () => { diff --git a/test/api/starters.js b/test/api/starters.js index c6afcbbe63..f6b8e434bb 100644 --- a/test/api/starters.js +++ b/test/api/starters.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; const pattern = new RegExp(`^${hljs.RE_STARTERS_RE}$`); diff --git a/test/api/underscoreIdent.js b/test/api/underscoreIdent.js index 5fb03d4820..7adba59706 100644 --- a/test/api/underscoreIdent.js +++ b/test/api/underscoreIdent.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; const pattern = new RegExp(`^${hljs.UNDERSCORE_IDENT_RE}$`); diff --git a/test/browser/highlight_block_callbacks.js b/test/browser/highlight_block_callbacks.js index 165c3067a1..059e64d64f 100644 --- a/test/browser/highlight_block_callbacks.js +++ b/test/browser/highlight_block_callbacks.js @@ -1,8 +1,4 @@ -'use strict'; - -const {promisify} = require('util'); - -const {newTestCase, defaultCase, buildFakeDOM } = require('./test_case') +import {newTestCase, defaultCase, buildFakeDOM } from './test_case.js'; class ContentAdder { constructor(params) { diff --git a/test/browser/index.js b/test/browser/index.js index b429726aff..dd6cfcc3cf 100644 --- a/test/browser/index.js +++ b/test/browser/index.js @@ -1,5 +1,3 @@ -'use strict'; - -require('./plain'); -require('./worker'); -require('./highlight_block_callbacks'); +import './plain.js'; +import './worker.js'; +import './highlight_block_callbacks.js'; diff --git a/test/browser/plain.js b/test/browser/plain.js index a3c3a324dd..0b4fada580 100644 --- a/test/browser/plain.js +++ b/test/browser/plain.js @@ -1,6 +1,4 @@ -'use strict'; - -const {newTestCase, defaultCase, buildFakeDOM } = require('./test_case') +import {newTestCase, defaultCase, buildFakeDOM } from './test_case.js'; describe('plain browser', function() { diff --git a/test/browser/test_case.js b/test/browser/test_case.js index 8ff8e87f64..2867785e98 100644 --- a/test/browser/test_case.js +++ b/test/browser/test_case.js @@ -1,8 +1,10 @@ -const {promisify} = require('util'); -const { JSDOM } = require('jsdom'); -const utility = require('../utility'); -const glob = promisify(require('glob')); -const fs = require('fs'); +import {promisify} from 'util'; +import { JSDOM } from 'jsdom'; +import * as utility from '../utility.js'; +import fs from 'fs'; +import _glob from 'glob'; + +const glob = promisify(_glob); // default to the minified library if it was built, otherwise fallback to // the non-minified @@ -57,4 +59,4 @@ const defaultCase = newTestCase({ '"Hello";' }); -module.exports = { newTestCase, defaultCase, buildFakeDOM, findLibrary }; +export { newTestCase, defaultCase, buildFakeDOM, findLibrary }; diff --git a/test/browser/worker.js b/test/browser/worker.js index c1e99ca64e..98447fa3c0 100644 --- a/test/browser/worker.js +++ b/test/browser/worker.js @@ -1,8 +1,6 @@ -'use strict'; +import Worker from 'tiny-worker'; -const Worker = require('tiny-worker'); - -const { defaultCase, findLibrary } = require('./test_case') +import { defaultCase, findLibrary } from './test_case.js'; describe('web worker', function() { before(async function() { diff --git a/test/builds/browser_build_as_commonjs.js b/test/builds/browser_build_as_commonjs.js index ef5f6815d7..b3170c4b7c 100644 --- a/test/builds/browser_build_as_commonjs.js +++ b/test/builds/browser_build_as_commonjs.js @@ -1,8 +1,8 @@ -const hljs = require("../../build/highlight"); +import hljs from "../../build/highlight.js"; -let major = parseInt(majorVersion=hljs.versionString.split(".")) +const major = parseInt(hljs.versionString.split(".")); if (major != 10) { - process.exit(1) + process.exit(1); } -console.log("Pass: browser build works with Node.js just fine.") +console.log("Pass: browser build works with Node.js just fine."); diff --git a/test/detect/index.js b/test/detect/index.js index b51adb10b3..1fb91fea58 100644 --- a/test/detect/index.js +++ b/test/detect/index.js @@ -1,14 +1,11 @@ -'use strict'; +import hljs from '#hljs'; -delete require.cache[require.resolve('../../build')]; -delete require.cache[require.resolve('../../build/lib/core')]; +import { promises as fs } from 'fs'; +import path from 'path'; +import * as utility from '../utility.js'; +import { getThirdPartyPackages } from '#tools/external_language'; -const fs = require('fs').promises; -const hljs = require('../../build'); hljs.debugMode(); // tests run in debug mode so errors are raised -const path = require('path'); -const utility = require('../utility'); -const { getThirdPartyPackages } = require('../../tools/lib/external_language'); function testAutoDetection(language, { detectPath }) { const languagePath = detectPath || utility.buildPath('detect', language); diff --git a/test/fixtures/nested.js b/test/fixtures/nested.js index 3c6b59dab9..31b926d611 100644 --- a/test/fixtures/nested.js +++ b/test/fixtures/nested.js @@ -1,4 +1,4 @@ -module.exports = function(hljs) { +export default function(hljs) { var BODY = { className: 'body', endsWithParent: true }; diff --git a/test/index.js b/test/index.js index 62a78cdad6..7b94009143 100644 --- a/test/index.js +++ b/test/index.js @@ -1,26 +1,25 @@ -'use strict'; +import hljs from '#hljs'; -const hljs = require('../build'); hljs.debugMode(); // tests run in debug mode so errors are raised // Tests specific to the API exposed inside the hljs object. // Right now, that only includes tests for several common regular expressions. -require('./api'); +import './api/index.js'; // Test weird bugs we've fixed over time -require("./parser"); +import "./parser/index.js"; // Tests for auto detection of languages via `highlightAuto`. -require('./detect'); +import './detect/index.js'; // HTML markup tests for particular languages. Usually when there is an // incorrect highlighting of one language, once the bug get fixed, the // expected markup will be added into the `test/markup` folder to keep // theses highlighting errors from cropping up again. -require('./markup'); +import './markup/index.js'; // check regex for fatal issues like exponential backtracking, etc -require('./regex'); +import './regex/index.js'; // Tests meant for the browser only. Using the `test/fixtures/index.html` file // along with `jsdom` these tests check for things like: custom markup already @@ -28,4 +27,5 @@ require('./regex'); // and several other cases. Do note that the `test/fixtures/index.html` file // isn't actually used to test inside a browser but `jsdom` acts as a virtual // browser inside of node.js and runs together with all the other tests. -require('./special'); +import './special/index.js'; + diff --git a/test/markup/index.js b/test/markup/index.js index 28138ffa6b..f15d3938b0 100644 --- a/test/markup/index.js +++ b/test/markup/index.js @@ -1,14 +1,14 @@ 'use strict'; -const fs = require('fs').promises; -const glob = require('glob'); -const hljs = require('../../build'); -const path = require('path'); -const utility = require('../utility'); +import { promises as fs } from 'fs'; +import glob from 'glob';; +import hljs from '#hljs'; +import path from 'path'; +import * as utility from '../utility.js'; hljs.debugMode(); -const { getThirdPartyPackages } = require("../../tools/lib/external_language") +import { getThirdPartyPackages } from "#tools/external_language" function testLanguage(language, {testDir}) { describe(language, function() { diff --git a/test/parser/compiler-extensions.js b/test/parser/compiler-extensions.js index 90b1d0f37e..4fa60480f2 100644 --- a/test/parser/compiler-extensions.js +++ b/test/parser/compiler-extensions.js @@ -1,4 +1,4 @@ -const hljs = require('../../build'); +import hljs from '#hljs'; // not quite ready to become a plugin yet, so these hooks // have been removed and we're skipping this test for now diff --git a/test/parser/index.js b/test/parser/index.js index 5b59a5b725..7f6b592072 100644 --- a/test/parser/index.js +++ b/test/parser/index.js @@ -1,11 +1,9 @@ 'use strict'; -const should = require('should'); - -describe('hljs', function() { - require('./look-ahead-end-matchers'); - require('./resume-scan'); - require('./reuse-endsWithParent'); - require('./should-not-destroyData'); - require('./compiler-extensions'); +describe('hljs', async function() { + await import('./look-ahead-end-matchers.js'); + await import('./resume-scan.js'); + await import('./reuse-endsWithParent.js'); + await import('./should-not-destroyData.js'); + await import('./compiler-extensions.js'); }); diff --git a/test/parser/look-ahead-end-matchers.js b/test/parser/look-ahead-end-matchers.js index 241e1fd0f6..a6dfc55910 100644 --- a/test/parser/look-ahead-end-matchers.js +++ b/test/parser/look-ahead-end-matchers.js @@ -1,6 +1,9 @@ -const hljs = require('../../build'); +import hljs from '#hljs'; describe("parser specifics", function () { + after(()=>{ + hljs.unregisterLanguage('test-language'); + }); // CONTEXT: https://github.com/highlightjs/highlight.js/pull/2219 describe("a grammar with look-ahead end matchers", () => { diff --git a/test/parser/resume-scan.js b/test/parser/resume-scan.js index fb50a47f37..c761851626 100644 --- a/test/parser/resume-scan.js +++ b/test/parser/resume-scan.js @@ -1,6 +1,4 @@ -'use strict'; - -const hljs = require('../../build'); +import hljs from '#hljs'; hljs.debugMode(); // tests run in debug mode so errors are raised describe("bugs", function() { diff --git a/test/parser/reuse-endsWithParent.js b/test/parser/reuse-endsWithParent.js index 7a4d2fe9dc..5649ee2698 100644 --- a/test/parser/reuse-endsWithParent.js +++ b/test/parser/reuse-endsWithParent.js @@ -1,6 +1,9 @@ -const hljs = require('../../build'); +import hljs from '#hljs'; describe("bugs", function () { + after(()=>{ + hljs.unregisterLanguage('test-language'); + }); describe("modes containing 'endsWithParent'", () => { it("should be allowed to be reused", () => { diff --git a/test/parser/should-not-destroyData.js b/test/parser/should-not-destroyData.js index e12a571ed0..52ee49ab24 100644 --- a/test/parser/should-not-destroyData.js +++ b/test/parser/should-not-destroyData.js @@ -1,6 +1,9 @@ -const hljs = require('../../build'); +import hljs from '#hljs'; describe("parser/should not destroy data", function () { + after(()=>{ + hljs.unregisterLanguage('test-language'); + }); // CONTEXT: https://github.com/highlightjs/highlight.js/pull/2219 describe("a grammar with a mode that makes a 0 width match", () => { diff --git a/test/regex/index.js b/test/regex/index.js index 426568ba4f..5ffeead335 100644 --- a/test/regex/index.js +++ b/test/regex/index.js @@ -1,10 +1,8 @@ -'use strict'; - -const hljs = require('../../build'); -const { BFS, parseRegex, regexFor } = require('./lib/util.js'); -const { visitRegExpAST } = require('regexpp'); -const { JS, Words, NFA, CharSet } = require('refa'); -const { firstOf, underAStar, isFirstMatch, isAlwaysZeroWidth} = require('./lib/analysis.js'); +import hljs from '#hljs'; +import { visitRegExpAST } from 'regexpp'; +import { JS, Words, NFA, CharSet } from 'refa'; +import { parseRegex, regexFor } from './lib/util.js'; +import { firstOf, underAStar } from './lib/analysis.js'; hljs.debugMode(); diff --git a/test/regex/lib/analysis.js b/test/regex/lib/analysis.js index 3b14fbcb4a..274e91e528 100644 --- a/test/regex/lib/analysis.js +++ b/test/regex/lib/analysis.js @@ -84,4 +84,4 @@ function firstOf(iter) { return undefined; } -module.exports = { firstOf, underAStar, isFirstMatch, isAlwaysZeroWidth}; +export { firstOf, underAStar, isFirstMatch, isAlwaysZeroWidth}; diff --git a/test/regex/lib/util.js b/test/regex/lib/util.js index f323a37264..8c0ac5edb5 100644 --- a/test/regex/lib/util.js +++ b/test/regex/lib/util.js @@ -1,6 +1,6 @@ /* eslint-disable no-undefined */ -const { RegExpParser } = require('regexpp'); +import { RegExpParser } from 'regexpp'; /** * @typedef {import("regexpp/ast").Pattern} Pattern @@ -104,4 +104,4 @@ const parseRegex = (regex) => { return literal; }; -module.exports = { BFS, regexFor, parseRegex }; +export { BFS, regexFor, parseRegex }; diff --git a/test/special/buildClassName.js b/test/special/buildClassName.js index 304071e431..8b5d1ad525 100644 --- a/test/special/buildClassName.js +++ b/test/special/buildClassName.js @@ -1,4 +1,4 @@ -'use strict'; +import { document } from './document.js' describe('block class names', () => { before( () => { diff --git a/test/special/document.js b/test/special/document.js new file mode 100644 index 0000000000..a888a9f9b6 --- /dev/null +++ b/test/special/document.js @@ -0,0 +1,23 @@ +import { JSDOM } from 'jsdom'; +import * as utility from '../utility.js'; +import nested from '../fixtures/nested.js'; + +const filename = utility.buildPath('fixtures', 'index.html'); +const { window } = await JSDOM.fromFile(filename); + +// Allows hljs to use document +export const document = window.document; + +// Special language to test endsWithParentVariants +hljs.registerLanguage('nested', nested); + +// Setup hljs environment +hljs.configure({ tabReplace: ' ' }); +let blocks = document.querySelectorAll('pre code'); +blocks.forEach(hljs.highlightElement); + +// Setup hljs for non-`
` tests
+hljs.configure();
+
+blocks = document.querySelectorAll('.code');
+blocks.forEach(hljs.highlightElement);
diff --git a/test/special/endsWithParentVariants.js b/test/special/endsWithParentVariants.js
index db84ecc42b..62119a3c51 100644
--- a/test/special/endsWithParentVariants.js
+++ b/test/special/endsWithParentVariants.js
@@ -1,6 +1,5 @@
-'use strict';
-
-const utility = require('../utility');
+import { document } from './document.js'
+import * as utility from '../utility.js';
 
 describe('ends with parent variants', () => {
   before(() => {
diff --git a/test/special/explicitLanguage.js b/test/special/explicitLanguage.js
index cc54e6123e..c9c0ac9810 100644
--- a/test/special/explicitLanguage.js
+++ b/test/special/explicitLanguage.js
@@ -1,6 +1,5 @@
-'use strict';
-
-const utility = require('../utility');
+import { document } from './document.js'
+import * as utility from '../utility.js';
 
 describe('explicit language class', () => {
   before(() => {
diff --git a/test/special/index.js b/test/special/index.js
index 9fd2881c33..b6594f07f9 100644
--- a/test/special/index.js
+++ b/test/special/index.js
@@ -1,40 +1,10 @@
-'use strict';
-
-const hljs     = require('../../build');
-hljs.debugMode(); // tests run in debug mode so errors are raised
-
-const { JSDOM } = require('jsdom');
-const { readFile } = require('fs').promises;
-const utility  = require('../utility');
-
-describe('special cases tests', () => {
-  before(async () => {
-    const filename = utility.buildPath('fixtures', 'index.html');
-    const page = await readFile(filename, 'utf-8');
-    const { window } = await new JSDOM(page);
-
-    // Allows hljs to use document
-    global.document = window.document;
-
-    // Special language to test endsWithParentVariants
-    hljs.registerLanguage('nested', require('../fixtures/nested.js'));
-
-    // Setup hljs environment
-    hljs.configure({ tabReplace: '    ' });
-    let blocks = document.querySelectorAll('pre code');
-    blocks.forEach(hljs.highlightElement);
-
-    // Setup hljs for non-`
` tests
-    hljs.configure();
-
-    blocks = document.querySelectorAll('.code');
-    blocks.forEach(hljs.highlightElement);
-  });
-
-  require('./explicitLanguage');
-  require('./languageAlias');
-  require('./noHighlight');
-  require('./subLanguages');
-  require('./buildClassName');
-  require('./endsWithParentVariants')
+describe('special cases tests', async () => {
+  await import('./explicitLanguage.js');
+  await import('./customMarkup.js');
+  await import('./languageAlias.js');
+  await import('./noHighlight.js');
+  await import('./subLanguages.js');
+  await import('./buildClassName.js');
+  await import('./useBr.js');
+  await import('./endsWithParentVariants.js')
 });
diff --git a/test/special/languageAlias.js b/test/special/languageAlias.js
index 7f80294cc3..7570a842be 100644
--- a/test/special/languageAlias.js
+++ b/test/special/languageAlias.js
@@ -1,6 +1,5 @@
-'use strict';
-
-const utility = require('../utility');
+import { document } from './document.js'
+import * as utility from '../utility.js';
 
 describe('language alias', () => {
   before(() => {
diff --git a/test/special/noHighlight.js b/test/special/noHighlight.js
index 3907b37722..03b790f744 100644
--- a/test/special/noHighlight.js
+++ b/test/special/noHighlight.js
@@ -1,4 +1,4 @@
-'use strict';
+import { document } from './document.js'
 
 describe('no highlighting', () => {
   before(() => {
diff --git a/test/special/subLanguages.js b/test/special/subLanguages.js
index a04d128b06..271004bae5 100644
--- a/test/special/subLanguages.js
+++ b/test/special/subLanguages.js
@@ -1,6 +1,5 @@
-'use strict';
-
-const utility = require('../utility');
+import { document } from './document.js'
+import * as utility from '../utility.js';
 
 describe('sub-languages', () => {
   before(() => {
diff --git a/test/utility.js b/test/utility.js
index 60318df03f..ba72c79710 100644
--- a/test/utility.js
+++ b/test/utility.js
@@ -1,22 +1,24 @@
-'use strict';
+import { promises as fs } from "fs";
+const { readFile } = fs;
+import path from "path";
+import { fileURLToPath } from "url";
 
-const { readFile } = require('fs').promises;
-const path     = require('path');
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
 
 // Build a path relative to `test/`
-exports.buildPath = function() {
+export const buildPath = function() {
   const args  = [...arguments],
         paths = [__dirname].concat(args);
 
   return path.join.apply(this, paths);
 };
 
-exports.expectedFile = (filename, encoding, actual) => {
+export const expectedFile = (filename, encoding, actual) => {
   return readFile(filename, encoding)
     .then(expected => actual.trim().should.equal(expected.trim()));
 };
 
-exports.setupFile = (filename, encoding, that, testHTML) => {
+export const setupFile = (filename, encoding, that, testHTML) => {
   return readFile(filename, encoding)
     .then(expected => {
       that.expected = expected.trim();
diff --git a/tools/build_browser.js b/tools/build_browser.js
index 1afb51e739..bb0112418e 100644
--- a/tools/build_browser.js
+++ b/tools/build_browser.js
@@ -206,6 +206,9 @@ async function buildBrowserHighlightJS(languages, { minify }) {
 
   const tasks = [];
   tasks.push(fs.writeFile(outFile, fullSrc, { encoding: "utf8" }));
+  tasks.push(fs.writeFile(`${process.env.BUILD_DIR}/package.json`, JSON.stringify({
+    type:'commonjs'
+  }), { encoding: "utf8" }));
   const shas = {
     "highlight.js": bundling.sha384(fullSrc)
   };
diff --git a/tools/build_node.js b/tools/build_node.js
index 90b041e5d2..be39fcf835 100644
--- a/tools/build_node.js
+++ b/tools/build_node.js
@@ -42,6 +42,7 @@ async function buildNodeHighlightJS() {
 
 async function buildPackageJSON() {
   const packageJson = require("../package");
+  packageJson.type = 'commonjs';
   await fs.writeFile(`${process.env.BUILD_DIR}/package.json`, JSON.stringify(packageJson, null, 2));
 }
 
diff --git a/tools/package.json b/tools/package.json
new file mode 100644
index 0000000000..5bbefffbab
--- /dev/null
+++ b/tools/package.json
@@ -0,0 +1,3 @@
+{
+  "type": "commonjs"
+}

From 6f37b424a512b04561617d0d9fe552adec3326cc Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Thu, 18 Mar 2021 00:07:46 +0100
Subject: [PATCH 24/25] fixup! chore(test): refactor tests to use ESM syntax

---
 test/api/index.js                      | 31 ++++++++++++--------------
 test/api/unregisterLanguage.js         |  4 +---
 test/parser/index.js                   | 14 +++++-------
 test/special/buildClassName.js         |  2 +-
 test/special/document.js               |  2 ++
 test/special/endsWithParentVariants.js |  2 +-
 test/special/explicitLanguage.js       |  2 +-
 test/special/index.js                  | 16 +++++--------
 test/special/languageAlias.js          |  2 +-
 test/special/noHighlight.js            |  2 +-
 test/special/subLanguages.js           |  2 +-
 11 files changed, 34 insertions(+), 45 deletions(-)

diff --git a/test/api/index.js b/test/api/index.js
index 56396ecd97..4f38c88bf3 100644
--- a/test/api/index.js
+++ b/test/api/index.js
@@ -1,17 +1,14 @@
-describe('hljs', async function() {
-  await import('./autoDetection.js');
-  await import('./beginKeywords.js');
-  await import('./binaryNumber.js');
-  await import('./cNumber.js');
-  await import('./fixmarkup.js');
-  await import('./getLanguage.js');
-  await import('./highlight.js');
-  await import('./highlight.cjs');
-  await import('./ident.js');
-  await import('./keywords.js');
-  await import('./number.js');
-  await import('./registerAlias.js');
-  await import('./unregisterLanguage.js');
-  await import('./starters.js');
-  await import('./underscoreIdent.js');
-});
+import "./autoDetection.js";
+import "./beginKeywords.js";
+import "./binaryNumber.js";
+import "./cNumber.js";
+import "./getLanguage.js";
+import "./highlight.js";
+import "./highlight.cjs";
+import "./ident.js";
+import "./keywords.js";
+import "./number.js";
+import "./registerAlias.js";
+import "./starters.js";
+import "./underscoreIdent.js";
+import "./unregisterLanguage.js";
diff --git a/test/api/unregisterLanguage.js b/test/api/unregisterLanguage.js
index ce0ff00b99..9d6ac06311 100644
--- a/test/api/unregisterLanguage.js
+++ b/test/api/unregisterLanguage.js
@@ -1,6 +1,4 @@
-"use strict";
-
-const hljs = require("../../build");
+import hljs from '#hljs';
 
 const jQuery = function() {
   return {
diff --git a/test/parser/index.js b/test/parser/index.js
index 7f6b592072..08d59140f8 100644
--- a/test/parser/index.js
+++ b/test/parser/index.js
@@ -1,9 +1,5 @@
-'use strict';
-
-describe('hljs', async function() {
-  await import('./look-ahead-end-matchers.js');
-  await import('./resume-scan.js');
-  await import('./reuse-endsWithParent.js');
-  await import('./should-not-destroyData.js');
-  await import('./compiler-extensions.js');
-});
+import "./compiler-extensions.js";
+import "./look-ahead-end-matchers.js";
+import "./resume-scan.js";
+import "./reuse-endsWithParent.js";
+import "./should-not-destroyData.js";
diff --git a/test/special/buildClassName.js b/test/special/buildClassName.js
index 8b5d1ad525..3bff060bc3 100644
--- a/test/special/buildClassName.js
+++ b/test/special/buildClassName.js
@@ -1,6 +1,6 @@
 import { document } from './document.js'
 
-describe('block class names',  () => {
+describe('block class names',  function() {
   before( () => {
     const testHTML = document.querySelectorAll('#build-classname .hljs');
 
diff --git a/test/special/document.js b/test/special/document.js
index a888a9f9b6..3821a4af59 100644
--- a/test/special/document.js
+++ b/test/special/document.js
@@ -1,3 +1,5 @@
+import hljs from '#hljs';
+
 import { JSDOM } from 'jsdom';
 import * as utility from '../utility.js';
 import nested from '../fixtures/nested.js';
diff --git a/test/special/endsWithParentVariants.js b/test/special/endsWithParentVariants.js
index 62119a3c51..47215e1a90 100644
--- a/test/special/endsWithParentVariants.js
+++ b/test/special/endsWithParentVariants.js
@@ -1,7 +1,7 @@
 import { document } from './document.js'
 import * as utility from '../utility.js';
 
-describe('ends with parent variants', () => {
+describe('ends with parent variants', function() {
   before(() => {
     const filename = utility.buildPath('fixtures', 'expect', 'endsWithParentVariants.txt'),
           testHTML = document.querySelectorAll('#ends-with-parent-variants .hljs');
diff --git a/test/special/explicitLanguage.js b/test/special/explicitLanguage.js
index c9c0ac9810..8cdede3b53 100644
--- a/test/special/explicitLanguage.js
+++ b/test/special/explicitLanguage.js
@@ -1,7 +1,7 @@
 import { document } from './document.js'
 import * as utility from '../utility.js';
 
-describe('explicit language class', () => {
+describe('explicit language class', function() {
   before(() => {
     const filename = utility.buildPath('fixtures', 'expect', 'explicit1.txt'),
           testHTML = document.querySelectorAll('#explicit-language .hljs');
diff --git a/test/special/index.js b/test/special/index.js
index b6594f07f9..2ff50ca937 100644
--- a/test/special/index.js
+++ b/test/special/index.js
@@ -1,10 +1,6 @@
-describe('special cases tests', async () => {
-  await import('./explicitLanguage.js');
-  await import('./customMarkup.js');
-  await import('./languageAlias.js');
-  await import('./noHighlight.js');
-  await import('./subLanguages.js');
-  await import('./buildClassName.js');
-  await import('./useBr.js');
-  await import('./endsWithParentVariants.js')
-});
+import "./buildClassName.js";
+import "./endsWithParentVariants.js";
+import "./explicitLanguage.js";
+import "./languageAlias.js";
+import "./noHighlight.js";
+import "./subLanguages.js";
diff --git a/test/special/languageAlias.js b/test/special/languageAlias.js
index 7570a842be..1c7ac34bb0 100644
--- a/test/special/languageAlias.js
+++ b/test/special/languageAlias.js
@@ -1,7 +1,7 @@
 import { document } from './document.js'
 import * as utility from '../utility.js';
 
-describe('language alias', () => {
+describe('language alias', function() {
   before(() => {
     const testHTML = document.querySelectorAll('#language-alias .hljs');
 
diff --git a/test/special/noHighlight.js b/test/special/noHighlight.js
index 03b790f744..cd684f958f 100644
--- a/test/special/noHighlight.js
+++ b/test/special/noHighlight.js
@@ -1,6 +1,6 @@
 import { document } from './document.js'
 
-describe('no highlighting', () => {
+describe('no highlighting', function() {
   before(() => {
     const testHTML = document.querySelectorAll('#no-highlight pre');
 
diff --git a/test/special/subLanguages.js b/test/special/subLanguages.js
index 271004bae5..c146e22645 100644
--- a/test/special/subLanguages.js
+++ b/test/special/subLanguages.js
@@ -1,7 +1,7 @@
 import { document } from './document.js'
 import * as utility from '../utility.js';
 
-describe('sub-languages', () => {
+describe('sub-languages', function() {
   before(() => {
     this.block = document.querySelector('#sublanguages');
   });

From 2d8c9b7dae98bdf64210607cb380df200c32a12b Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Thu, 18 Mar 2021 01:36:47 +0100
Subject: [PATCH 25/25] fixup! chore(test): refactor tests to use ESM syntax

---
 test/api/highlight.cjs | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/test/api/highlight.cjs b/test/api/highlight.cjs
index 0dbe49b7d2..ea36fea933 100644
--- a/test/api/highlight.cjs
+++ b/test/api/highlight.cjs
@@ -1,10 +1,9 @@
 'use strict';
- 
-const hljs = require('#hljs');
 
 describe('.highlight()', () => {
-  it('should works without continuation', () => {
-    const code   = "public void moveTo(int x, int y, int z);";
+  it('should works without continuation', async () => {
+    const { default: hljs } = await import('#hljs');
+    const code = 'public void moveTo(int x, int y, int z);';
     const result = hljs.highlight('java', code, false, false);
 
     result.value.should.equal(