@tslite/editor 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +10 -0
- package/dist/index.d.cts +773 -0
- package/dist/index.d.ts +773 -0
- package/dist/index.js +10 -0
- package/package.json +61 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';var parser=require('@tslite/parser'),checker=require('@tslite/checker'),explain=require('@tslite/explain'),core=require('@tslite/core');var S={Unnecessary:1,Deprecated:2},T=new Set(["unused-name"]);var _=e=>typeof e=="object"&&e!==null&&(e.code==="parse-error"||e.code==="lex-error"),O=e=>{let n=e?.loc;return n?.start&&n?.end?{start:n.start,end:n.end}:void 0};function j(e,n,t={}){let r;try{r=t.mode==="expression"?parser.parseExpression(e):parser.parse(e);}catch(d){if(!_(d))throw d;let f=d.position??{line:1,column:0};return {diagnostics:[{range:d.loc??{start:f,end:{line:f.line,column:f.column+1}},message:d.message,severity:"error",code:d.code??"parse-error"}],unpositioned:[],parseFailed:true}}let o=t.unused===false?void 0:t.unused===true||t.unused===void 0?{locals:true,parameters:true}:t.unused,a=checker.check(r,n,o?{unused:o}:{}),i=explain.explain(r,a),l=[],p=[];for(let d of i){let f=O(d.node);if(!f){p.push({code:d.code,message:d.message,severity:d.severity==="warning"?"warning":"error",...d.help?{help:d.help}:{}});continue}let m=d.help?.fix?.range;l.push({range:f,message:d.message,severity:d.severity==="warning"?"warning":"error",code:d.code,...d.help?{help:d.help}:{},...m&&d.help?.fix?{edit:{range:m,newText:d.help.fix.to}}:{},...T.has(d.code)?{tags:[S.Unnecessary]}:{}});}return {diagnostics:l,unpositioned:p,parseFailed:false,program:{ast:r,overlay:a.overlay}}}function k(e){let n=[`**${e.message}**`];return e.help&&(n.push(e.help.explain),e.help.suggestion&&n.push(`\u{1F4A1} ${e.help.suggestion}`),e.help.fix&&n.push(`\`\`\`ts
|
|
2
|
+
${e.help.fix.from} \u2192 ${e.help.fix.to}
|
|
3
|
+
\`\`\``),e.help.docs&&n.push(`_${e.help.docs}_`)),n.push(`\`${e.code}\``),n.join(`
|
|
4
|
+
|
|
5
|
+
`)}var K={error:8,warning:4};function U(e,n="tslite"){return e.map(t=>({startLineNumber:t.range.start.line,startColumn:t.range.start.column+1,endLineNumber:t.range.end.line,endColumn:t.range.end.column+1,message:t.help?`${t.message}
|
|
6
|
+
|
|
7
|
+
${t.help.explain}`:t.message,severity:K[t.severity],code:t.code,source:n,...t.tags?.length?{tags:[...t.tags]}:{}}))}function z(e){let n=[];for(let t of e)t.edit&&n.push({title:t.help?.suggestion??`Corrigir para \`${t.edit.newText}\``,kind:"quickfix",isPreferred:true,diagnostic:{code:t.code,message:t.message},edit:{range:{startLineNumber:t.edit.range.start.line,startColumn:t.edit.range.start.column+1,endLineNumber:t.edit.range.end.line,endColumn:t.edit.range.end.column+1},text:t.edit.newText}});return n}function F(e,n,t){let r=t-1,o=e.find(a=>{let{start:i,end:l}=a.range;return !(n<i.line||n>l.line||n===i.line&&r<i.column||n===l.line&&r>=l.column)});return o?k(o):void 0}var G={error:1,warning:2};function Y(e,n="tslite"){return e.map(t=>({range:{start:{line:t.range.start.line-1,character:t.range.start.column},end:{line:t.range.end.line-1,character:t.range.end.column}},message:t.help?`${t.message}
|
|
8
|
+
|
|
9
|
+
${t.help.explain}`:t.message,severity:G[t.severity],code:t.code,source:n,...t.tags?.length?{tags:[...t.tags]}:{}}))}function V(e){let n=[];for(let t of e)t.edit&&n.push({title:t.help?.suggestion??`Corrigir para \`${t.edit.newText}\``,kind:"quickfix",isPreferred:true,diagnostic:{code:t.code,message:t.message},edit:{range:{startLineNumber:t.edit.range.start.line-1,startColumn:t.edit.range.start.column,endLineNumber:t.edit.range.end.line-1,endColumn:t.edit.range.end.column},text:t.edit.newText}});return n}function X(e,n,t){let r=n+1,o=e.find(a=>{let{start:i,end:l}=a.range;return !(r<i.line||r>l.line||r===i.line&&t<i.column||r===l.line&&t>=l.column)});return o?k(o):void 0}var H="tslite",J=[".ts",".d.ts",".tsl"],Z=["const","if","else","return","async","await","typeof","throw","try","catch","finally","void","import","export","from","default","type","as","keyof","infer","extends","true","false","null","undefined","let","var","for","while","do","switch","case","break","continue","delete","of","in"],W=["if","else","return","await","throw","try","catch","finally","for","while","do","switch","case","break","continue","import","export","from"],q=["true","false","null","undefined"],Q=["class","new","function","this","super","with","debugger","yield","instanceof"],ee=["string","number","boolean","unknown","never","any","object","symbol","bigint"],ne={defaultToken:"",tokenPostfix:".tslite",keywords:[...Z],controlKeywords:[...W],literalKeywords:[...q],forbidden:[...Q],typeKeywords:[...ee],operators:["=",">","<","!","?","??","?.",":","==","===","!=","!==","=>","+","-","*","/","%","**","&&","||","++","--","+=","-=","*=","/=","%=","&","|","^","~","<<",">>",">>>"],symbols:/[=><!~?:&|+\-*/^%]+/,escapes:/\\(?:[abfnrtv\\"'`$]|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})/,digits:/\d+(_+\d+)*/,tokenizer:{root:[[/\b(?:class|new|function|this|super|with|debugger|yield|instanceof)\b/,"invalid"],{include:"@whitespace"},[/(\.)(\s*)([a-zA-Z_$][\w$]*)(?=\s*\()/,["delimiter","","function.member"]],[/(\.)(\s*)([a-zA-Z_$][\w$]*)/,["delimiter","","property"]],[/[a-zA-Z_$][\w$]*(?=\s*\()/,{cases:{"@controlKeywords":"keyword.control","@keywords":"keyword","@typeKeywords":"type","@default":"function"}}],[/[A-Z][\w$]*/,{cases:{"@typeKeywords":"type","@default":"type.identifier"}}],[/[a-zA-Z_$][\w$]*/,{cases:{"@controlKeywords":"keyword.control","@literalKeywords":"keyword.literal","@keywords":"keyword","@typeKeywords":"type","@default":"identifier"}}],[/[{}()[\]]/,"@brackets"],[/=>/,"operator.arrow"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/[;,.]/,"delimiter"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[bB][01]+/,"number.binary"],[/0[oO][0-7]+/,"number.octal"],[/(@digits)\.(@digits)([eE][-+]?(@digits))?/,"number.float"],[/(@digits)([eE][-+]?(@digits))?/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"@root"}]}},te={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]},{open:"`",close:"`",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],folding:{markers:{start:/^\s*\/\/\s*#?region\b/,end:/^\s*\/\/\s*#?endregion\b/}}},re=[{token:"invalid",foreground:"f14c4c",fontStyle:"underline"},{token:"string.invalid",foreground:"f14c4c"},{token:"keyword",foreground:"569cd6"},{token:"keyword.control",foreground:"c586c0"},{token:"keyword.literal",foreground:"569cd6"},{token:"type",foreground:"4ec9b0"},{token:"type.identifier",foreground:"4ec9b0"},{token:"function",foreground:"dcdcaa"},{token:"function.member",foreground:"dcdcaa"},{token:"property",foreground:"9cdcfe"},{token:"property.declaration",foreground:"9cdcfe"},{token:"identifier",foreground:"9cdcfe"},{token:"variable",foreground:"9cdcfe"},{token:"parameter",foreground:"9cdcfe"},{token:"string",foreground:"ce9178"},{token:"string.escape",foreground:"d7ba7d"},{token:"number",foreground:"b5cea8"},{token:"comment",foreground:"6a9955",fontStyle:"italic"},{token:"operator",foreground:"d4d4d4"},{token:"operator.arrow",foreground:"569cd6"},{token:"delimiter",foreground:"d4d4d4"}],oe=[{token:"invalid",foreground:"ff5555",fontStyle:"underline"},{token:"string.invalid",foreground:"ff5555"},{token:"keyword",foreground:"ff79c6"},{token:"keyword.control",foreground:"ff79c6"},{token:"keyword.literal",foreground:"bd93f9"},{token:"type",foreground:"8be9fd",fontStyle:"italic"},{token:"type.identifier",foreground:"8be9fd",fontStyle:"italic"},{token:"function",foreground:"50fa7b"},{token:"function.member",foreground:"50fa7b"},{token:"parameter",foreground:"ffb86c",fontStyle:"italic"},{token:"property.declaration",foreground:"8be9fd"},{token:"property",foreground:"f8f8f2"},{token:"variable",foreground:"f8f8f2"},{token:"identifier",foreground:"f8f8f2"},{token:"string",foreground:"f1fa8c"},{token:"string.escape",foreground:"ffb86c"},{token:"number",foreground:"bd93f9"},{token:"comment",foreground:"6272a4",fontStyle:"italic"},{token:"operator",foreground:"ff79c6"},{token:"operator.arrow",foreground:"ff79c6"},{token:"delimiter",foreground:"f8f8f2"}];var x={tokenTypes:["variable","parameter","property","function","type"],tokenModifiers:["declaration","readonly","defaultLibrary"]},ie=new Map(x.tokenTypes.map((e,n)=>[e,n])),se=new Map(x.tokenModifiers.map((e,n)=>[e,1<<n])),b=e=>!!e&&(e.t==="fn"||e.t==="overload");function de(e,n){for(let t=e;t;t=t.parent)if(Object.prototype.hasOwnProperty.call(t.vars,n))return t.parent===null;return false}var E=e=>({kinds:new Map,parent:e});function le(e,n){for(let t=e;t;t=t.parent){let r=t.kinds.get(n);if(r)return r}}var ce=e=>!!e&&!!e.loc?.start;function u(e,n,t,r=[]){ce(n)&&n.loc.start.line===n.loc.end.line&&e.out.push({range:{start:n.loc.start,end:n.loc.end},type:t,modifiers:r});}function y(e){if(!e)return [];switch(e.type){case "Identifier":return [e];case "ObjectPattern":return e.properties.flatMap(n=>n.type==="RestElement"?y(n.argument):y(n.value));case "ArrayPattern":return e.elements.flatMap(n=>n?y(n):[]);case "AssignmentPattern":return y(e.left);case "RestElement":return y(e.argument);default:return []}}function g(e,n,t){if(e)switch(e.type){case "AssignmentPattern":c(e.right,n,t),g(e.left,n,t);return;case "ObjectPattern":for(let r of e.properties)g(r.type==="RestElement"?r.argument:r.value,n,t);return;case "ArrayPattern":for(let r of e.elements)r&&g(r,n,t);return;case "RestElement":g(e.argument,n,t);return;default:return}}function w(e,n,t,r,o){for(let a of y(e))t.kinds.set(a.name,r),u(n,a,r,o);}function c(e,n,t){if(!(!e||typeof e!="object"||typeof e.type!="string"))switch(e.type){case "Identifier":{let r=e.name,o=n.program.overlay.get(e),a=[];de(o?.scope,r)&&a.push("defaultLibrary");let i=le(t,r);u(n,e,i??(b(o?.type)?"function":"variable"),a);return}case "MemberExpression":{let r=e;if(c(r.object,n,t),r.computed)c(r.property,n,t);else {let o=n.program.overlay.get(e)?.type;u(n,r.property,b(o)?"function":"property");}return}case "Property":{let r=e;if(r.computed)c(r.key,n,t);else if(r.key.type==="Identifier"&&(u(n,r.key,"property",["declaration"]),r.shorthand))return;c(r.value,n,t);return}case "VariableDeclarator":{let r=e,o=n.program.overlay.get(e)?.type;w(r.id,n,t,b(o)?"function":"variable",["declaration","readonly"]),g(r.id,n,t),c(r.init,n,t);return}case "ArrowFunctionExpression":case "FunctionExpression":case "FunctionDeclaration":{let r=e,o=E(t);for(let i of r.params??[])w(i,n,o,"parameter",["declaration"]),g(i,n,o);let a=e.id;a&&(t.kinds.set(a.name,"function"),u(n,a,"function",["declaration"])),c(r.body,n,o);return}case "BlockStatement":{let r=E(t);for(let o of e.body??[])c(o,n,r);return}case "ImportDeclaration":{for(let r of e.specifiers){let o=r.local;if(o){let a=n.program.overlay.get(o)?.type,i=b(a)?"function":"variable";t.kinds.set(o.name,i),u(n,o,i,["declaration","readonly"]);}}return}case "CatchClause":{let r=e,o=E(t);w(r.param,n,o,"parameter",["declaration"]),c(r.body,n,o);return}case "TSAsExpression":c(e.expression,n,t);return;case "TSTypeAliasDeclaration":u(n,e.id,"type",["declaration"]);return;case "JSXOpeningElement":{let r=e;N(r.name,n);for(let o of r.attributes??[])c(o,n,t);return}case "JSXClosingElement":N(e.name,n);return;case "JSXAttribute":u(n,e.name,"property"),c(e.value,n,t);return;default:{let r=core.VisitorKeys[e.type];if(!r)return;let o=e;for(let a of r){let i=o[a];if(Array.isArray(i))for(let l of i)c(l,n,t);else c(i,n,t);}return}}}function N(e,n){if(e)if(e.type==="JSXIdentifier"){let t=e.name;/^[A-Z]/.test(t)&&u(n,e,"function");}else e.type==="JSXMemberExpression"&&(N(e.object,n),u(n,e.property,"property"));}function A(e){let n={program:e,out:[]};return c(e.ast,n,E(void 0)),n.out.sort((t,r)=>t.range.start.line-r.range.start.line||t.range.start.column-r.range.start.column)}function h(e){let n=new Uint32Array(e.length*5),t=0,r=0;return e.forEach((o,a)=>{let i=o.range.start.line-1,l=o.range.start.column,p=i-t,d=p===0?l-r:l,f=0;for(let m of o.modifiers)f|=se.get(m)??0;n[a*5]=p,n[a*5+1]=d,n[a*5+2]=o.range.end.column-o.range.start.column,n[a*5+3]=ie.get(o.type)??0,n[a*5+4]=f,t=i,r=l;}),n}function ue(e){return {data:h(A(e))}}var fe=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e);function s(e,n=new WeakSet){switch(e.t){case "any":case "unknown":case "string":case "number":case "boolean":case "null":case "undefined":case "void":return e.t;case "var":return e.name;case "typeQuery":return `typeof ${e.path.join(".")}`;case "literal":return typeof e.value=="string"?JSON.stringify(e.value):String(e.value);case "array":{let t=s(e.items,n),r=pe(e.items)?`(${t})[]`:`${t}[]`;return e.readonly?`readonly ${r}`:r}case "tuple":{let r=`[${e.elements.map((o,a)=>{let i=e.flags?.[a]??"req",l=s(o,n),p=o.t==="union"?`(${l})`:l;return i==="rest"?`...${p}[]`:i==="variadic"?`...${l}`:i==="optional"?`${p}?`:l}).join(", ")}]`;return e.readonly?`readonly ${r}`:r}case "union":{if(n.has(e))return "\u2026";n.add(e);let t=e.of.length===0?"never":e.of.map(r=>s(r,n)).join(" | ");return n.delete(e),t}case "object":{if(n.has(e))return "\u2026";n.add(e);let t=Object.entries(e.props).map(([r,o])=>`${fe(r)?r:JSON.stringify(r)}${o.optional?"?":""}: ${s(o.type,n)}`);return e.index&&t.push(`[k: ${e.index.key}]: ${s(e.index.value,n)}`),n.delete(e),t.length===0?"{}":`{ ${t.join("; ")} }`}case "fn":{if(n.has(e))return "\u2026";n.add(e);let t=e.params.map(o=>{let a=o.variadic?"...":"",i=o.optional&&!o.variadic?"?":"";return `${a}${o.name}${i}: ${s(o.type,n)}`}).join(", "),r=e.guard?`${e.params[e.guard.param]?.name??`arg${e.guard.param}`} is ${s(e.guard.type,n)}`:s(e.returns,n);return n.delete(e),`(${t}) => ${r}`}case "apply":{if(n.has(e))return "\u2026";n.add(e);let t=e.args.length===0?e.name:`${e.name}<${e.args.map(r=>s(r,n)).join(", ")}>`;return n.delete(e),t}case "overload":{if(n.has(e))return "\u2026";n.add(e);let t=e.signatures.map(r=>s(r,n)).join(" & ");return n.delete(e),t}case "keyof":return `keyof ${s(e.of,n)}`;case "index":return `${s(e.obj,n)}[${s(e.key,n)}]`;case "mapped":{if(n.has(e))return "\u2026";n.add(e);let t=e.optional?"?":"",r=`{ [${e.key} in ${s(e.over,n)}]${t}: ${s(e.body,n)} }`;return n.delete(e),r}case "conditional":{if(n.has(e))return "\u2026";n.add(e);let t=`${s(e.check,n)} extends ${s(e.extends,n)} ? ${s(e.then,n)} : ${s(e.else,n)}`;return n.delete(e),t}case "intersection":return e.of.map(t=>t.t==="union"&&t.of.length>0?`(${s(t,n)})`:s(t,n)).join(" & ");case "returnType":return `ReturnType<${s(e.fn,n)}>`;case "parameters":return `Parameters<${s(e.fn,n)}>`}}function pe(e){return e.t==="union"&&e.of.length>0||e.t==="fn"}var D=(e,n)=>{let{start:t,end:r}=e;return !(n.line<t.line||n.line>r.line||n.line===t.line&&n.column<t.column||n.line===r.line&&n.column>=r.column)},$=e=>(e.end.line-e.start.line)*1e6+(e.end.column-e.start.column);function v(e,n){let t=[];return core.walk(e,{"*":r=>{let o=r.loc;o?.start&&o?.end&&D(o,n)&&t.push(r);}}),t.sort((r,o)=>$(r.loc)-$(o.loc))}function ke(e,n){return v(e,n)[0]}function be(e,n){let t=v(e.ast,n);for(let r=0;r<t.length;r++){let o=t[r],a=checker.typeAt(e.overlay,o);if(!a)continue;let i=s(a);return {text:i,display:Ee(o,t.slice(r+1),i)??i,schema:a,nodeType:o.type,range:{start:o.loc.start,end:o.loc.end}}}}var B=e=>{let n=e.id;return n?.type==="Identifier"?n.name:void 0};function Ee(e,n,t){switch(e.type){case "VariableDeclarator":{let r=B(e),o=n.find(a=>a.type==="VariableDeclaration")?.kind??"const";return r?`${o} ${r}: ${t}`:void 0}case "TSTypeAliasDeclaration":{let r=B(e);return r?`type ${r} = ${t}`:void 0}case "Identifier":{let r=e.name;return r&&n[0]?.params?.some(a=>a===e)?`(parameter) ${r}: ${t}`:void 0}default:return}}function C(e,n){let t=e.ast.typeRefs;if(!t?.length)return;let r=t.find(o=>D(o.loc,n));return r?{name:r.name,range:{start:r.loc.start,end:r.loc.end}}:void 0}var I=new WeakMap,Se=e=>{let n=I.get(e);if(n)return n;let t=checker.collectBindings(e);return I.set(e,t),t};function Te(e,n){let t=v(e.ast,n).find(o=>o.type==="Identifier");if(t){let o=Se(e.ast).get(t);return o?.loc?.start?{range:{start:o.loc.start,end:o.loc.end},name:t.name,kind:"value"}:void 0}let r=C(e,n);return r?{range:r.range,name:r.name,kind:"type"}:void 0}
|
|
10
|
+
exports.DIAGNOSTIC_TAG=S;exports.TSLITE_EXTENSIONS=J;exports.TSLITE_LANGUAGE_ID=H;exports.TSLITE_SEMANTIC_LEGEND=x;exports.UNNECESSARY_CODES=T;exports.analyze=j;exports.definitionAt=Te;exports.encodeSemanticTokens=h;exports.hoverMarkdown=k;exports.lspHoverAt=X;exports.monacoHoverAt=F;exports.nodeAt=ke;exports.semanticTokens=ue;exports.semanticTokensOf=A;exports.toLspCodeActions=V;exports.toLspDiagnostics=Y;exports.toMonacoCodeActions=z;exports.toMonacoMarkers=U;exports.tsliteDarkPlusThemeRules=re;exports.tsliteLanguageConfiguration=te;exports.tsliteMonarchLanguage=ne;exports.tsliteThemeRules=oe;exports.typeAtPosition=be;exports.typeRefAt=C;
|