]> BookStack Code Mirror - bookstack/blobdiff - resources/js/code/languages.js
Removed use of HttpFetcher
[bookstack] / resources / js / code / languages.js
index 4a359162489eb12f25b5e9b453195e57f8c6f6fd..c0f9e6dd996b70bdb4e6586b55ef5edfdf3af6c6 100644 (file)
-import {StreamLanguage} from "@codemirror/language"
+import {StreamLanguage} from '@codemirror/language';
 
-import {css} from '@codemirror/legacy-modes/mode/css';
-import {c, cpp, csharp, java, kotlin, scala, dart} from '@codemirror/legacy-modes/mode/clike';
-import {diff} from '@codemirror/legacy-modes/mode/diff';
-import {fortran} from '@codemirror/legacy-modes/mode/fortran';
-import {go} from '@codemirror/legacy-modes/mode/go';
-import {haskell} from '@codemirror/legacy-modes/mode/haskell';
-import {javascript, json, typescript} from '@codemirror/legacy-modes/mode/javascript';
-import {julia} from '@codemirror/legacy-modes/mode/julia';
-import {lua} from '@codemirror/legacy-modes/mode/lua';
+import {css} from '@codemirror/lang-css';
+import {json} from '@codemirror/lang-json';
+import {javascript} from '@codemirror/lang-javascript';
+import {html} from '@codemirror/lang-html';
 import {markdown} from '@codemirror/lang-markdown';
-import {oCaml, fSharp, sml} from '@codemirror/legacy-modes/mode/mllike';
-import {nginx} from '@codemirror/legacy-modes/mode/nginx';
-import {octave} from '@codemirror/legacy-modes/mode/octave';
-import {perl} from '@codemirror/legacy-modes/mode/perl';
-import {pascal} from '@codemirror/legacy-modes/mode/pascal';
 import {php} from '@codemirror/lang-php';
-import {powerShell} from '@codemirror/legacy-modes/mode/powershell';
-import {properties} from '@codemirror/legacy-modes/mode/properties';
-import {python} from '@codemirror/legacy-modes/mode/python';
-import {ruby} from '@codemirror/legacy-modes/mode/ruby';
-import {rust} from '@codemirror/legacy-modes/mode/rust';
-import {scheme} from '@codemirror/legacy-modes/mode/scheme';
-import {shell} from '@codemirror/legacy-modes/mode/shell';
-import {smarty} from "@ssddanbrown/codemirror-lang-smarty";
-import {standardSQL, pgSQL, msSQL, mySQL, sqlite, plSQL} from '@codemirror/legacy-modes/mode/sql';
-import {stex} from '@codemirror/legacy-modes/mode/stex';
-import {swift} from "@codemirror/legacy-modes/mode/swift";
-import {toml} from '@codemirror/legacy-modes/mode/toml';
-import {twig} from "@ssddanbrown/codemirror-lang-twig";
-import {vb} from '@codemirror/legacy-modes/mode/vb';
-import {vbScript} from '@codemirror/legacy-modes/mode/vbscript';
-import {xml, html} from '@codemirror/legacy-modes/mode/xml';
-import {yaml} from '@codemirror/legacy-modes/mode/yaml';
+import {twig} from '@ssddanbrown/codemirror-lang-twig';
+import {xml} from '@codemirror/lang-xml';
 
