1 line
76 KiB
Plaintext
1 line
76 KiB
Plaintext
{"version":3,"file":"DeclarationReference.js","sourceRoot":"","sources":["../../src/beta/DeclarationReference.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\r\n/* eslint-disable @typescript-eslint/array-type */\r\n/* eslint-disable no-return-assign */\r\n/* eslint-disable no-sequences */\r\n/* eslint-disable no-inner-declarations */\r\n/* eslint-disable @typescript-eslint/no-use-before-define */\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n// NOTE: See DeclarationReference.grammarkdown for information on the underlying grammar.\r\n\r\nimport { StringChecks } from '../parser/StringChecks';\r\n\r\n/**\r\n * Represents a reference to a declaration.\r\n * @beta\r\n */\r\nexport class DeclarationReference {\r\n private _source: ModuleSource | GlobalSource | undefined;\r\n private _navigation: Navigation.Locals | Navigation.Exports | undefined;\r\n private _symbol: SymbolReference | undefined;\r\n\r\n public constructor(\r\n source?: ModuleSource | GlobalSource,\r\n navigation?: Navigation.Locals | Navigation.Exports,\r\n symbol?: SymbolReference\r\n ) {\r\n this._source = source;\r\n this._navigation = navigation;\r\n this._symbol = symbol;\r\n }\r\n\r\n public get source(): ModuleSource | GlobalSource | undefined {\r\n return this._source;\r\n }\r\n\r\n public get navigation(): Navigation.Locals | Navigation.Exports | undefined {\r\n if (!this._source || !this._symbol) {\r\n return undefined;\r\n }\r\n if (this._source === GlobalSource.instance) {\r\n return Navigation.Locals;\r\n }\r\n if (this._navigation === undefined) {\r\n return Navigation.Exports;\r\n }\r\n return this._navigation;\r\n }\r\n\r\n public get symbol(): SymbolReference | undefined {\r\n return this._symbol;\r\n }\r\n\r\n public get isEmpty(): boolean {\r\n return this.source === undefined && this.symbol === undefined;\r\n }\r\n\r\n public static parse(text: string): DeclarationReference {\r\n const parser: Parser = new Parser(text);\r\n const reference: DeclarationReference = parser.parseDeclarationReference();\r\n if (parser.errors.length) {\r\n throw new SyntaxError(`Invalid DeclarationReference '${text}':\\n ${parser.errors.join('\\n ')}`);\r\n }\r\n if (!parser.eof) {\r\n throw new SyntaxError(`Invalid DeclarationReference '${text}'`);\r\n }\r\n return reference;\r\n }\r\n\r\n public static parseComponent(text: string): Component {\r\n if (text[0] === '[') {\r\n return ComponentReference.parse(text);\r\n } else {\r\n return new ComponentString(text, true);\r\n }\r\n }\r\n\r\n /**\r\n * Determines whether the provided string is a well-formed symbol navigation component string.\r\n */\r\n public static isWellFormedComponentString(text: string): boolean {\r\n const scanner: Scanner = new Scanner(text);\r\n return scanner.scan() === Token.String\r\n ? scanner.scan() === Token.EofToken\r\n : scanner.token() === Token.Text\r\n ? scanner.scan() === Token.EofToken\r\n : scanner.token() === Token.EofToken;\r\n }\r\n\r\n /**\r\n * Escapes a string for use as a symbol navigation component. If the string contains any of `!.#~:,\"{}()@` or starts\r\n * with `[`, it is enclosed in quotes.\r\n */\r\n public static escapeComponentString(text: string): string {\r\n if (text.length === 0) {\r\n return '\"\"';\r\n }\r\n const ch: string = text.charAt(0);\r\n if (ch === '[' || ch === '\"' || !this.isWellFormedComponentString(text)) {\r\n return JSON.stringify(text);\r\n }\r\n return text;\r\n }\r\n\r\n /**\r\n * Unescapes a string used as a symbol navigation component.\r\n */\r\n public static unescapeComponentString(text: string): string {\r\n if (text.length >= 2 && text.charAt(0) === '\"' && text.charAt(text.length - 1) === '\"') {\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n throw new SyntaxError(`Invalid Component '${text}'`);\r\n }\r\n }\r\n if (!this.isWellFormedComponentString(text)) {\r\n throw new SyntaxError(`Invalid Component '${text}'`);\r\n }\r\n return text;\r\n }\r\n\r\n /**\r\n * Determines whether the provided string is a well-formed module source string. The string may not\r\n * have a trailing `!` character.\r\n */\r\n public static isWellFormedModuleSourceString(text: string): boolean {\r\n const scanner: Scanner = new Scanner(text + '!');\r\n return (\r\n scanner.rescanModuleSource() === Token.ModuleSource &&\r\n !scanner.stringIsUnterminated &&\r\n scanner.scan() === Token.ExclamationToken &&\r\n scanner.scan() === Token.EofToken\r\n );\r\n }\r\n\r\n /**\r\n * Escapes a string for use as a module source. If the string contains any of `!\"` it is enclosed in quotes.\r\n */\r\n public static escapeModuleSourceString(text: string): string {\r\n if (text.length === 0) {\r\n return '\"\"';\r\n }\r\n const ch: string = text.charAt(0);\r\n if (ch === '\"' || !this.isWellFormedModuleSourceString(text)) {\r\n return JSON.stringify(text);\r\n }\r\n return text;\r\n }\r\n\r\n /**\r\n * Unescapes a string used as a module source. The string may not have a trailing `!` character.\r\n */\r\n public static unescapeModuleSourceString(text: string): string {\r\n if (text.length >= 2 && text.charAt(0) === '\"' && text.charAt(text.length - 1) === '\"') {\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n throw new SyntaxError(`Invalid Module source '${text}'`);\r\n }\r\n }\r\n if (!this.isWellFormedModuleSourceString(text)) {\r\n throw new SyntaxError(`Invalid Module source '${text}'`);\r\n }\r\n return text;\r\n }\r\n\r\n public static empty(): DeclarationReference {\r\n return new DeclarationReference();\r\n }\r\n\r\n public static package(packageName: string, importPath?: string): DeclarationReference {\r\n return new DeclarationReference(ModuleSource.fromPackage(packageName, importPath));\r\n }\r\n\r\n public static module(path: string, userEscaped?: boolean): DeclarationReference {\r\n return new DeclarationReference(new ModuleSource(path, userEscaped));\r\n }\r\n\r\n public static global(): DeclarationReference {\r\n return new DeclarationReference(GlobalSource.instance);\r\n }\r\n\r\n public static from(base: DeclarationReference | undefined): DeclarationReference {\r\n return base || this.empty();\r\n }\r\n\r\n public withSource(source: ModuleSource | GlobalSource | undefined): DeclarationReference {\r\n return this._source === source ? this : new DeclarationReference(source, this._navigation, this._symbol);\r\n }\r\n\r\n public withNavigation(\r\n navigation: Navigation.Locals | Navigation.Exports | undefined\r\n ): DeclarationReference {\r\n return this._navigation === navigation\r\n ? this\r\n : new DeclarationReference(this._source, navigation, this._symbol);\r\n }\r\n\r\n public withSymbol(symbol: SymbolReference | undefined): DeclarationReference {\r\n return this._symbol === symbol ? this : new DeclarationReference(this._source, this._navigation, symbol);\r\n }\r\n\r\n public withComponentPath(componentPath: ComponentPath): DeclarationReference {\r\n return this.withSymbol(\r\n this.symbol ? this.symbol.withComponentPath(componentPath) : new SymbolReference(componentPath)\r\n );\r\n }\r\n\r\n public withMeaning(meaning: Meaning | undefined): DeclarationReference {\r\n if (!this.symbol) {\r\n if (meaning === undefined) {\r\n return this;\r\n }\r\n return this.withSymbol(SymbolReference.empty().withMeaning(meaning));\r\n }\r\n return this.withSymbol(this.symbol.withMeaning(meaning));\r\n }\r\n\r\n public withOverloadIndex(overloadIndex: number | undefined): DeclarationReference {\r\n if (!this.symbol) {\r\n if (overloadIndex === undefined) {\r\n return this;\r\n }\r\n return this.withSymbol(SymbolReference.empty().withOverloadIndex(overloadIndex));\r\n }\r\n return this.withSymbol(this.symbol.withOverloadIndex(overloadIndex));\r\n }\r\n\r\n public addNavigationStep(navigation: Navigation, component: ComponentLike): DeclarationReference {\r\n if (this.symbol) {\r\n return this.withSymbol(this.symbol.addNavigationStep(navigation, component));\r\n }\r\n if (navigation === Navigation.Members) {\r\n navigation = Navigation.Exports;\r\n }\r\n const symbol: SymbolReference = new SymbolReference(new ComponentRoot(Component.from(component)));\r\n return new DeclarationReference(this.source, navigation, symbol);\r\n }\r\n\r\n public toString(): string {\r\n const navigation: string =\r\n this._source instanceof ModuleSource && this._symbol && this.navigation === Navigation.Locals\r\n ? '~'\r\n : '';\r\n return `${this.source || ''}${navigation}${this.symbol || ''}`;\r\n }\r\n}\r\n\r\n/**\r\n * Indicates the symbol table from which to resolve the next symbol component.\r\n * @beta\r\n */\r\nexport const enum Navigation {\r\n Exports = '.',\r\n Members = '#',\r\n Locals = '~'\r\n}\r\n\r\n/**\r\n * Represents a module.\r\n * @beta\r\n */\r\nexport class ModuleSource {\r\n public readonly escapedPath: string;\r\n private _path: string | undefined;\r\n\r\n private _pathComponents: IParsedPackage | undefined;\r\n\r\n public constructor(path: string, userEscaped: boolean = true) {\r\n this.escapedPath =\r\n this instanceof ParsedModuleSource ? path : escapeModuleSourceIfNeeded(path, userEscaped);\r\n }\r\n\r\n public get path(): string {\r\n return this._path || (this._path = DeclarationReference.unescapeModuleSourceString(this.escapedPath));\r\n }\r\n\r\n public get packageName(): string {\r\n return this._getOrParsePathComponents().packageName;\r\n }\r\n\r\n public get scopeName(): string {\r\n const scopeName: string = this._getOrParsePathComponents().scopeName;\r\n return scopeName ? '@' + scopeName : '';\r\n }\r\n\r\n public get unscopedPackageName(): string {\r\n return this._getOrParsePathComponents().unscopedPackageName;\r\n }\r\n\r\n public get importPath(): string {\r\n return this._getOrParsePathComponents().importPath || '';\r\n }\r\n\r\n public static fromScopedPackage(\r\n scopeName: string | undefined,\r\n unscopedPackageName: string,\r\n importPath?: string\r\n ): ModuleSource {\r\n let packageName: string = unscopedPackageName;\r\n if (scopeName) {\r\n if (scopeName.charAt(0) === '@') {\r\n scopeName = scopeName.slice(1);\r\n }\r\n packageName = `@${scopeName}/${unscopedPackageName}`;\r\n }\r\n\r\n const parsed: IParsedPackage = { packageName, scopeName: scopeName || '', unscopedPackageName };\r\n return this._fromPackageName(parsed, packageName, importPath);\r\n }\r\n\r\n public static fromPackage(packageName: string, importPath?: string): ModuleSource {\r\n return this._fromPackageName(parsePackageName(packageName), packageName, importPath);\r\n }\r\n\r\n private static _fromPackageName(\r\n parsed: IParsedPackage | null,\r\n packageName: string,\r\n importPath?: string\r\n ): ModuleSource {\r\n if (!parsed) {\r\n throw new Error('Parsed package must be provided.');\r\n }\r\n\r\n const packageNameError: string | undefined = StringChecks.explainIfInvalidPackageName(packageName);\r\n if (packageNameError) {\r\n throw new SyntaxError(`Invalid NPM package name: ${packageNameError}`);\r\n }\r\n\r\n let path: string = packageName;\r\n if (importPath) {\r\n if (invalidImportPathRegExp.test(importPath)) {\r\n throw new SyntaxError(`Invalid import path '${importPath}`);\r\n }\r\n path += '/' + importPath;\r\n parsed.importPath = importPath;\r\n }\r\n\r\n const source: ModuleSource = new ModuleSource(path);\r\n source._pathComponents = parsed;\r\n return source;\r\n }\r\n\r\n public toString(): string {\r\n return `${this.escapedPath}!`;\r\n }\r\n\r\n private _getOrParsePathComponents(): IParsedPackage {\r\n if (!this._pathComponents) {\r\n const path: string = this.path;\r\n const parsed: IParsedPackage | null = parsePackageName(path);\r\n if (parsed && !StringChecks.explainIfInvalidPackageName(parsed.packageName)) {\r\n this._pathComponents = parsed;\r\n } else {\r\n this._pathComponents = {\r\n packageName: '',\r\n scopeName: '',\r\n unscopedPackageName: '',\r\n importPath: path\r\n };\r\n }\r\n }\r\n return this._pathComponents;\r\n }\r\n}\r\n\r\nclass ParsedModuleSource extends ModuleSource {}\r\n\r\n// matches the following:\r\n// 'foo' -> [\"foo\", \"foo\", undefined, \"foo\", undefined]\r\n// 'foo/bar' -> [\"foo/bar\", \"foo\", undefined, \"foo\", \"bar\"]\r\n// '@scope/foo' -> [\"@scope/foo\", \"@scope/foo\", \"scope\", \"foo\", undefined]\r\n// '@scope/foo/bar' -> [\"@scope/foo/bar\", \"@scope/foo\", \"scope\", \"foo\", \"bar\"]\r\n// does not match:\r\n// '/'\r\n// '@/'\r\n// '@scope/'\r\n// capture groups:\r\n// 1. The package name (including scope)\r\n// 2. The scope name (excluding the leading '@')\r\n// 3. The unscoped package name\r\n// 4. The package-relative import path\r\nconst packageNameRegExp: RegExp = /^((?:@([^/]+?)\\/)?([^/]+?))(?:\\/(.+))?$/;\r\n\r\n// no leading './' or '.\\'\r\n// no leading '../' or '..\\'\r\n// no leading '/' or '\\'\r\n// not '.' or '..'\r\nconst invalidImportPathRegExp: RegExp = /^(\\.\\.?([\\\\/]|$)|[\\\\/])/;\r\n\r\ninterface IParsedPackage {\r\n packageName: string;\r\n scopeName: string;\r\n unscopedPackageName: string;\r\n importPath?: string;\r\n}\r\n\r\n// eslint-disable-next-line @rushstack/no-new-null\r\nfunction parsePackageName(text: string): IParsedPackage | null {\r\n const match: RegExpExecArray | null = packageNameRegExp.exec(text);\r\n if (!match) {\r\n return match;\r\n }\r\n const [, packageName = '', scopeName = '', unscopedPackageName = '', importPath]: RegExpExecArray = match;\r\n return { packageName, scopeName, unscopedPackageName, importPath };\r\n}\r\n\r\n/**\r\n * Represents the global scope.\r\n * @beta\r\n */\r\nexport class GlobalSource {\r\n public static readonly instance: GlobalSource = new GlobalSource();\r\n\r\n private constructor() {}\r\n\r\n public toString(): string {\r\n return '!';\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport type Component = ComponentString | ComponentReference;\r\n\r\n/**\r\n * @beta\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nexport namespace Component {\r\n export function from(value: ComponentLike): Component {\r\n if (typeof value === 'string') {\r\n return new ComponentString(value);\r\n }\r\n if (value instanceof DeclarationReference) {\r\n return new ComponentReference(value);\r\n }\r\n return value;\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport type ComponentLike = Component | DeclarationReference | string;\r\n\r\n/**\r\n * @beta\r\n */\r\nexport class ComponentString {\r\n public readonly text: string;\r\n\r\n public constructor(text: string, userEscaped?: boolean) {\r\n this.text = this instanceof ParsedComponentString ? text : escapeComponentIfNeeded(text, userEscaped);\r\n }\r\n\r\n public toString(): string {\r\n return this.text;\r\n }\r\n}\r\n\r\nclass ParsedComponentString extends ComponentString {}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport class ComponentReference {\r\n public readonly reference: DeclarationReference;\r\n\r\n public constructor(reference: DeclarationReference) {\r\n this.reference = reference;\r\n }\r\n\r\n public static parse(text: string): ComponentReference {\r\n if (text.length > 2 && text.charAt(0) === '[' && text.charAt(text.length - 1) === ']') {\r\n return new ComponentReference(DeclarationReference.parse(text.slice(1, -1)));\r\n }\r\n throw new SyntaxError(`Invalid component reference: '${text}'`);\r\n }\r\n\r\n public withReference(reference: DeclarationReference): ComponentReference {\r\n return this.reference === reference ? this : new ComponentReference(reference);\r\n }\r\n\r\n public toString(): string {\r\n return `[${this.reference}]`;\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport type ComponentPath = ComponentRoot | ComponentNavigation;\r\n\r\n/**\r\n * @beta\r\n */\r\nexport abstract class ComponentPathBase {\r\n public readonly component: Component;\r\n\r\n public constructor(component: Component) {\r\n this.component = component;\r\n }\r\n\r\n public addNavigationStep(\r\n this: ComponentPath,\r\n navigation: Navigation,\r\n component: ComponentLike\r\n ): ComponentPath {\r\n // tslint:disable-next-line:no-use-before-declare\r\n return new ComponentNavigation(this, navigation, Component.from(component));\r\n }\r\n\r\n public abstract toString(): string;\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport class ComponentRoot extends ComponentPathBase {\r\n public withComponent(component: ComponentLike): ComponentRoot {\r\n return this.component === component ? this : new ComponentRoot(Component.from(component));\r\n }\r\n\r\n public toString(): string {\r\n return this.component.toString();\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport class ComponentNavigation extends ComponentPathBase {\r\n public readonly parent: ComponentPath;\r\n public readonly navigation: Navigation;\r\n\r\n public constructor(parent: ComponentPath, navigation: Navigation, component: Component) {\r\n super(component);\r\n this.parent = parent;\r\n this.navigation = navigation;\r\n }\r\n\r\n public withParent(parent: ComponentPath): ComponentNavigation {\r\n return this.parent === parent ? this : new ComponentNavigation(parent, this.navigation, this.component);\r\n }\r\n\r\n public withNavigation(navigation: Navigation): ComponentNavigation {\r\n return this.navigation === navigation\r\n ? this\r\n : new ComponentNavigation(this.parent, navigation, this.component);\r\n }\r\n\r\n public withComponent(component: ComponentLike): ComponentNavigation {\r\n return this.component === component\r\n ? this\r\n : new ComponentNavigation(this.parent, this.navigation, Component.from(component));\r\n }\r\n\r\n public toString(): string {\r\n return `${this.parent}${formatNavigation(this.navigation)}${this.component}`;\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport const enum Meaning {\r\n Class = 'class', // SymbolFlags.Class\r\n Interface = 'interface', // SymbolFlags.Interface\r\n TypeAlias = 'type', // SymbolFlags.TypeAlias\r\n Enum = 'enum', // SymbolFlags.Enum\r\n Namespace = 'namespace', // SymbolFlags.Module\r\n Function = 'function', // SymbolFlags.Function\r\n Variable = 'var', // SymbolFlags.Variable\r\n Constructor = 'constructor', // SymbolFlags.Constructor\r\n Member = 'member', // SymbolFlags.ClassMember | SymbolFlags.EnumMember\r\n Event = 'event', //\r\n CallSignature = 'call', // SymbolFlags.Signature (for __call)\r\n ConstructSignature = 'new', // SymbolFlags.Signature (for __new)\r\n IndexSignature = 'index', // SymbolFlags.Signature (for __index)\r\n ComplexType = 'complex' // Any complex type\r\n}\r\n\r\n/**\r\n * @beta\r\n */\r\nexport interface ISymbolReferenceOptions {\r\n meaning?: Meaning;\r\n overloadIndex?: number;\r\n}\r\n\r\n/**\r\n * Represents a reference to a TypeScript symbol.\r\n * @beta\r\n */\r\nexport class SymbolReference {\r\n public readonly componentPath: ComponentPath | undefined;\r\n public readonly meaning: Meaning | undefined;\r\n public readonly overloadIndex: number | undefined;\r\n\r\n public constructor(\r\n component: ComponentPath | undefined,\r\n { meaning, overloadIndex }: ISymbolReferenceOptions = {}\r\n ) {\r\n this.componentPath = component;\r\n this.overloadIndex = overloadIndex;\r\n this.meaning = meaning;\r\n }\r\n\r\n public static empty(): SymbolReference {\r\n return new SymbolReference(/*component*/ undefined);\r\n }\r\n\r\n public withComponentPath(componentPath: ComponentPath | undefined): SymbolReference {\r\n return this.componentPath === componentPath\r\n ? this\r\n : new SymbolReference(componentPath, {\r\n meaning: this.meaning,\r\n overloadIndex: this.overloadIndex\r\n });\r\n }\r\n\r\n public withMeaning(meaning: Meaning | undefined): SymbolReference {\r\n return this.meaning === meaning\r\n ? this\r\n : new SymbolReference(this.componentPath, {\r\n meaning,\r\n overloadIndex: this.overloadIndex\r\n });\r\n }\r\n\r\n public withOverloadIndex(overloadIndex: number | undefined): SymbolReference {\r\n return this.overloadIndex === overloadIndex\r\n ? this\r\n : new SymbolReference(this.componentPath, {\r\n meaning: this.meaning,\r\n overloadIndex\r\n });\r\n }\r\n\r\n public addNavigationStep(navigation: Navigation, component: ComponentLike): SymbolReference {\r\n if (!this.componentPath) {\r\n throw new Error('Cannot add a navigation step to an empty symbol reference.');\r\n }\r\n return new SymbolReference(this.componentPath.addNavigationStep(navigation, component));\r\n }\r\n\r\n public toString(): string {\r\n let result: string = `${this.componentPath || ''}`;\r\n if (this.meaning && this.overloadIndex !== undefined) {\r\n result += `:${this.meaning}(${this.overloadIndex})`;\r\n } else if (this.meaning) {\r\n result += `:${this.meaning}`;\r\n } else if (this.overloadIndex !== undefined) {\r\n result += `:${this.overloadIndex}`;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nconst enum Token {\r\n None,\r\n EofToken,\r\n // Punctuator\r\n OpenBraceToken, // '{'\r\n CloseBraceToken, // '}'\r\n OpenParenToken, // '('\r\n CloseParenToken, // ')'\r\n OpenBracketToken, // '['\r\n CloseBracketToken, // ']'\r\n ExclamationToken, // '!'\r\n DotToken, // '.'\r\n HashToken, // '#'\r\n TildeToken, // '~'\r\n ColonToken, // ':'\r\n CommaToken, // ','\r\n AtToken, // '@'\r\n DecimalDigits, // '12345'\r\n String, // '\"abc\"'\r\n Text, // 'abc'\r\n ModuleSource, // 'abc/def!' (excludes '!')\r\n // Keywords\r\n ClassKeyword, // 'class'\r\n InterfaceKeyword, // 'interface'\r\n TypeKeyword, // 'type'\r\n EnumKeyword, // 'enum'\r\n NamespaceKeyword, // 'namespace'\r\n FunctionKeyword, // 'function'\r\n VarKeyword, // 'var'\r\n ConstructorKeyword, // 'constructor'\r\n MemberKeyword, // 'member'\r\n EventKeyword, // 'event'\r\n CallKeyword, // 'call'\r\n NewKeyword, // 'new'\r\n IndexKeyword, // 'index'\r\n ComplexKeyword // 'complex'\r\n}\r\n\r\nfunction tokenToString(token: Token): string {\r\n switch (token) {\r\n case Token.OpenBraceToken:\r\n return '{';\r\n case Token.CloseBraceToken:\r\n return '}';\r\n case Token.OpenParenToken:\r\n return '(';\r\n case Token.CloseParenToken:\r\n return ')';\r\n case Token.OpenBracketToken:\r\n return '[';\r\n case Token.CloseBracketToken:\r\n return ']';\r\n case Token.ExclamationToken:\r\n return '!';\r\n case Token.DotToken:\r\n return '.';\r\n case Token.HashToken:\r\n return '#';\r\n case Token.TildeToken:\r\n return '~';\r\n case Token.ColonToken:\r\n return ':';\r\n case Token.CommaToken:\r\n return ',';\r\n case Token.AtToken:\r\n return '@';\r\n case Token.ClassKeyword:\r\n return 'class';\r\n case Token.InterfaceKeyword:\r\n return 'interface';\r\n case Token.TypeKeyword:\r\n return 'type';\r\n case Token.EnumKeyword:\r\n return 'enum';\r\n case Token.NamespaceKeyword:\r\n return 'namespace';\r\n case Token.FunctionKeyword:\r\n return 'function';\r\n case Token.VarKeyword:\r\n return 'var';\r\n case Token.ConstructorKeyword:\r\n return 'constructor';\r\n case Token.MemberKeyword:\r\n return 'member';\r\n case Token.EventKeyword:\r\n return 'event';\r\n case Token.CallKeyword:\r\n return 'call';\r\n case Token.NewKeyword:\r\n return 'new';\r\n case Token.IndexKeyword:\r\n return 'index';\r\n case Token.ComplexKeyword:\r\n return 'complex';\r\n case Token.None:\r\n return '<none>';\r\n case Token.EofToken:\r\n return '<eof>';\r\n case Token.DecimalDigits:\r\n return '<decimal digits>';\r\n case Token.String:\r\n return '<string>';\r\n case Token.Text:\r\n return '<text>';\r\n case Token.ModuleSource:\r\n return '<module source>';\r\n }\r\n}\r\n\r\nclass Scanner {\r\n private _tokenPos: number;\r\n private _pos: number;\r\n private _text: string;\r\n private _token: Token;\r\n private _stringIsUnterminated: boolean;\r\n\r\n public constructor(text: string) {\r\n this._pos = 0;\r\n this._tokenPos = 0;\r\n this._stringIsUnterminated = false;\r\n this._token = Token.None;\r\n this._text = text;\r\n }\r\n\r\n public get stringIsUnterminated(): boolean {\r\n return this._stringIsUnterminated;\r\n }\r\n\r\n public get text(): string {\r\n return this._text;\r\n }\r\n\r\n public get tokenText(): string {\r\n return this._text.slice(this._tokenPos, this._pos);\r\n }\r\n\r\n public get eof(): boolean {\r\n return this._pos >= this._text.length;\r\n }\r\n\r\n public token(): Token {\r\n return this._token;\r\n }\r\n\r\n public speculate<T>(cb: (accept: () => void) => T): T {\r\n const tokenPos: number = this._tokenPos;\r\n const pos: number = this._pos;\r\n const text: string = this._text;\r\n const token: Token = this._token;\r\n const stringIsUnterminated: boolean = this._stringIsUnterminated;\r\n let accepted: boolean = false;\r\n try {\r\n const accept: () => void = () => {\r\n accepted = true;\r\n };\r\n return cb(accept);\r\n } finally {\r\n if (!accepted) {\r\n this._tokenPos = tokenPos;\r\n this._pos = pos;\r\n this._text = text;\r\n this._token = token;\r\n this._stringIsUnterminated = stringIsUnterminated;\r\n }\r\n }\r\n }\r\n\r\n public scan(): Token {\r\n if (!this.eof) {\r\n this._tokenPos = this._pos;\r\n this._stringIsUnterminated = false;\r\n while (!this.eof) {\r\n const ch: string = this._text.charAt(this._pos++);\r\n switch (ch) {\r\n case '{':\r\n return (this._token = Token.OpenBraceToken);\r\n case '}':\r\n return (this._token = Token.CloseBraceToken);\r\n case '(':\r\n return (this._token = Token.OpenParenToken);\r\n case ')':\r\n return (this._token = Token.CloseParenToken);\r\n case '[':\r\n return (this._token = Token.OpenBracketToken);\r\n case ']':\r\n return (this._token = Token.CloseBracketToken);\r\n case '!':\r\n return (this._token = Token.ExclamationToken);\r\n case '.':\r\n return (this._token = Token.DotToken);\r\n case '#':\r\n return (this._token = Token.HashToken);\r\n case '~':\r\n return (this._token = Token.TildeToken);\r\n case ':':\r\n return (this._token = Token.ColonToken);\r\n case ',':\r\n return (this._token = Token.CommaToken);\r\n case '@':\r\n return (this._token = Token.AtToken);\r\n case '\"':\r\n this.scanString();\r\n return (this._token = Token.String);\r\n default:\r\n this.scanText();\r\n return (this._token = Token.Text);\r\n }\r\n }\r\n }\r\n return (this._token = Token.EofToken);\r\n }\r\n\r\n public rescanModuleSource(): Token {\r\n switch (this._token) {\r\n case Token.ModuleSource:\r\n case Token.ExclamationToken:\r\n case Token.EofToken:\r\n return this._token;\r\n }\r\n return this.speculate((accept) => {\r\n if (!this.eof) {\r\n this._pos = this._tokenPos;\r\n this._stringIsUnterminated = false;\r\n let scanned: 'string' | 'other' | 'none' = 'none';\r\n while (!this.eof) {\r\n const ch: string = this._text[this._pos];\r\n if (ch === '!') {\r\n if (scanned === 'none') {\r\n return this._token;\r\n }\r\n accept();\r\n return (this._token = Token.ModuleSource);\r\n }\r\n this._pos++;\r\n if (ch === '\"') {\r\n if (scanned === 'other') {\r\n // strings not allowed after scanning any other characters\r\n return this._token;\r\n }\r\n scanned = 'string';\r\n this.scanString();\r\n } else {\r\n if (scanned === 'string') {\r\n // no other tokens allowed after string\r\n return this._token;\r\n }\r\n scanned = 'other';\r\n if (!isPunctuator(ch)) {\r\n this.scanText();\r\n }\r\n }\r\n }\r\n }\r\n return this._token;\r\n });\r\n }\r\n\r\n public rescanMeaning(): Token {\r\n if (this._token === Token.Text) {\r\n const tokenText: string = this.tokenText;\r\n switch (tokenText) {\r\n case 'class':\r\n return (this._token = Token.ClassKeyword);\r\n case 'interface':\r\n return (this._token = Token.InterfaceKeyword);\r\n case 'type':\r\n return (this._token = Token.TypeKeyword);\r\n case 'enum':\r\n return (this._token = Token.EnumKeyword);\r\n case 'namespace':\r\n return (this._token = Token.NamespaceKeyword);\r\n case 'function':\r\n return (this._token = Token.FunctionKeyword);\r\n case 'var':\r\n return (this._token = Token.VarKeyword);\r\n case 'constructor':\r\n return (this._token = Token.ConstructorKeyword);\r\n case 'member':\r\n return (this._token = Token.MemberKeyword);\r\n case 'event':\r\n return (this._token = Token.EventKeyword);\r\n case 'call':\r\n return (this._token = Token.CallKeyword);\r\n case 'new':\r\n return (this._token = Token.NewKeyword);\r\n case 'index':\r\n return (this._token = Token.IndexKeyword);\r\n case 'complex':\r\n return (this._token = Token.ComplexKeyword);\r\n }\r\n }\r\n return this._token;\r\n }\r\n\r\n public rescanDecimalDigits(): Token {\r\n if (this._token === Token.Text) {\r\n const tokenText: string = this.tokenText;\r\n if (/^\\d+$/.test(tokenText)) {\r\n return (this._token = Token.DecimalDigits);\r\n }\r\n }\r\n return this._token;\r\n }\r\n\r\n private scanString(): void {\r\n while (!this.eof) {\r\n const ch: string = this._text.charAt(this._pos++);\r\n switch (ch) {\r\n case '\"':\r\n return;\r\n case '\\\\':\r\n this.scanEscapeSequence();\r\n break;\r\n default:\r\n if (isLineTerminator(ch)) {\r\n this._stringIsUnterminated = true;\r\n return;\r\n }\r\n }\r\n }\r\n this._stringIsUnterminated = true;\r\n }\r\n\r\n private scanEscapeSequence(): void {\r\n if (this.eof) {\r\n this._stringIsUnterminated = true;\r\n return;\r\n }\r\n\r\n const ch: string = this._text.charAt(this._pos);\r\n\r\n // EscapeSequence:: CharacterEscapeSequence\r\n if (isCharacterEscapeSequence(ch)) {\r\n this._pos++;\r\n return;\r\n }\r\n\r\n // EscapeSequence:: `0` [lookahead != DecimalDigit]\r\n if (\r\n ch === '0' &&\r\n (this._pos + 1 === this._text.length || !isDecimalDigit(this._text.charAt(this._pos + 1)))\r\n ) {\r\n this._pos++;\r\n return;\r\n }\r\n\r\n // EscapeSequence:: HexEscapeSequence\r\n if (\r\n ch === 'x' &&\r\n this._pos + 3 <= this._text.length &&\r\n isHexDigit(this._text.charAt(this._pos + 1)) &&\r\n isHexDigit(this._text.charAt(this._pos + 2))\r\n ) {\r\n this._pos += 3;\r\n return;\r\n }\r\n\r\n // EscapeSequence:: UnicodeEscapeSequence\r\n // UnicodeEscapeSequence:: `u` Hex4Digits\r\n if (\r\n ch === 'u' &&\r\n this._pos + 5 <= this._text.length &&\r\n isHexDigit(this._text.charAt(this._pos + 1)) &&\r\n isHexDigit(this._text.charAt(this._pos + 2)) &&\r\n isHexDigit(this._text.charAt(this._pos + 3)) &&\r\n isHexDigit(this._text.charAt(this._pos + 4))\r\n ) {\r\n this._pos += 5;\r\n return;\r\n }\r\n\r\n // EscapeSequence:: UnicodeEscapeSequence\r\n // UnicodeEscapeSequence:: `u` `{` CodePoint `}`\r\n if (ch === 'u' && this._pos + 4 <= this._text.length && this._text.charAt(this._pos + 1) === '{') {\r\n let hexDigits: string = this._text.charAt(this._pos + 2);\r\n if (isHexDigit(hexDigits)) {\r\n for (let i: number = this._pos + 3; i < this._text.length; i++) {\r\n const ch2: string = this._text.charAt(i);\r\n if (ch2 === '}') {\r\n const mv: number = parseInt(hexDigits, 16);\r\n if (mv <= 0x10ffff) {\r\n this._pos = i + 1;\r\n return;\r\n }\r\n break;\r\n }\r\n if (!isHexDigit(ch2)) {\r\n hexDigits += ch2;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this._stringIsUnterminated = true;\r\n }\r\n\r\n private scanText(): void {\r\n while (this._pos < this._text.length) {\r\n const ch: string = this._text.charAt(this._pos);\r\n if (isPunctuator(ch) || ch === '\"') {\r\n return;\r\n }\r\n this._pos++;\r\n }\r\n }\r\n}\r\n\r\nclass Parser {\r\n private _errors: string[];\r\n private _scanner: Scanner;\r\n\r\n public constructor(text: string) {\r\n this._errors = [];\r\n this._scanner = new Scanner(text);\r\n this._scanner.scan();\r\n }\r\n\r\n public get eof(): boolean {\r\n return this.token() === Token.EofToken;\r\n }\r\n\r\n public get errors(): readonly string[] {\r\n return this._errors;\r\n }\r\n\r\n public parseDeclarationReference(): DeclarationReference {\r\n let source: ModuleSource | GlobalSource | undefined;\r\n let navigation: Navigation.Locals | undefined;\r\n let symbol: SymbolReference | undefined;\r\n if (this.optionalToken(Token.ExclamationToken)) {\r\n // Reference to global symbol\r\n source = GlobalSource.instance;\r\n } else if (this._scanner.rescanModuleSource() === Token.ModuleSource) {\r\n source = this.parseModuleSource();\r\n // Check for optional `~` navigation token.\r\n if (this.optionalToken(Token.TildeToken)) {\r\n navigation = Navigation.Locals;\r\n }\r\n }\r\n if (this.isStartOfComponent()) {\r\n symbol = this.parseSymbol();\r\n } else if (this.token() === Token.ColonToken) {\r\n symbol = this.parseSymbolRest(new ComponentRoot(new ComponentString('', /*userEscaped*/ true)));\r\n }\r\n return new DeclarationReference(source, navigation, symbol);\r\n }\r\n\r\n public parseModuleSourceString(): string {\r\n this._scanner.rescanModuleSource();\r\n return this.parseTokenString(Token.ModuleSource, 'Module source');\r\n }\r\n\r\n public parseComponentString(): string {\r\n switch (this._scanner.token()) {\r\n case Token.String:\r\n return this.parseString();\r\n default:\r\n return this.parseComponentCharacters();\r\n }\r\n }\r\n\r\n private token(): Token {\r\n return this._scanner.token();\r\n }\r\n\r\n private parseModuleSource(): ModuleSource | undefined {\r\n const source: string = this.parseModuleSourceString();\r\n this.expectToken(Token.ExclamationToken);\r\n return new ParsedModuleSource(source, /*userEscaped*/ true);\r\n }\r\n\r\n private parseSymbol(): SymbolReference {\r\n const component: ComponentPath = this.parseComponentRest(this.parseRootComponent());\r\n return this.parseSymbolRest(component);\r\n }\r\n\r\n private parseSymbolRest(component: ComponentPath): SymbolReference {\r\n let meaning: Meaning | undefined;\r\n let overloadIndex: number | undefined;\r\n if (this.optionalToken(Token.ColonToken)) {\r\n meaning = this.tryParseMeaning();\r\n overloadIndex = this.tryParseOverloadIndex(!!meaning);\r\n }\r\n\r\n return new SymbolReference(component, { meaning, overloadIndex });\r\n }\r\n\r\n private parseRootComponent(): ComponentPath {\r\n if (!this.isStartOfComponent()) {\r\n return this.fail(\r\n 'Component expected',\r\n new ComponentRoot(new ComponentString('', /*userEscaped*/ true))\r\n );\r\n }\r\n\r\n const component: Component = this.parseComponent();\r\n return new ComponentRoot(component);\r\n }\r\n\r\n private parseComponentRest(component: ComponentPath): ComponentPath {\r\n for (;;) {\r\n switch (this.token()) {\r\n case Token.DotToken:\r\n case Token.HashToken:\r\n case Token.TildeToken:\r\n const navigation: Navigation = this.parseNavigation();\r\n const right: Component = this.parseComponent();\r\n component = new ComponentNavigation(component, navigation, right);\r\n break;\r\n default:\r\n return component;\r\n }\r\n }\r\n }\r\n\r\n private parseNavigation(): Navigation {\r\n switch (this._scanner.token()) {\r\n case Token.DotToken:\r\n return this._scanner.scan(), Navigation.Exports;\r\n case Token.HashToken:\r\n return this._scanner.scan(), Navigation.Members;\r\n case Token.TildeToken:\r\n return this._scanner.scan(), Navigation.Locals;\r\n default:\r\n return this.fail(\"Expected '.', '#', or '~'\", Navigation.Exports);\r\n }\r\n }\r\n\r\n private tryParseMeaning(): Meaning | undefined {\r\n switch (this._scanner.rescanMeaning()) {\r\n case Token.ClassKeyword:\r\n return this._scanner.scan(), Meaning.Class;\r\n case Token.InterfaceKeyword:\r\n return this._scanner.scan(), Meaning.Interface;\r\n case Token.TypeKeyword:\r\n return this._scanner.scan(), Meaning.TypeAlias;\r\n case Token.EnumKeyword:\r\n return this._scanner.scan(), Meaning.Enum;\r\n case Token.NamespaceKeyword:\r\n return this._scanner.scan(), Meaning.Namespace;\r\n case Token.FunctionKeyword:\r\n return this._scanner.scan(), Meaning.Function;\r\n case Token.VarKeyword:\r\n return this._scanner.scan(), Meaning.Variable;\r\n case Token.ConstructorKeyword:\r\n return this._scanner.scan(), Meaning.Constructor;\r\n case Token.MemberKeyword:\r\n return this._scanner.scan(), Meaning.Member;\r\n case Token.EventKeyword:\r\n return this._scanner.scan(), Meaning.Event;\r\n case Token.CallKeyword:\r\n return this._scanner.scan(), Meaning.CallSignature;\r\n case Token.NewKeyword:\r\n return this._scanner.scan(), Meaning.ConstructSignature;\r\n case Token.IndexKeyword:\r\n return this._scanner.scan(), Meaning.IndexSignature;\r\n case Token.ComplexKeyword:\r\n return this._scanner.scan(), Meaning.ComplexType;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n private tryParseOverloadIndex(hasMeaning: boolean): number | undefined {\r\n if (this.optionalToken(Token.OpenParenToken)) {\r\n const overloadIndex: number = this.parseDecimalDigits();\r\n this.expectToken(Token.CloseParenToken);\r\n return overloadIndex;\r\n } else if (!hasMeaning) {\r\n return this.parseDecimalDigits();\r\n }\r\n return undefined;\r\n }\r\n\r\n private parseDecimalDigits(): number {\r\n switch (this._scanner.rescanDecimalDigits()) {\r\n case Token.DecimalDigits:\r\n const value: number = +this._scanner.tokenText;\r\n this._scanner.scan();\r\n return value;\r\n default:\r\n return this.fail('Decimal digit expected', 0);\r\n }\r\n }\r\n\r\n private isStartOfComponent(): boolean {\r\n switch (this.token()) {\r\n case Token.Text:\r\n case Token.String:\r\n case Token.OpenBracketToken:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private parseComponentCharacters(): string {\r\n let text: string = '';\r\n for (;;) {\r\n switch (this._scanner.token()) {\r\n case Token.Text:\r\n text += this.parseText();\r\n break;\r\n default:\r\n return text;\r\n }\r\n }\r\n }\r\n\r\n private parseTokenString(token: Token, tokenString?: string): string {\r\n if (this._scanner.token() === token) {\r\n const text: string = this._scanner.tokenText;\r\n const stringIsUnterminated: boolean = this._scanner.stringIsUnterminated;\r\n this._scanner.scan();\r\n if (stringIsUnterminated) {\r\n return this.fail(`${tokenString || tokenToString(token)} is unterminated`, text);\r\n }\r\n return text;\r\n }\r\n return this.fail(`${tokenString || tokenToString(token)} expected`, '');\r\n }\r\n\r\n private parseText(): string {\r\n return this.parseTokenString(Token.Text, 'Text');\r\n }\r\n\r\n private parseString(): string {\r\n return this.parseTokenString(Token.String, 'String');\r\n }\r\n\r\n private parseComponent(): Component {\r\n switch (this._scanner.token()) {\r\n case Token.OpenBracketToken:\r\n return this.parseBracketedComponent();\r\n default:\r\n return new ParsedComponentString(this.parseComponentString(), /*userEscaped*/ true);\r\n }\r\n }\r\n\r\n private parseBracketedComponent(): ComponentReference {\r\n this.expectToken(Token.OpenBracketToken);\r\n const reference: DeclarationReference = this.parseDeclarationReference();\r\n this.expectToken(Token.CloseBracketToken);\r\n return new ComponentReference(reference);\r\n }\r\n\r\n private optionalToken(token: Token): boolean {\r\n if (this._scanner.token() === token) {\r\n this._scanner.scan();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private expectToken(token: Token, message?: string): void {\r\n if (this._scanner.token() !== token) {\r\n const expected: string = tokenToString(token);\r\n const actual: string = tokenToString(this._scanner.token());\r\n return this.fail(message || `Expected token '${expected}', received '${actual}' instead.`, undefined);\r\n }\r\n this._scanner.scan();\r\n }\r\n\r\n private fail<T>(message: string, fallback: T): T {\r\n this._errors.push(message);\r\n return fallback;\r\n }\r\n}\r\n\r\nfunction formatNavigation(navigation: Navigation | undefined): string {\r\n switch (navigation) {\r\n case Navigation.Exports:\r\n return '.';\r\n case Navigation.Members:\r\n return '#';\r\n case Navigation.Locals:\r\n return '~';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nfunction isCharacterEscapeSequence(ch: string): boolean {\r\n return isSingleEscapeCharacter(ch) || isNonEscapeCharacter(ch);\r\n}\r\n\r\nfunction isSingleEscapeCharacter(ch: string): boolean {\r\n switch (ch) {\r\n case \"'\":\r\n case '\"':\r\n case '\\\\':\r\n case 'b':\r\n case 'f':\r\n case 'n':\r\n case 'r':\r\n case 't':\r\n case 'v':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction isNonEscapeCharacter(ch: string): boolean {\r\n return !isEscapeCharacter(ch) && !isLineTerminator(ch);\r\n}\r\n\r\nfunction isEscapeCharacter(ch: string): boolean {\r\n switch (ch) {\r\n case 'x':\r\n case 'u':\r\n return true;\r\n default:\r\n return isSingleEscapeCharacter(ch) || isDecimalDigit(ch);\r\n }\r\n}\r\n\r\nfunction isLineTerminator(ch: string): boolean {\r\n switch (ch) {\r\n case '\\r':\r\n case '\\n':\r\n // TODO: <LS>, <PS>\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction isDecimalDigit(ch: string): boolean {\r\n switch (ch) {\r\n case '0':\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction isHexDigit(ch: string): boolean {\r\n switch (ch) {\r\n case 'a':\r\n case 'b':\r\n case 'c':\r\n case 'd':\r\n case 'e':\r\n case 'f':\r\n case 'A':\r\n case 'B':\r\n case 'C':\r\n case 'D':\r\n case 'E':\r\n case 'F':\r\n return true;\r\n default:\r\n return isDecimalDigit(ch);\r\n }\r\n}\r\n\r\nfunction isPunctuator(ch: string): boolean {\r\n switch (ch) {\r\n case '{':\r\n case '}':\r\n case '(':\r\n case ')':\r\n case '[':\r\n case ']':\r\n case '!':\r\n case '.':\r\n case '#':\r\n case '~':\r\n case ':':\r\n case ',':\r\n case '@':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction escapeComponentIfNeeded(text: string, userEscaped?: boolean): string {\r\n if (userEscaped) {\r\n if (!DeclarationReference.isWellFormedComponentString(text)) {\r\n throw new SyntaxError(`Invalid Component '${text}'`);\r\n }\r\n return text;\r\n }\r\n return DeclarationReference.escapeComponentString(text);\r\n}\r\n\r\nfunction escapeModuleSourceIfNeeded(text: string, userEscaped?: boolean): string {\r\n if (userEscaped) {\r\n if (!DeclarationReference.isWellFormedModuleSourceString(text)) {\r\n throw new SyntaxError(`Invalid Module source '${text}'`);\r\n }\r\n return text;\r\n }\r\n return DeclarationReference.escapeModuleSourceString(text);\r\n}\r\n"]} |