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"],t=["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","BigInt64Array","BigUint64Array","BigInt"],s=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s)
|
3 | ;function o(e){return l("(?=",e,")")}function l(...e){return e.map((e=>{
|
4 | return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return b=>{
|
5 | const d={$pattern:e,
|
6 | keyword:n.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]),
|
7 | literal:a,
|
8 | built_in:i.concat(["any","void","number","boolean","string","object","never","enum"]),
|
9 | "variable.language":c},g={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"
|
10 | },u=(e,n,a)=>{const t=e.contains.findIndex((e=>e.label===n))
|
11 | ;if(-1===t)throw Error("can not find mode to replace");e.contains.splice(t,1,a)
|
12 | },m=function(b){const d=e,g={begin:/<[A-Za-z0-9\\._:-]+/,
|
13 | end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
|
14 | const a=e[0].length+e.index,t=e.input[a];"<"!==t?">"===t&&(((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()}},u={$pattern:e,keyword:n,literal:a,
|
17 | built_in:i,"variable.language":c
|
18 | },m="\\.([0-9](_?[0-9])*)",E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={
|
19 | className:"number",variants:[{
|
20 | begin:`(\\b(${E})((${m})|\\.)?|(${m}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
|
21 | begin:`\\b(${E})\\b((${m})\\b|\\.)?|(${m})\\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},f={className:"subst",begin:"\\$\\{",
|
26 | end:"\\}",keywords:u,contains:[]},p={begin:"html`",end:"",starts:{end:"`",
|
27 | returnEnd:!1,contains:[b.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},_={
|
28 | begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
|
29 | contains:[b.BACKSLASH_ESCAPE,f],subLanguage:"css"}},N={className:"string",
|
30 | begin:"`",end:"`",contains:[b.BACKSLASH_ESCAPE,f]},A={className:"comment",
|
31 | variants:[b.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
|
32 | begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
|
33 | begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
|
34 | excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",
|
35 | endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
|
36 | }),b.C_BLOCK_COMMENT_MODE,b.C_LINE_COMMENT_MODE]
|
37 | },v=[b.APOS_STRING_MODE,b.QUOTE_STRING_MODE,p,_,N,y,b.REGEXP_MODE]
|
38 | ;f.contains=v.concat({begin:/\{/,end:/\}/,keywords:u,contains:["self"].concat(v)
|
39 | });const h=[].concat(A,f.contains),w=h.concat([{begin:/\(/,end:/\)/,keywords:u,
|
40 | contains:["self"].concat(h)}]),S={className:"params",begin:/\(/,end:/\)/,
|
41 | excludeBegin:!0,excludeEnd:!0,keywords:u,contains:w},O={variants:[{
|
42 | match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}},{
|
43 | match:[/extends/,/\s+/,l(d,"(",l(/\./,d),")*")],scope:{1:"keyword",
|
44 | 3:"title.class.inherited"}}]},R={relevance:0,
|
45 | match:/\b[A-Z][a-z]+([A-Z][a-z]+)*/,className:"title.class",keywords:{
|
46 | _:[...t,...s]}},I={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{
|
47 | match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},
|
48 | label:"func.def",contains:[S],illegal:/%/},x={
|
49 | match:l(/\b/,(T=[...r,"super"],l("(?!",T.join("|"),")")),d,o(/\(/)),
|
50 | className:"title.function",relevance:0};var T;const k={
|
51 | begin:l(/\./,o(l(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,
|
52 | keywords:"prototype",className:"property",relevance:0},M={
|
53 | match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},
|
54 | contains:[{begin:/\(\)/},S]
|
55 | },C="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+b.UNDERSCORE_IDENT_RE+")\\s*=>",B={
|
56 | match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,o(C)],className:{1:"keyword",
|
57 | 3:"title.function"},contains:[S]};return{name:"Javascript",
|
58 | aliases:["js","jsx","mjs","cjs"],keywords:u,exports:{PARAMS_CONTAINS:w},
|
59 | illegal:/#(?![$_A-z])/,contains:[b.SHEBANG({label:"shebang",binary:"node",
|
60 | relevance:5}),{label:"use_strict",className:"meta",relevance:10,
|
61 | begin:/^\s*['"]use (strict|asm)['"]/
|
62 | },b.APOS_STRING_MODE,b.QUOTE_STRING_MODE,p,_,N,A,y,R,{className:"attr",
|
63 | begin:d+o(":"),relevance:0},B,{
|
64 | begin:"("+b.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
|
65 | keywords:"return throw case",relevance:0,contains:[A,b.REGEXP_MODE,{
|
66 | className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{
|
67 | className:"params",variants:[{begin:b.UNDERSCORE_IDENT_RE,relevance:0},{
|
68 | className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,
|
69 | excludeEnd:!0,keywords:u,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/,
|
70 | relevance:0},{variants:[{begin:"<>",end:"</>"},{begin:g.begin,
|
71 | "on:begin":g.isTrulyOpeningTag,end:g.end}],subLanguage:"xml",contains:[{
|
72 | begin:g.begin,end:g.end,skip:!0,contains:["self"]}]}]},I,{
|
73 | beginKeywords:"while if switch catch for"},{
|
74 | begin:"\\b(?!function)"+b.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
|
75 | returnBegin:!0,label:"func.def",contains:[S,b.inherit(b.TITLE_MODE,{begin:d,
|
76 | className:"title.function"})]},{match:/\.\.\./,relevance:0},k,{match:"\\$"+d,
|
77 | relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
|
78 | contains:[S]},x,{relevance:0,match:/\b[A-Z][A-Z_]+\b/,
|
79 | className:"variable.constant"},O,M,{match:/\$[(.]/}]}}(b)
|
80 | ;return Object.assign(m.keywords,d),
|
81 | m.exports.PARAMS_CONTAINS.push(g),m.contains=m.contains.concat([g,{
|
82 | beginKeywords:"namespace",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",
|
83 | end:/\{/,excludeEnd:!0,keywords:"interface extends"
|
84 | }]),u(m,"shebang",b.SHEBANG()),u(m,"use_strict",{className:"meta",relevance:10,
|
85 | begin:/^\s*['"]use strict['"]/
|
86 | }),m.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(m,{
|
87 | name:"TypeScript",aliases:["ts","tsx"]}),m}})()); |
\ | No newline at end of file |