+const legacyLoad = async mode => {
+    const modes = await window.importVersioned('legacy-modes');
+    return StreamLanguage.define(modes[mode]);
+};
 
 // Mapping of possible languages or formats from user input to their codemirror modes.
 // Value can be a mode string or a function that will receive the code content & return the mode string.
 // The function option is used in the event the exact mode could be dynamic depending on the code.
 const modeMap = {
-    bash: () => StreamLanguage.define(shell),
-    c: () => StreamLanguage.define(c),
-    css: () => StreamLanguage.define(css),
-    'c++': () => StreamLanguage.define(cpp),
-    'c#': () => StreamLanguage.define(csharp),
-    csharp: () => StreamLanguage.define(csharp),
-    dart: () => StreamLanguage.define(dart),
-    diff: () => StreamLanguage.define(diff),
-    for: () => StreamLanguage.define(fortran),
-    fortran: () => StreamLanguage.define(fortran),
-    'f#': () => StreamLanguage.define(fSharp),
-    fsharp: () => StreamLanguage.define(fSharp),
-    go: () => StreamLanguage.define(go),
-    haskell: () => StreamLanguage.define(haskell),
-    hs: () => StreamLanguage.define(haskell),
-    html: () => StreamLanguage.define(html),
-    ini: () => StreamLanguage.define(properties),
-    java: () => StreamLanguage.define(java),
-    javascript: () => StreamLanguage.define(javascript),
-    json: () => StreamLanguage.define(json),
-    js: () => StreamLanguage.define(javascript),
-    jl: () => StreamLanguage.define(julia),
-    julia: () => StreamLanguage.define(julia),
-    kotlin: () => StreamLanguage.define(kotlin),
-    latex: () => StreamLanguage.define(stex),
-    lua: () => StreamLanguage.define(lua),
-    markdown: () => markdown(),
-    matlab: () => StreamLanguage.define(octave),
-    md: () => markdown(),
-    mdown: () => markdown(),
-    ml: () => StreamLanguage.define(sml),
-    mssql: () => StreamLanguage.define(msSQL),
-    mysql: () => StreamLanguage.define(mySQL),
-    nginx: () => StreamLanguage.define(nginx),
-    octave: () => StreamLanguage.define(octave),
-    pas: () => StreamLanguage.define(pascal),
-    pascal: () => StreamLanguage.define(pascal),
-    perl: () => StreamLanguage.define(perl),
-    pgsql: () => StreamLanguage.define(pgSQL),
-    php: (code) => {
+    bash: () => legacyLoad('shell'),
+    c: () => legacyLoad('c'),
+    css: async () => css(),
+    'c++': () => legacyLoad('cpp'),
+    'c#': () => legacyLoad('csharp'),
+    clj: () => legacyLoad('clojure'),
+    clojure: () => legacyLoad('clojure'),
+    csharp: () => legacyLoad('csharp'),
+    dart: () => legacyLoad('dart'),
+    diff: () => legacyLoad('diff'),
+    for: () => legacyLoad('fortran'),
+    fortran: () => legacyLoad('fortran'),
+    'f#': () => legacyLoad('fSharp'),
+    fsharp: () => legacyLoad('fSharp'),
+    go: () => legacyLoad('go'),
+    haskell: () => legacyLoad('haskell'),
+    hs: () => legacyLoad('haskell'),
+    html: async () => html(),
+    ini: () => legacyLoad('properties'),
+    java: () => legacyLoad('java'),
+    javascript: async () => javascript(),
+    json: async () => json(),
+    js: async () => javascript(),
+    jl: () => legacyLoad('julia'),
+    julia: () => legacyLoad('julia'),
+    kotlin: () => legacyLoad('kotlin'),
+    latex: () => legacyLoad('stex'),
+    lua: () => legacyLoad('lua'),
+    markdown: async () => markdown(),
+    matlab: () => legacyLoad('octave'),
+    md: async () => markdown(),
+    mdown: async () => markdown(),
+    ml: () => legacyLoad('sml'),
+    mssql: () => legacyLoad('msSQL'),
+    mysql: () => legacyLoad('mySQL'),
+    nginx: () => legacyLoad('nginx'),
+    octave: () => legacyLoad('octave'),
+    pas: () => legacyLoad('pascal'),
+    pascal: () => legacyLoad('pascal'),
+    perl: () => legacyLoad('perl'),
+    pgsql: () => legacyLoad('pgSQL'),
+    php: async code => {
         const hasTags = code.includes('<?php');
         return php({plain: !hasTags});
     },
-    pl: () => StreamLanguage.define(perl),
-    'pl/sql': () => StreamLanguage.define(plSQL),
-    postgresql: () => StreamLanguage.define(pgSQL),
-    powershell: () => StreamLanguage.define(powerShell),
-    properties: () => StreamLanguage.define(properties),
-    ocaml: () => StreamLanguage.define(oCaml),
-    py: () => StreamLanguage.define(python),
-    python: () => StreamLanguage.define(python),
-    rb: () => StreamLanguage.define(ruby),
-    rs: () => StreamLanguage.define(rust),
-    ruby: () => StreamLanguage.define(ruby),
-    rust: () => StreamLanguage.define(rust),
-    scala: () => StreamLanguage.define(scala),
-    scheme: () => StreamLanguage.define(scheme),
-    shell: () => StreamLanguage.define(shell),
-    sh: () => StreamLanguage.define(shell),
-    smarty: () => StreamLanguage.define(smarty),
-    stext: () => StreamLanguage.define(stex),
-    swift: () => StreamLanguage.define(swift),
-    toml: () => StreamLanguage.define(toml),
-    ts: () => StreamLanguage.define(typescript),
-    twig: () => twig(),
-    typescript: () => StreamLanguage.define(typescript),
-    sql: () => StreamLanguage.define(standardSQL),
-    sqlite: () => StreamLanguage.define(sqlite),
-    vbs: () => StreamLanguage.define(vbScript),
-    vbscript: () => StreamLanguage.define(vbScript),
-    'vb.net': () => StreamLanguage.define(vb),
-    vbnet: () => StreamLanguage.define(vb),
-    xml: () => StreamLanguage.define(xml),
-    yaml: () => StreamLanguage.define(yaml),
-    yml: () => StreamLanguage.define(yaml),
+    pl: () => legacyLoad('perl'),
+    'pl/sql': () => legacyLoad('plSQL'),
+    postgresql: () => legacyLoad('pgSQL'),
+    powershell: () => legacyLoad('powerShell'),
+    properties: () => legacyLoad('properties'),
+    ocaml: () => legacyLoad('oCaml'),
+    py: () => legacyLoad('python'),
+    python: () => legacyLoad('python'),
+    rb: () => legacyLoad('ruby'),
+    rs: () => legacyLoad('rust'),
+    ruby: () => legacyLoad('ruby'),
+    rust: () => legacyLoad('rust'),
+    scala: () => legacyLoad('scala'),
+    scheme: () => legacyLoad('scheme'),
+    shell: () => legacyLoad('shell'),
+    sh: () => legacyLoad('shell'),
+    smarty: () => legacyLoad('smarty'),
+    stext: () => legacyLoad('stex'),
+    swift: () => legacyLoad('swift'),
+    toml: () => legacyLoad('toml'),
+    ts: async () => javascript({typescript: true}),
+    twig: async () => twig(),
+    typescript: async () => javascript({typescript: true}),
+    sql: () => legacyLoad('standardSQL'),
+    sqlite: () => legacyLoad('sqlite'),
+    vbs: () => legacyLoad('vbScript'),
+    vbscript: () => legacyLoad('vbScript'),
+    'vb.net': () => legacyLoad('vb'),
+    vbnet: () => legacyLoad('vb'),
+    xml: async () => xml(),
+    yaml: () => legacyLoad('yaml'),
+    yml: () => legacyLoad('yaml'),
 };
 
 /**
@@ -121,7 +102,7 @@ const modeMap = {
  * suggestion and content.
  * @param {String} langSuggestion
  * @param {String} content
- * @returns {StreamLanguage}
+ * @returns {Promise<StreamLanguage|LanguageSupport>}
  */
 export function getLanguageExtension(langSuggestion, content) {
     const suggestion = langSuggestion.trim().replace(/^\./g, '').toLowerCase();
@@ -133,4 +114,4 @@ export function getLanguageExtension(langSuggestion, content) {
     }
 
     return language(content);
-}
\ No newline at end of file
+}