1 | hljs.registerLanguage("typescript",(()=>{"use strict"
|
2 | ;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"])
|
3 | ;function t(e){return i("(?=",e,")")}function i(...e){return e.map((e=>{
|
4 | return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return r=>{
|
5 | const c={$pattern:e,
|
6 | keyword:n.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),
|
7 | literal:a.join(" "),
|
8 | built_in:s.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")
|
9 | },o={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},l=(e,n,a)=>{
|
10 | const s=e.contains.findIndex((e=>e.label===n))
|
11 | ;if(-1===s)throw Error("can not find mode to replace");e.contains.splice(s,1,a)
|
12 | },b=(r=>{const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,
|
13 | end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
|
14 | const a=e[0].length+e.index,s=e.input[a];"<"!==s?">"===s&&(((e,{after:n})=>{
|
15 | const a="</"+e[0].slice(1);return-1!==e.input.indexOf(a,n)})(e,{after:a
|
16 | })||n.ignoreMatch()):n.ignoreMatch()}},l={$pattern:e,keyword:n.join(" "),
|
17 | literal:a.join(" "),built_in:s.join(" ")
|
18 | },b="\\.([0-9](_?[0-9])*)",d="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",g={
|
19 | className:"number",variants:[{
|
20 | begin:`(\\b(${d})((${b})|\\.)?|(${b}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
|
21 | begin:`\\b(${d})\\b((${b})\\b|\\.)?|(${b})\\b`},{
|
22 | begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
|
23 | begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
|
24 | begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
|
25 | begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",
|
26 | end:"\\}",keywords:l,contains:[]},E={begin:"html`",end:"",starts:{end:"`",
|
27 | returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},m={
|
28 | begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
|
29 | contains:[r.BACKSLASH_ESCAPE,u],subLanguage:"css"}},_={className:"string",
|
30 | begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,u]},y={className:"comment",
|
31 | variants:[r.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
|
32 | className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",
|
33 | end:"\\}",relevance:0},{className:"variable",begin:c+"(?=\\s*(-)|$)",
|
34 | endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
|
35 | }),r.C_BLOCK_COMMENT_MODE,r.C_LINE_COMMENT_MODE]
|
36 | },p=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,E,m,_,g,r.REGEXP_MODE]
|
37 | ;u.contains=p.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(p)
|
38 | });const N=[].concat(y,u.contains),f=N.concat([{begin:/\(/,end:/\)/,keywords:l,
|
39 | contains:["self"].concat(N)}]),A={className:"params",begin:/\(/,end:/\)/,
|
40 | excludeBegin:!0,excludeEnd:!0,keywords:l,contains:f};return{name:"Javascript",
|
41 | aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:f},
|
42 | illegal:/#(?![$_A-z])/,contains:[r.SHEBANG({label:"shebang",binary:"node",
|
43 | relevance:5}),{label:"use_strict",className:"meta",relevance:10,
|
44 | begin:/^\s*['"]use (strict|asm)['"]/
|
45 | },r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,E,m,_,y,g,{
|
46 | begin:i(/[{,\n]\s*/,t(i(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,c+"\\s*:"))),
|
47 | relevance:0,contains:[{className:"attr",begin:c+t("\\s*:"),relevance:0}]},{
|
48 | begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
|
49 | keywords:"return throw case",contains:[y,r.REGEXP_MODE,{className:"function",
|
50 | begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",
|
51 | returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{
|
52 | begin:r.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0
|
53 | },{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:f}]}]
|
54 | },{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{
|
55 | variants:[{begin:"<>",end:"</>"},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,
|
56 | end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,
|
57 | contains:["self"]}]}],relevance:0},{className:"function",
|
58 | beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l,
|
59 | contains:["self",r.inherit(r.TITLE_MODE,{begin:c}),A],illegal:/%/},{
|
60 | beginKeywords:"while if switch catch for"},{className:"function",
|
61 | begin:r.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
|
62 | returnBegin:!0,contains:[A,r.inherit(r.TITLE_MODE,{begin:c})]},{variants:[{
|
63 | begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class",
|
64 | beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{
|
65 | beginKeywords:"extends"},r.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,
|
66 | end:/[{;]/,excludeEnd:!0,contains:[r.inherit(r.TITLE_MODE,{begin:c}),"self",A]
|
67 | },{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set",
|
68 | contains:[r.inherit(r.TITLE_MODE,{begin:c}),{begin:/\(\)/},A]},{begin:/\$[(.]/}]
|
69 | }})(r)
|
70 | ;return Object.assign(b.keywords,c),b.exports.PARAMS_CONTAINS.push(o),b.contains=b.contains.concat([o,{
|
71 | beginKeywords:"namespace",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",
|
72 | end:/\{/,excludeEnd:!0,keywords:"interface extends"
|
73 | }]),l(b,"shebang",r.SHEBANG()),l(b,"use_strict",{className:"meta",relevance:10,
|
74 | begin:/^\s*['"]use strict['"]/
|
75 | }),b.contains.find((e=>"function"===e.className)).relevance=0,Object.assign(b,{
|
76 | name:"TypeScript",aliases:["ts"]}),b}})()); |
\ | No newline at end of file |