@redocly/openapi-language-server 0.1.4 → 0.1.5

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/lib/index.d.ts CHANGED
@@ -28,7 +28,7 @@ declare module '@redocly/openapi-language-server/config' {
28
28
  registerFileSystemProvider(fsProvider: FileSystemProvider): void;
29
29
  registerDocumentsProvider(documentProvider: TextDocuments<TextDocument>): void;
30
30
  registerConfigFinder(configFinder: ConfigFinder): void;
31
- registerRootWorkspaceFolderURIGetter(rootWorkspaceFolderURIGetter: () => Promise<string>): void;
31
+ registerRootWorkspaceFolderURIGetter(rootWorkspaceFolderURIGetter: () => Promise<string | null>): void;
32
32
  get fs(): FileSystemProvider;
33
33
  get documents(): TextDocuments<TextDocument>;
34
34
  get findConfig(): ConfigFinder;
@@ -347,7 +347,7 @@ declare module '@redocly/openapi-language-server/server/openapi-config' {
347
347
  };
348
348
  export function loadOpenAPIConfig(uri?: string): Promise<RedoclyConfig>;
349
349
  export function getConfigData(): Promise<ConfigData>;
350
- export function updateOpenAPIConfigByURI(uri: DocumentUri, opts?: {
350
+ export function updateOpenAPIConfigByURI(uri: DocumentUri | null, opts?: {
351
351
  createEventHandleLoadConfigError?: (message: string) => void;
352
352
  }): Promise<RedoclyConfig>;
353
353
  export function isConfigFile(uri: string): boolean;
package/lib/index.js CHANGED
@@ -68,7 +68,7 @@ ${JSON.stringify(m,null,4)}`);let S=m;if(be.string(S.id)||be.number(S.id)){let O
68
68
  Multiple configuration files are not allowed.
69
69
  Found the following files: ${n.join(", ")}.
70
70
  Please use 'redocly.yaml' instead.
71
- `);return n[0]}),this.registerRootWorkspaceFolderURIGetter(async()=>"")}registerFileSystemProvider(t){this._fs=t}registerDocumentsProvider(t){this._documentManager=t}registerConfigFinder(t){this._findConfig=t}registerRootWorkspaceFolderURIGetter(t){this._getRootWorkspaceFolderURI=t}get fs(){if(!this._fs)throw new Error("FileSystemProvider not registered.");return this._fs}get documents(){if(!this._documentManager)throw new Error("DocumentsProvider not registered.");return this._documentManager}get findConfig(){return this._findConfig}get getRootWorkspaceFolderURI(){return this._getRootWorkspaceFolderURI}},Ie=new _o;function uc(e,t){return ye.resolvePath(Ee(e)).toString()===ye.resolvePath(Ee(t)).toString()}function Ee(e){return xn.parse(e)}function Co(e){return xn.parse(e).fsPath}function Po(e){let t=["https","http"],{scheme:n}=xn.parse(e);return t.includes(n)}function Sn(e){return ye.basename(Ee(e))}async function lc(e,t="/"){let n=ye.resolvePath(Ee(t));for(;e.path!=="/";)try{(await Ie.fs.stat(ye.resolvePath(n,e.path))).isDirectory()||(e=ye.dirname(e));break}catch{e=ye.dirname(e)}return e}import{BaseResolver as ym,Source as Yu,readFileFromUrl as vm}from"@redocly/openapi-core";var ti=rt(ei(),1);import{isAbsoluteUrl as hm}from"@redocly/openapi-core";function Fu(e,t=100,n=!1){let r=new Map,i=new Map;function o(u,c,p){let h=i.get(u.uri),v=Date.now()-h;try{v<t&&v>=0?r.set(u.uri,setTimeout(()=>o(u,c,p),t-v)):(r.delete(u.uri),i.delete(u.uri),n||c(e(u)))}catch(C){p(C)}}function s(u){let c=r.get(u.uri),p=n&&!c;return i.set(u.uri,Date.now()),new Promise((h,v)=>{c||r.set(u.uri,setTimeout(()=>o(u,h,v),t)),p&&h(e(u))})}return s}function Xo(e){let t=new Set,n=r=>Array.isArray(n)?r.map(n):typeof r=="object"&&r!==null?t.has(r)?void 0:(t.add(r),Object.fromEntries(Object.entries(r).map(([i,o])=>[i,n(o)]))):r;return n(e)}function Lu(e){return e==="$ref"}async function Zo(e,t){let n=xn.parse(t);return ye.joinPath(n,e).toString()}async function Iu(e,t,n){for(let[r,{root:i}]of Object.entries(e))if(await Zo(i,n)===t)return r}function ju(e){return typeof e=="string"}function ni(e){return typeof e=="function"}function Wu(e){return e?.kind===ti.Kind.MAP}function es(e){return e?.kind===ti.Kind.MAPPING}function ts(e){return e?.kind===ti.Kind.SEQ}function sr(e,t){let n=t.singleQuoted?"'":'"';return`${n}${e}${n}`}function ns(e){return hm(e)||e.startsWith("file://")}var gn=class{constructor(t,n,r,i){this._uri=t,this._languageId=n,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let n=this.offsetAt(t.start),r=this.offsetAt(t.end);return this._content.substring(n,r)}return this._content}update(t,n){for(let r of t)if(gn.isIncremental(r)){let i=Uu(r.range),o=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,o)+r.text+this._content.substring(s,this._content.length);let u=Math.max(i.start.line,0),c=Math.max(i.end.line,0),p=this._lineOffsets,h=Hu(r.text,!1,o);if(c-u===h.length)for(let C=0,P=h.length;C<P;C++)p[C+u+1]=h[C];else h.length<1e4?p.splice(u+1,c-u,...h):this._lineOffsets=p=p.slice(0,u+1).concat(h,p.slice(c+1));let v=r.text.length-(s-o);if(v!==0)for(let C=u+1+h.length,P=p.length;C<P;C++)p[C]=p[C]+v}else if(gn.isFull(r))this._content=r.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=n}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=Hu(this._content,!0)),this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let n=this.getLineOffsets(),r=0,i=n.length;if(i===0)return{line:0,character:t};for(;r<i;){let s=Math.floor((r+i)/2);n[s]>t?i=s:r=s+1}let o=r-1;return{line:o,character:t-n[o]}}offsetAt(t){let n=this.getLineOffsets();if(t.line>=n.length)return this._content.length;if(t.line<0)return 0;let r=n[t.line],i=t.line+1<n.length?n[t.line+1]:this._content.length;return Math.max(Math.min(r+t.character,i),r)}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range!==void 0&&(n.rangeLength===void 0||typeof n.rangeLength=="number")}static isFull(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range===void 0&&n.rangeLength===void 0}},ri;(function(e){function t(i,o,s,u){return new gn(i,o,s,u)}e.create=t;function n(i,o,s){if(i instanceof gn)return i.update(o,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}e.update=n;function r(i,o){let s=i.getText(),u=rs(o.map(mm),(h,v)=>{let C=h.range.start.line-v.range.start.line;return C===0?h.range.start.character-v.range.start.character:C}),c=0,p=[];for(let h of u){let v=i.offsetAt(h.range.start);if(v<c)throw new Error("Overlapping edit");v>c&&p.push(s.substring(c,v)),h.newText.length&&p.push(h.newText),c=i.offsetAt(h.range.end)}return p.push(s.substr(c)),p.join("")}e.applyEdits=r})(ri||(ri={}));function rs(e,t){if(e.length<=1)return e;let n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);rs(r,t),rs(i,t);let o=0,s=0,u=0;for(;o<r.length&&s<i.length;)t(r[o],i[s])<=0?e[u++]=r[o++]:e[u++]=i[s++];for(;o<r.length;)e[u++]=r[o++];for(;s<i.length;)e[u++]=i[s++];return e}function Hu(e,t,n=0){let r=t?[n]:[];for(let i=0;i<e.length;i++){let o=e.charCodeAt(i);(o===13||o===10)&&(o===13&&i+1<e.length&&e.charCodeAt(i+1)===10&&i++,r.push(n+i+1))}return r}function Uu(e){let t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function mm(e){let t=Uu(e.range);return t!==e.range?{newText:e.newText,range:t}:e}var Bu=new Map;function $u(e,t){return Bu.set(e,t)}function zu(e){let t=[];for(let[n,r]of Bu.entries())r.dependencyPaths.has(e)&&t.push({documentPath:n,durationMS:r.durationMS});return t}async function It(e){let t=Ie.documents.get(e);if(t)return t;let n=await Ie.fs.readFile(Ee(e),"utf-8");return ri.create(e,"yaml",1,n)}function is(e){return Do.filePattern.test(e)}function gm(e){return Ro.filePattern.test(e)}var jt=class extends ym{resolveExternalRef(t,n){return ns(n)?n:t&&ns(t)?new URL(n,t).href:ye.resolvePath(ye.dirname(Ee(t)),n).toString()}async loadExternalRef(t){if(Po(t)){let{body:n,mimeType:r}=await vm(t,{...this.config.http,customFetch:fetch});return new Yu(t,n,r)}return new Yu(t,(await It(t)).getText())}};var ar,ii,os,Vu;async function ss(e){let t=new jt,n=await Ie.findConfig(e);return ar=await bm({configPath:n,processRawConfig:async({document:r,resolvedRefMap:i})=>{os=i,Vu=r},externalRefResolver:t}),ar}async function On(){return ar||await ss(),{config:ar,configPath:ii,rootConfigDocument:Vu}}async function Ku(e,t){try{return ii=await Ie.findConfig(e),ii?ss(ii):ar}catch(n){return t?.createEventHandleLoadConfigError?.(n?.message),ss("")}}function cr(e){return cs(e)?!0:!!os&&[...os.keys()].map(n=>n.split("::")?.[1]?.split("#")[0]).some(n=>uc(Sn(e),n))}function cs(e){return as.includes(Sn(e))}var Ge=rt(sn(),1);import{getLineColLocation as Ob,lintDocument as Mb,makeDocumentFromString as Ja,lintConfig as Fb,detectSpec as Lb,getMergedConfig as Ib}from"@redocly/openapi-core";import{bundleDocument as Ab,makeDocumentFromString as Nb}from"@redocly/openapi-core";var ed=new Map,Qi=new Map;function qb(e){return e?Array.from(e).map(([t,n])=>[t,Xo(n)]):[]}async function Qa(e,t){let{config:n}=await On(),r=new jt(n.resolve),i=Nb(e.getText(),e.uri),{bundle:o,problems:s,fileDependencies:u,rootType:c,refTypes:p}=await Ab({document:i,config:n.styleguide,externalRefResolver:r}),h=qb(p);p&&(Qi=new Map([...Qi,...p])),ed.set(e.uri,{uri:e.uri,name:Sn(e.uri),definition:o.parsed,rootType:c,refTypes:h,errors:t})}function Eb(){return Array.from(ed).map(([e,{definition:t,rootType:n,refTypes:r,errors:i}])=>({name:Sn(e),uri:e,definition:t,rootType:n,refTypes:r,errors:i}))}function Ga(e){return Qi.has(e)?Qi.get(e):null}var jb=800,Wb=5,Za=Fu(Bb,jb);async function Hb(e){let t=e.map(({documentPath:i})=>Ee(i).toString()),{config:n}=await On(),r=await Ie.getRootWorkspaceFolderURI();for(let{root:i}of Object.values(n.apis)){let o=await Zo(i,r);if(t.includes(o))return o}return t[0]}var Xa;function Ub(e){try{return Lb(e),!0}catch{return!1}}async function Bb(e){let t=e.uri,{config:n,rootConfigDocument:r,configPath:i}=await On();if(cr(Co(t))){let o=cs(t)?Ja(e.getText(),t):Ja(r.source.body,r.source.absoluteRef),s=new jt,u=await Fb({document:o,externalRefResolver:s,config:n}),c=[{uri:e.uri,diagnostics:[]}];return td(u,c),c}else{let o=zu(t),s=await Hb(o||[]);s&&(e=await It(s),t=s);let u;try{u=Ja(e.getText(),t)}catch{return[{uri:e.uri,diagnostics:[]}]}if(!Ub(u.parsed))return[{uri:e.uri,diagnostics:[]}];let c=[];try{let p=new jt(n.resolve);Xa=e.uri;let h=await Ie.getRootWorkspaceFolderURI(),v=await Iu(n.apis,Xa,h),C=Date.now(),P=(await Mb({document:u,config:Ib(n,v).styleguide,externalRefResolver:p})).filter(({ignored:B})=>!B);Xa=null;let w=Yb(P);Qa(e,w);let N=Date.now()-C;c=[{uri:e.uri,diagnostics:[]},...Array.from(p.getFiles()).map(B=>({uri:Ee(B).toString(),diagnostics:[]}))],$u(t,{dependencyPaths:p.getFiles(),durationMS:N}),td(P,c)}catch(p){$b(e.uri,p,c)}return c}}function Gi(){return Ie.documents.all().map(Za)}function $b(e,t,n){let r=n||[{uri:e,diagnostics:[]}];if(t.line&&t.col&&t.message){let i=t.source?.absoluteRef?Ee(t.source.absoluteRef).toString():e,o=t.line-1,s=t.col-1,u=Ge.Position.create(o,s),c=Ge.Diagnostic.create(Ge.Range.create(u,u),t.message,Ge.DiagnosticSeverity.Error);nd(i,c,r)}else t.message.includes("This doesn\u2019t look like an OpenAPI document")||console.error(t);return r}function nd(e,t,n){let r=n.find(i=>i.uri===e);return r||(r={uri:e,diagnostics:[]},n.push(r)),r.diagnostics.push(t),n}function zb(e){return e.suggest.length===0?"":e.suggest.length===1?`
71
+ `);return n[0]}),this.registerRootWorkspaceFolderURIGetter(async()=>"")}registerFileSystemProvider(t){this._fs=t}registerDocumentsProvider(t){this._documentManager=t}registerConfigFinder(t){this._findConfig=t}registerRootWorkspaceFolderURIGetter(t){this._getRootWorkspaceFolderURI=t}get fs(){if(!this._fs)throw new Error("FileSystemProvider not registered.");return this._fs}get documents(){if(!this._documentManager)throw new Error("DocumentsProvider not registered.");return this._documentManager}get findConfig(){return this._findConfig}get getRootWorkspaceFolderURI(){return this._getRootWorkspaceFolderURI}},Ie=new _o;function uc(e,t){return ye.resolvePath(Ee(e)).toString()===ye.resolvePath(Ee(t)).toString()}function Ee(e){return xn.parse(e)}function Co(e){return xn.parse(e).fsPath}function Po(e){let t=["https","http"],{scheme:n}=xn.parse(e);return t.includes(n)}function Sn(e){return ye.basename(Ee(e))}async function lc(e,t="/"){let n=ye.resolvePath(Ee(t));for(;e.path!=="/";)try{(await Ie.fs.stat(ye.resolvePath(n,e.path))).isDirectory()||(e=ye.dirname(e));break}catch{e=ye.dirname(e)}return e}import{BaseResolver as ym,Source as Yu,readFileFromUrl as vm}from"@redocly/openapi-core";var ti=rt(ei(),1);import{isAbsoluteUrl as hm}from"@redocly/openapi-core";function Fu(e,t=100,n=!1){let r=new Map,i=new Map;function o(u,c,p){let h=i.get(u.uri),v=Date.now()-h;try{v<t&&v>=0?r.set(u.uri,setTimeout(()=>o(u,c,p),t-v)):(r.delete(u.uri),i.delete(u.uri),n||c(e(u)))}catch(C){p(C)}}function s(u){let c=r.get(u.uri),p=n&&!c;return i.set(u.uri,Date.now()),new Promise((h,v)=>{c||r.set(u.uri,setTimeout(()=>o(u,h,v),t)),p&&h(e(u))})}return s}function Xo(e){let t=new Set,n=r=>Array.isArray(n)?r.map(n):typeof r=="object"&&r!==null?t.has(r)?void 0:(t.add(r),Object.fromEntries(Object.entries(r).map(([i,o])=>[i,n(o)]))):r;return n(e)}function Lu(e){return e==="$ref"}async function Zo(e,t){let n=xn.parse(t);return ye.joinPath(n,e).toString()}async function Iu(e,t,n){for(let[r,{root:i}]of Object.entries(e))if(await Zo(i,n)===t)return r}function ju(e){return typeof e=="string"}function ni(e){return typeof e=="function"}function Wu(e){return e?.kind===ti.Kind.MAP}function es(e){return e?.kind===ti.Kind.MAPPING}function ts(e){return e?.kind===ti.Kind.SEQ}function sr(e,t){let n=t.singleQuoted?"'":'"';return`${n}${e}${n}`}function ns(e){return hm(e)||e.startsWith("file://")}var gn=class{constructor(t,n,r,i){this._uri=t,this._languageId=n,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let n=this.offsetAt(t.start),r=this.offsetAt(t.end);return this._content.substring(n,r)}return this._content}update(t,n){for(let r of t)if(gn.isIncremental(r)){let i=Uu(r.range),o=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,o)+r.text+this._content.substring(s,this._content.length);let u=Math.max(i.start.line,0),c=Math.max(i.end.line,0),p=this._lineOffsets,h=Hu(r.text,!1,o);if(c-u===h.length)for(let C=0,P=h.length;C<P;C++)p[C+u+1]=h[C];else h.length<1e4?p.splice(u+1,c-u,...h):this._lineOffsets=p=p.slice(0,u+1).concat(h,p.slice(c+1));let v=r.text.length-(s-o);if(v!==0)for(let C=u+1+h.length,P=p.length;C<P;C++)p[C]=p[C]+v}else if(gn.isFull(r))this._content=r.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=n}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=Hu(this._content,!0)),this._lineOffsets}positionAt(t){t=Math.max(Math.min(t,this._content.length),0);let n=this.getLineOffsets(),r=0,i=n.length;if(i===0)return{line:0,character:t};for(;r<i;){let s=Math.floor((r+i)/2);n[s]>t?i=s:r=s+1}let o=r-1;return{line:o,character:t-n[o]}}offsetAt(t){let n=this.getLineOffsets();if(t.line>=n.length)return this._content.length;if(t.line<0)return 0;let r=n[t.line],i=t.line+1<n.length?n[t.line+1]:this._content.length;return Math.max(Math.min(r+t.character,i),r)}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range!==void 0&&(n.rangeLength===void 0||typeof n.rangeLength=="number")}static isFull(t){let n=t;return n!=null&&typeof n.text=="string"&&n.range===void 0&&n.rangeLength===void 0}},ri;(function(e){function t(i,o,s,u){return new gn(i,o,s,u)}e.create=t;function n(i,o,s){if(i instanceof gn)return i.update(o,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}e.update=n;function r(i,o){let s=i.getText(),u=rs(o.map(mm),(h,v)=>{let C=h.range.start.line-v.range.start.line;return C===0?h.range.start.character-v.range.start.character:C}),c=0,p=[];for(let h of u){let v=i.offsetAt(h.range.start);if(v<c)throw new Error("Overlapping edit");v>c&&p.push(s.substring(c,v)),h.newText.length&&p.push(h.newText),c=i.offsetAt(h.range.end)}return p.push(s.substr(c)),p.join("")}e.applyEdits=r})(ri||(ri={}));function rs(e,t){if(e.length<=1)return e;let n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);rs(r,t),rs(i,t);let o=0,s=0,u=0;for(;o<r.length&&s<i.length;)t(r[o],i[s])<=0?e[u++]=r[o++]:e[u++]=i[s++];for(;o<r.length;)e[u++]=r[o++];for(;s<i.length;)e[u++]=i[s++];return e}function Hu(e,t,n=0){let r=t?[n]:[];for(let i=0;i<e.length;i++){let o=e.charCodeAt(i);(o===13||o===10)&&(o===13&&i+1<e.length&&e.charCodeAt(i+1)===10&&i++,r.push(n+i+1))}return r}function Uu(e){let t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function mm(e){let t=Uu(e.range);return t!==e.range?{newText:e.newText,range:t}:e}var Bu=new Map;function $u(e,t){return Bu.set(e,t)}function zu(e){let t=[];for(let[n,r]of Bu.entries())r.dependencyPaths.has(e)&&t.push({documentPath:n,durationMS:r.durationMS});return t}async function It(e){let t=Ie.documents.get(e);if(t)return t;let n=await Ie.fs.readFile(Ee(e),"utf-8");return ri.create(e,"yaml",1,n)}function is(e){return Do.filePattern.test(e)}function gm(e){return Ro.filePattern.test(e)}var jt=class extends ym{resolveExternalRef(t,n){return ns(n)?n:t&&ns(t)?new URL(n,t).href:ye.resolvePath(ye.dirname(Ee(t)),n).toString()}async loadExternalRef(t){if(Po(t)){let{body:n,mimeType:r}=await vm(t,{...this.config.http,customFetch:fetch});return new Yu(t,n,r)}return new Yu(t,(await It(t)).getText())}};var ar,ii,os,Vu;async function ss(e){let t=new jt,n=await Ie.findConfig(e);return ar=await bm({configPath:n,externalRefResolver:t,processRawConfig:async({document:r,resolvedRefMap:i})=>{os=i,Vu=r}}),ar}async function On(){return ar||await ss(),{config:ar,configPath:ii,rootConfigDocument:Vu}}async function Ku(e,t){try{return ii=await Ie.findConfig(e),ii?await ss(ii):ar}catch(n){return t?.createEventHandleLoadConfigError?.(n?.message),ss("")}}function cr(e){return cs(e)?!0:!!os&&[...os.keys()].map(n=>n.split("::")?.[1]?.split("#")[0]).some(n=>uc(Sn(e),n))}function cs(e){return as.includes(Sn(e))}var Ge=rt(sn(),1);import{getLineColLocation as Ob,lintDocument as Mb,makeDocumentFromString as Ja,lintConfig as Fb,detectSpec as Lb,getMergedConfig as Ib}from"@redocly/openapi-core";import{bundleDocument as Ab,makeDocumentFromString as Nb}from"@redocly/openapi-core";var ed=new Map,Qi=new Map;function qb(e){return e?Array.from(e).map(([t,n])=>[t,Xo(n)]):[]}async function Qa(e,t){let{config:n}=await On(),r=new jt(n.resolve),i=Nb(e.getText(),e.uri),{bundle:o,problems:s,fileDependencies:u,rootType:c,refTypes:p}=await Ab({document:i,config:n.styleguide,externalRefResolver:r}),h=qb(p);p&&(Qi=new Map([...Qi,...p])),ed.set(e.uri,{uri:e.uri,name:Sn(e.uri),definition:o.parsed,rootType:c,refTypes:h,errors:t})}function Eb(){return Array.from(ed).map(([e,{definition:t,rootType:n,refTypes:r,errors:i}])=>({name:Sn(e),uri:e,definition:t,rootType:n,refTypes:r,errors:i}))}function Ga(e){return Qi.has(e)?Qi.get(e):null}var jb=800,Wb=5,Za=Fu(Bb,jb);async function Hb(e){let t=e.map(({documentPath:i})=>Ee(i).toString()),{config:n}=await On(),r=await Ie.getRootWorkspaceFolderURI();for(let{root:i}of Object.values(n.apis)){let o=await Zo(i,r);if(t.includes(o))return o}return t[0]}var Xa;function Ub(e){try{return Lb(e),!0}catch{return!1}}async function Bb(e){let t=e.uri,{config:n,rootConfigDocument:r,configPath:i}=await On();if(cr(Co(t))){let o=cs(t)?Ja(e.getText(),t):Ja(r.source.body,r.source.absoluteRef),s=new jt,u=await Fb({document:o,externalRefResolver:s,config:n}),c=[{uri:e.uri,diagnostics:[]}];return td(u,c),c}else{let o=zu(t),s=await Hb(o||[]);s&&(e=await It(s),t=s);let u;try{u=Ja(e.getText(),t)}catch{return[{uri:e.uri,diagnostics:[]}]}if(!Ub(u.parsed))return[{uri:e.uri,diagnostics:[]}];let c=[];try{let p=new jt(n.resolve);Xa=e.uri;let h=await Ie.getRootWorkspaceFolderURI(),v=await Iu(n.apis,Xa,h),C=Date.now(),P=(await Mb({document:u,config:Ib(n,v).styleguide,externalRefResolver:p})).filter(({ignored:B})=>!B);Xa=null;let w=Yb(P);Qa(e,w);let N=Date.now()-C;c=[{uri:e.uri,diagnostics:[]},...Array.from(p.getFiles()).map(B=>({uri:Ee(B).toString(),diagnostics:[]}))],$u(t,{dependencyPaths:p.getFiles(),durationMS:N}),td(P,c)}catch(p){$b(e.uri,p,c)}return c}}function Gi(){return Ie.documents.all().map(Za)}function $b(e,t,n){let r=n||[{uri:e,diagnostics:[]}];if(t.line&&t.col&&t.message){let i=t.source?.absoluteRef?Ee(t.source.absoluteRef).toString():e,o=t.line-1,s=t.col-1,u=Ge.Position.create(o,s),c=Ge.Diagnostic.create(Ge.Range.create(u,u),t.message,Ge.DiagnosticSeverity.Error);nd(i,c,r)}else t.message.includes("This doesn\u2019t look like an OpenAPI document")||console.error(t);return r}function nd(e,t,n){let r=n.find(i=>i.uri===e);return r||(r={uri:e,diagnostics:[]},n.push(r)),r.diagnostics.push(t),n}function zb(e){return e.suggest.length===0?"":e.suggest.length===1?`
72
72
  Did you mean: ${e.suggest[0]} ?`:`
73
73
  Did you mean:
74
74
  - ${e.suggest.slice(0,Wb).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-language-server",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Redocly OpenAPI language server",
5
5
  "main": "lib/index.js",
6
6
  "type": "module",