diff --git a/src/document.ts b/src/document.ts index e1dd8c402..e1d9cba5e 100644 --- a/src/document.ts +++ b/src/document.ts @@ -17,10 +17,13 @@ export interface IDocument { data: D; } -const normalizeSource = (source: Optional): string | null => { +export function normalizeSource(source: undefined): null; +export function normalizeSource(source: string): string; +export function normalizeSource(source: Optional): string | null; +export function normalizeSource(source: Optional): string | null { if (source === void 0) return null; - return source && !startsWithProtocol(source) ? normalize(source) : source; -}; + return source.length > 0 && !startsWithProtocol(source) ? normalize(source) : source; +} export class Document> implements IDocument { protected readonly parserResult: R; diff --git a/src/spectral.ts b/src/spectral.ts index b7a96af47..3375c9e6d 100644 --- a/src/spectral.ts +++ b/src/spectral.ts @@ -5,7 +5,7 @@ import { YamlParserResult } from '@stoplight/yaml'; import { memoize, merge } from 'lodash'; import { STATIC_ASSETS } from './assets'; -import { Document, IDocument, IParsedResult, isParsedResult, ParsedDocument } from './document'; +import { Document, IDocument, IParsedResult, isParsedResult, ParsedDocument, normalizeSource } from './document'; import { DocumentInventory } from './documentInventory'; import { CoreFunctions, functions as coreFunctions } from './functions'; import * as Parsers from './parsers'; @@ -80,7 +80,7 @@ export class Spectral { const document = this.parseDocument(target); if (document.source === null && opts.resolve?.documentUri !== void 0) { - (document as Omit & { source: string }).source = opts.resolve?.documentUri; + (document as Omit & { source: string }).source = normalizeSource(opts.resolve.documentUri); } const inventory = new DocumentInventory(document, this._resolver);