@microsoft/api-extractor-model 7.14.0 → 7.15.3
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/CHANGELOG.json +1565 -1514
- package/CHANGELOG.md +653 -631
- package/README.md +68 -68
- package/dist/rollup.d.ts +2 -2
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/aedoc/AedocDefinitions.js.map +1 -1
- package/lib/aedoc/ReleaseTag.js.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/items/ApiDeclaredItem.js.map +1 -1
- package/lib/items/ApiDocumentedItem.js.map +1 -1
- package/lib/items/ApiItem.d.ts +1 -1
- package/lib/items/ApiItem.d.ts.map +1 -1
- package/lib/items/ApiItem.js +43 -14
- package/lib/items/ApiItem.js.map +1 -1
- package/lib/items/ApiPropertyItem.js.map +1 -1
- package/lib/mixins/ApiItemContainerMixin.js.map +1 -1
- package/lib/mixins/ApiNameMixin.js.map +1 -1
- package/lib/mixins/ApiOptionalMixin.js.map +1 -1
- package/lib/mixins/ApiParameterListMixin.js.map +1 -1
- package/lib/mixins/ApiReleaseTagMixin.js.map +1 -1
- package/lib/mixins/ApiReturnTypeMixin.js.map +1 -1
- package/lib/mixins/ApiStaticMixin.js.map +1 -1
- package/lib/mixins/ApiTypeParameterListMixin.js.map +1 -1
- package/lib/mixins/Excerpt.d.ts +1 -1
- package/lib/mixins/Excerpt.d.ts.map +1 -1
- package/lib/mixins/Excerpt.js +13 -1
- package/lib/mixins/Excerpt.js.map +1 -1
- package/lib/mixins/Mixin.js.map +1 -1
- package/lib/model/ApiCallSignature.js +3 -2
- package/lib/model/ApiCallSignature.js.map +1 -1
- package/lib/model/ApiClass.js +3 -2
- package/lib/model/ApiClass.js.map +1 -1
- package/lib/model/ApiConstructSignature.js +3 -2
- package/lib/model/ApiConstructSignature.js.map +1 -1
- package/lib/model/ApiConstructor.js +3 -2
- package/lib/model/ApiConstructor.js.map +1 -1
- package/lib/model/ApiEntryPoint.js +1 -1
- package/lib/model/ApiEntryPoint.js.map +1 -1
- package/lib/model/ApiEnum.js +4 -3
- package/lib/model/ApiEnum.js.map +1 -1
- package/lib/model/ApiEnumMember.js +2 -1
- package/lib/model/ApiEnumMember.js.map +1 -1
- package/lib/model/ApiFunction.js +3 -2
- package/lib/model/ApiFunction.js.map +1 -1
- package/lib/model/ApiIndexSignature.js +3 -2
- package/lib/model/ApiIndexSignature.js.map +1 -1
- package/lib/model/ApiInterface.js +3 -2
- package/lib/model/ApiInterface.js.map +1 -1
- package/lib/model/ApiMethod.js +4 -3
- package/lib/model/ApiMethod.js.map +1 -1
- package/lib/model/ApiMethodSignature.js +3 -2
- package/lib/model/ApiMethodSignature.js.map +1 -1
- package/lib/model/ApiModel.js +2 -2
- package/lib/model/ApiModel.js.map +1 -1
- package/lib/model/ApiNamespace.js +3 -2
- package/lib/model/ApiNamespace.js.map +1 -1
- package/lib/model/ApiPackage.js +2 -2
- package/lib/model/ApiPackage.js.map +1 -1
- package/lib/model/ApiProperty.js +4 -3
- package/lib/model/ApiProperty.js.map +1 -1
- package/lib/model/ApiPropertySignature.js +3 -2
- package/lib/model/ApiPropertySignature.js.map +1 -1
- package/lib/model/ApiTypeAlias.js +3 -2
- package/lib/model/ApiTypeAlias.js.map +1 -1
- package/lib/model/ApiVariable.js +3 -2
- package/lib/model/ApiVariable.js.map +1 -1
- package/lib/model/Deserializer.js +20 -19
- package/lib/model/Deserializer.js.map +1 -1
- package/lib/model/DeserializerContext.js.map +1 -1
- package/lib/model/HeritageType.js.map +1 -1
- package/lib/model/ModelReferenceResolver.js +8 -7
- package/lib/model/ModelReferenceResolver.js.map +1 -1
- package/lib/model/Parameter.js.map +1 -1
- package/lib/model/TypeParameter.js.map +1 -1
- package/package.json +6 -7
package/lib/model/ApiPackage.js
CHANGED
|
@@ -79,7 +79,7 @@ class ApiPackage extends (0, ApiItemContainerMixin_1.ApiItemContainerMixin)((0,
|
|
|
79
79
|
}
|
|
80
80
|
/** @override */
|
|
81
81
|
get kind() {
|
|
82
|
-
return
|
|
82
|
+
return ApiItem_1.ApiItemKind.Package;
|
|
83
83
|
}
|
|
84
84
|
/** @override */
|
|
85
85
|
get containerKey() {
|
|
@@ -102,7 +102,7 @@ class ApiPackage extends (0, ApiItemContainerMixin_1.ApiItemContainerMixin)((0,
|
|
|
102
102
|
}
|
|
103
103
|
/** @override */
|
|
104
104
|
addMember(member) {
|
|
105
|
-
if (member.kind !==
|
|
105
|
+
if (member.kind !== ApiItem_1.ApiItemKind.EntryPoint) {
|
|
106
106
|
throw new Error('Only items of type ApiEntryPoint may be added to an ApiPackage');
|
|
107
107
|
}
|
|
108
108
|
super.addMember(member);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiPackage.js","sourceRoot":"","sources":["../../src/model/ApiPackage.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { DeclarationReference } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\r\nimport { ApiItem, ApiItemKind, IApiItemJson } from '../items/ApiItem';\r\nimport { ApiItemContainerMixin, IApiItemContainerMixinOptions } from '../mixins/ApiItemContainerMixin';\r\nimport {\r\n JsonFile,\r\n IJsonFileSaveOptions,\r\n PackageJsonLookup,\r\n IPackageJson,\r\n JsonObject\r\n} from '@rushstack/node-core-library';\r\nimport { ApiDocumentedItem, IApiDocumentedItemOptions } from '../items/ApiDocumentedItem';\r\nimport { ApiEntryPoint } from './ApiEntryPoint';\r\nimport { IApiNameMixinOptions, ApiNameMixin } from '../mixins/ApiNameMixin';\r\nimport { DeserializerContext, ApiJsonSchemaVersion } from './DeserializerContext';\r\nimport { TSDocConfiguration } from '@microsoft/tsdoc';\r\nimport { TSDocConfigFile } from '@microsoft/tsdoc-config';\r\n\r\n/**\r\n * Constructor options for {@link ApiPackage}.\r\n * @public\r\n */\r\nexport interface IApiPackageOptions\r\n extends IApiItemContainerMixinOptions,\r\n IApiNameMixinOptions,\r\n IApiDocumentedItemOptions {\r\n tsdocConfiguration: TSDocConfiguration;\r\n}\r\n\r\nexport interface IApiPackageMetadataJson {\r\n /**\r\n * The NPM package name for the tool that wrote the *.api.json file.\r\n * For informational purposes only.\r\n */\r\n toolPackage: string;\r\n\r\n /**\r\n * The NPM package version for the tool that wrote the *.api.json file.\r\n * For informational purposes only.\r\n */\r\n toolVersion: string;\r\n\r\n /**\r\n * The schema version for the .api.json file format. Used for determining whether the file format is\r\n * supported, and for backwards compatibility.\r\n */\r\n schemaVersion: ApiJsonSchemaVersion;\r\n\r\n /**\r\n * To support forwards compatibility, the `oldestForwardsCompatibleVersion` field tracks the oldest schema version\r\n * whose corresponding deserializer could safely load this file.\r\n *\r\n * @remarks\r\n * Normally api-extractor-model should refuse to load a schema version that is newer than the latest version\r\n * that its deserializer understands. However, sometimes a schema change may merely introduce some new fields\r\n * without modifying or removing any existing fields. In this case, an older api-extractor-model library can\r\n * safely deserialize the newer version (by ignoring the extra fields that it doesn't recognize). The newer\r\n * serializer can use this field to communicate that.\r\n *\r\n * If present, the `oldestForwardsCompatibleVersion` must be less than or equal to\r\n * `IApiPackageMetadataJson.schemaVersion`.\r\n */\r\n oldestForwardsCompatibleVersion?: ApiJsonSchemaVersion;\r\n\r\n /**\r\n * The TSDoc configuration that was used when analyzing the API for this package.\r\n *\r\n * @remarks\r\n *\r\n * The structure of this objet is defined by the `@microsoft/tsdoc-config` library.\r\n * Normally this configuration is loaded from the project's tsdoc.json file. It is stored\r\n * in the .api.json file so that doc comments can be parsed accurately when loading the file.\r\n */\r\n tsdocConfig: JsonObject;\r\n}\r\n\r\nexport interface IApiPackageJson extends IApiItemJson {\r\n /**\r\n * A file header that stores metadata about the tool that wrote the *.api.json file.\r\n */\r\n metadata: IApiPackageMetadataJson;\r\n}\r\n\r\n/**\r\n * Options for {@link ApiPackage.saveToJsonFile}.\r\n * @public\r\n */\r\nexport interface IApiPackageSaveOptions extends IJsonFileSaveOptions {\r\n /**\r\n * Optionally specifies a value for the \"toolPackage\" field in the output .api.json data file;\r\n * otherwise, the value will be \"api-extractor-model\".\r\n */\r\n toolPackage?: string;\r\n\r\n /**\r\n * Optionally specifies a value for the \"toolVersion\" field in the output .api.json data file;\r\n * otherwise, the value will be the current version of the api-extractor-model package.\r\n */\r\n toolVersion?: string;\r\n\r\n /**\r\n * Set to true only when invoking API Extractor's test harness.\r\n *\r\n * @remarks\r\n * When `testMode` is true, the `toolVersion` field in the .api.json file is assigned an empty string\r\n * to prevent spurious diffs in output files tracked for tests.\r\n */\r\n testMode?: boolean;\r\n}\r\n\r\n/**\r\n * Represents an NPM package containing API declarations.\r\n *\r\n * @remarks\r\n *\r\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\r\n * API declarations.\r\n *\r\n * @public\r\n */\r\nexport class ApiPackage extends ApiItemContainerMixin(ApiNameMixin(ApiDocumentedItem)) {\r\n private readonly _tsdocConfiguration: TSDocConfiguration;\r\n\r\n public constructor(options: IApiPackageOptions) {\r\n super(options);\r\n\r\n this._tsdocConfiguration = options.tsdocConfiguration;\r\n }\r\n\r\n public static loadFromJsonFile(apiJsonFilename: string): ApiPackage {\r\n const jsonObject: IApiPackageJson = JsonFile.load(apiJsonFilename);\r\n\r\n if (!jsonObject || !jsonObject.metadata || typeof jsonObject.metadata.schemaVersion !== 'number') {\r\n throw new Error(\r\n `Error loading ${apiJsonFilename}:` +\r\n `\\nThe file format is not recognized; the \"metadata.schemaVersion\" field is missing or invalid`\r\n );\r\n }\r\n\r\n const schemaVersion: number = jsonObject.metadata.schemaVersion;\r\n\r\n if (schemaVersion < ApiJsonSchemaVersion.OLDEST_SUPPORTED) {\r\n throw new Error(\r\n `Error loading ${apiJsonFilename}:` +\r\n `\\nThe file format is version ${schemaVersion},` +\r\n ` whereas ${ApiJsonSchemaVersion.OLDEST_SUPPORTED} is the oldest version supported by this tool`\r\n );\r\n }\r\n\r\n let oldestForwardsCompatibleVersion: number = schemaVersion;\r\n if (jsonObject.metadata.oldestForwardsCompatibleVersion) {\r\n // Sanity check\r\n if (jsonObject.metadata.oldestForwardsCompatibleVersion > schemaVersion) {\r\n throw new Error(\r\n `Error loading ${apiJsonFilename}:` +\r\n `\\nInvalid file format; \"oldestForwardsCompatibleVersion\" cannot be newer than \"schemaVersion\"`\r\n );\r\n }\r\n oldestForwardsCompatibleVersion = jsonObject.metadata.oldestForwardsCompatibleVersion;\r\n }\r\n\r\n let versionToDeserialize: number = schemaVersion;\r\n if (versionToDeserialize > ApiJsonSchemaVersion.LATEST) {\r\n // If the file format is too new, can we treat it as some earlier compatible version\r\n // as indicated by oldestForwardsCompatibleVersion?\r\n versionToDeserialize = Math.max(oldestForwardsCompatibleVersion, ApiJsonSchemaVersion.LATEST);\r\n\r\n if (versionToDeserialize > ApiJsonSchemaVersion.LATEST) {\r\n // Nope, still too new\r\n throw new Error(\r\n `Error loading ${apiJsonFilename}:` +\r\n `\\nThe file format version ${schemaVersion} was written by a newer release of` +\r\n ` the api-extractor-model library; you may need to upgrade your software`\r\n );\r\n }\r\n }\r\n\r\n const tsdocConfiguration: TSDocConfiguration = new TSDocConfiguration();\r\n\r\n if (versionToDeserialize >= ApiJsonSchemaVersion.V_1004) {\r\n const tsdocConfigFile: TSDocConfigFile = TSDocConfigFile.loadFromObject(\r\n jsonObject.metadata.tsdocConfig\r\n );\r\n if (tsdocConfigFile.hasErrors) {\r\n throw new Error(`Error loading ${apiJsonFilename}:\\n` + tsdocConfigFile.getErrorSummary());\r\n }\r\n\r\n tsdocConfigFile.configureParser(tsdocConfiguration);\r\n }\r\n\r\n const context: DeserializerContext = new DeserializerContext({\r\n apiJsonFilename,\r\n toolPackage: jsonObject.metadata.toolPackage,\r\n toolVersion: jsonObject.metadata.toolVersion,\r\n versionToDeserialize: versionToDeserialize,\r\n tsdocConfiguration\r\n });\r\n\r\n return ApiItem.deserialize(jsonObject, context) as ApiPackage;\r\n }\r\n\r\n /** @override */\r\n public get kind(): ApiItemKind {\r\n return ApiItemKind.Package;\r\n }\r\n\r\n /** @override */\r\n public get containerKey(): string {\r\n // No prefix needed, because ApiPackage is the only possible member of an ApiModel\r\n return this.name;\r\n }\r\n\r\n public get entryPoints(): ReadonlyArray<ApiEntryPoint> {\r\n return this.members as ReadonlyArray<ApiEntryPoint>;\r\n }\r\n\r\n /**\r\n * The TSDoc configuration that was used when analyzing the API for this package.\r\n *\r\n * @remarks\r\n *\r\n * Normally this configuration is loaded from the project's tsdoc.json file. It is stored\r\n * in the .api.json file so that doc comments can be parsed accurately when loading the file.\r\n */\r\n public get tsdocConfiguration(): TSDocConfiguration {\r\n return this._tsdocConfiguration;\r\n }\r\n\r\n /** @override */\r\n public addMember(member: ApiEntryPoint): void {\r\n if (member.kind !== ApiItemKind.EntryPoint) {\r\n throw new Error('Only items of type ApiEntryPoint may be added to an ApiPackage');\r\n }\r\n super.addMember(member);\r\n }\r\n\r\n public findEntryPointsByPath(importPath: string): ReadonlyArray<ApiEntryPoint> {\r\n return this.findMembersByName(importPath) as ReadonlyArray<ApiEntryPoint>;\r\n }\r\n\r\n public saveToJsonFile(apiJsonFilename: string, options?: IApiPackageSaveOptions): void {\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n const packageJson: IPackageJson = PackageJsonLookup.loadOwnPackageJson(__dirname);\r\n\r\n const tsdocConfigFile: TSDocConfigFile = TSDocConfigFile.loadFromParser(this.tsdocConfiguration);\r\n const tsdocConfig: JsonObject = tsdocConfigFile.saveToObject();\r\n\r\n const jsonObject: IApiPackageJson = {\r\n metadata: {\r\n toolPackage: options.toolPackage || packageJson.name,\r\n // In test mode, we don't write the real version, since that would cause spurious diffs whenever\r\n // the version is bumped. Instead we write a placeholder string.\r\n toolVersion: options.testMode ? '[test mode]' : options.toolVersion || packageJson.version,\r\n schemaVersion: ApiJsonSchemaVersion.LATEST,\r\n oldestForwardsCompatibleVersion: ApiJsonSchemaVersion.OLDEST_FORWARDS_COMPATIBLE,\r\n tsdocConfig\r\n }\r\n } as IApiPackageJson;\r\n this.serializeInto(jsonObject);\r\n JsonFile.save(jsonObject, apiJsonFilename, options);\r\n }\r\n\r\n /** @beta @override */\r\n public buildCanonicalReference(): DeclarationReference {\r\n return DeclarationReference.package(this.name);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ApiPackage.js","sourceRoot":"","sources":["../../src/model/ApiPackage.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { DeclarationReference } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport { ApiItem, ApiItemKind, IApiItemJson } from '../items/ApiItem';\nimport { ApiItemContainerMixin, IApiItemContainerMixinOptions } from '../mixins/ApiItemContainerMixin';\nimport {\n JsonFile,\n IJsonFileSaveOptions,\n PackageJsonLookup,\n IPackageJson,\n JsonObject\n} from '@rushstack/node-core-library';\nimport { ApiDocumentedItem, IApiDocumentedItemOptions } from '../items/ApiDocumentedItem';\nimport { ApiEntryPoint } from './ApiEntryPoint';\nimport { IApiNameMixinOptions, ApiNameMixin } from '../mixins/ApiNameMixin';\nimport { DeserializerContext, ApiJsonSchemaVersion } from './DeserializerContext';\nimport { TSDocConfiguration } from '@microsoft/tsdoc';\nimport { TSDocConfigFile } from '@microsoft/tsdoc-config';\n\n/**\n * Constructor options for {@link ApiPackage}.\n * @public\n */\nexport interface IApiPackageOptions\n extends IApiItemContainerMixinOptions,\n IApiNameMixinOptions,\n IApiDocumentedItemOptions {\n tsdocConfiguration: TSDocConfiguration;\n}\n\nexport interface IApiPackageMetadataJson {\n /**\n * The NPM package name for the tool that wrote the *.api.json file.\n * For informational purposes only.\n */\n toolPackage: string;\n\n /**\n * The NPM package version for the tool that wrote the *.api.json file.\n * For informational purposes only.\n */\n toolVersion: string;\n\n /**\n * The schema version for the .api.json file format. Used for determining whether the file format is\n * supported, and for backwards compatibility.\n */\n schemaVersion: ApiJsonSchemaVersion;\n\n /**\n * To support forwards compatibility, the `oldestForwardsCompatibleVersion` field tracks the oldest schema version\n * whose corresponding deserializer could safely load this file.\n *\n * @remarks\n * Normally api-extractor-model should refuse to load a schema version that is newer than the latest version\n * that its deserializer understands. However, sometimes a schema change may merely introduce some new fields\n * without modifying or removing any existing fields. In this case, an older api-extractor-model library can\n * safely deserialize the newer version (by ignoring the extra fields that it doesn't recognize). The newer\n * serializer can use this field to communicate that.\n *\n * If present, the `oldestForwardsCompatibleVersion` must be less than or equal to\n * `IApiPackageMetadataJson.schemaVersion`.\n */\n oldestForwardsCompatibleVersion?: ApiJsonSchemaVersion;\n\n /**\n * The TSDoc configuration that was used when analyzing the API for this package.\n *\n * @remarks\n *\n * The structure of this objet is defined by the `@microsoft/tsdoc-config` library.\n * Normally this configuration is loaded from the project's tsdoc.json file. It is stored\n * in the .api.json file so that doc comments can be parsed accurately when loading the file.\n */\n tsdocConfig: JsonObject;\n}\n\nexport interface IApiPackageJson extends IApiItemJson {\n /**\n * A file header that stores metadata about the tool that wrote the *.api.json file.\n */\n metadata: IApiPackageMetadataJson;\n}\n\n/**\n * Options for {@link ApiPackage.saveToJsonFile}.\n * @public\n */\nexport interface IApiPackageSaveOptions extends IJsonFileSaveOptions {\n /**\n * Optionally specifies a value for the \"toolPackage\" field in the output .api.json data file;\n * otherwise, the value will be \"api-extractor-model\".\n */\n toolPackage?: string;\n\n /**\n * Optionally specifies a value for the \"toolVersion\" field in the output .api.json data file;\n * otherwise, the value will be the current version of the api-extractor-model package.\n */\n toolVersion?: string;\n\n /**\n * Set to true only when invoking API Extractor's test harness.\n *\n * @remarks\n * When `testMode` is true, the `toolVersion` field in the .api.json file is assigned an empty string\n * to prevent spurious diffs in output files tracked for tests.\n */\n testMode?: boolean;\n}\n\n/**\n * Represents an NPM package containing API declarations.\n *\n * @remarks\n *\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\n * API declarations.\n *\n * @public\n */\nexport class ApiPackage extends ApiItemContainerMixin(ApiNameMixin(ApiDocumentedItem)) {\n private readonly _tsdocConfiguration: TSDocConfiguration;\n\n public constructor(options: IApiPackageOptions) {\n super(options);\n\n this._tsdocConfiguration = options.tsdocConfiguration;\n }\n\n public static loadFromJsonFile(apiJsonFilename: string): ApiPackage {\n const jsonObject: IApiPackageJson = JsonFile.load(apiJsonFilename);\n\n if (!jsonObject || !jsonObject.metadata || typeof jsonObject.metadata.schemaVersion !== 'number') {\n throw new Error(\n `Error loading ${apiJsonFilename}:` +\n `\\nThe file format is not recognized; the \"metadata.schemaVersion\" field is missing or invalid`\n );\n }\n\n const schemaVersion: number = jsonObject.metadata.schemaVersion;\n\n if (schemaVersion < ApiJsonSchemaVersion.OLDEST_SUPPORTED) {\n throw new Error(\n `Error loading ${apiJsonFilename}:` +\n `\\nThe file format is version ${schemaVersion},` +\n ` whereas ${ApiJsonSchemaVersion.OLDEST_SUPPORTED} is the oldest version supported by this tool`\n );\n }\n\n let oldestForwardsCompatibleVersion: number = schemaVersion;\n if (jsonObject.metadata.oldestForwardsCompatibleVersion) {\n // Sanity check\n if (jsonObject.metadata.oldestForwardsCompatibleVersion > schemaVersion) {\n throw new Error(\n `Error loading ${apiJsonFilename}:` +\n `\\nInvalid file format; \"oldestForwardsCompatibleVersion\" cannot be newer than \"schemaVersion\"`\n );\n }\n oldestForwardsCompatibleVersion = jsonObject.metadata.oldestForwardsCompatibleVersion;\n }\n\n let versionToDeserialize: number = schemaVersion;\n if (versionToDeserialize > ApiJsonSchemaVersion.LATEST) {\n // If the file format is too new, can we treat it as some earlier compatible version\n // as indicated by oldestForwardsCompatibleVersion?\n versionToDeserialize = Math.max(oldestForwardsCompatibleVersion, ApiJsonSchemaVersion.LATEST);\n\n if (versionToDeserialize > ApiJsonSchemaVersion.LATEST) {\n // Nope, still too new\n throw new Error(\n `Error loading ${apiJsonFilename}:` +\n `\\nThe file format version ${schemaVersion} was written by a newer release of` +\n ` the api-extractor-model library; you may need to upgrade your software`\n );\n }\n }\n\n const tsdocConfiguration: TSDocConfiguration = new TSDocConfiguration();\n\n if (versionToDeserialize >= ApiJsonSchemaVersion.V_1004) {\n const tsdocConfigFile: TSDocConfigFile = TSDocConfigFile.loadFromObject(\n jsonObject.metadata.tsdocConfig\n );\n if (tsdocConfigFile.hasErrors) {\n throw new Error(`Error loading ${apiJsonFilename}:\\n` + tsdocConfigFile.getErrorSummary());\n }\n\n tsdocConfigFile.configureParser(tsdocConfiguration);\n }\n\n const context: DeserializerContext = new DeserializerContext({\n apiJsonFilename,\n toolPackage: jsonObject.metadata.toolPackage,\n toolVersion: jsonObject.metadata.toolVersion,\n versionToDeserialize: versionToDeserialize,\n tsdocConfiguration\n });\n\n return ApiItem.deserialize(jsonObject, context) as ApiPackage;\n }\n\n /** @override */\n public get kind(): ApiItemKind {\n return ApiItemKind.Package;\n }\n\n /** @override */\n public get containerKey(): string {\n // No prefix needed, because ApiPackage is the only possible member of an ApiModel\n return this.name;\n }\n\n public get entryPoints(): ReadonlyArray<ApiEntryPoint> {\n return this.members as ReadonlyArray<ApiEntryPoint>;\n }\n\n /**\n * The TSDoc configuration that was used when analyzing the API for this package.\n *\n * @remarks\n *\n * Normally this configuration is loaded from the project's tsdoc.json file. It is stored\n * in the .api.json file so that doc comments can be parsed accurately when loading the file.\n */\n public get tsdocConfiguration(): TSDocConfiguration {\n return this._tsdocConfiguration;\n }\n\n /** @override */\n public addMember(member: ApiEntryPoint): void {\n if (member.kind !== ApiItemKind.EntryPoint) {\n throw new Error('Only items of type ApiEntryPoint may be added to an ApiPackage');\n }\n super.addMember(member);\n }\n\n public findEntryPointsByPath(importPath: string): ReadonlyArray<ApiEntryPoint> {\n return this.findMembersByName(importPath) as ReadonlyArray<ApiEntryPoint>;\n }\n\n public saveToJsonFile(apiJsonFilename: string, options?: IApiPackageSaveOptions): void {\n if (!options) {\n options = {};\n }\n\n const packageJson: IPackageJson = PackageJsonLookup.loadOwnPackageJson(__dirname);\n\n const tsdocConfigFile: TSDocConfigFile = TSDocConfigFile.loadFromParser(this.tsdocConfiguration);\n const tsdocConfig: JsonObject = tsdocConfigFile.saveToObject();\n\n const jsonObject: IApiPackageJson = {\n metadata: {\n toolPackage: options.toolPackage || packageJson.name,\n // In test mode, we don't write the real version, since that would cause spurious diffs whenever\n // the version is bumped. Instead we write a placeholder string.\n toolVersion: options.testMode ? '[test mode]' : options.toolVersion || packageJson.version,\n schemaVersion: ApiJsonSchemaVersion.LATEST,\n oldestForwardsCompatibleVersion: ApiJsonSchemaVersion.OLDEST_FORWARDS_COMPATIBLE,\n tsdocConfig\n }\n } as IApiPackageJson;\n this.serializeInto(jsonObject);\n JsonFile.save(jsonObject, apiJsonFilename, options);\n }\n\n /** @beta @override */\n public buildCanonicalReference(): DeclarationReference {\n return DeclarationReference.package(this.name);\n }\n}\n"]}
|
package/lib/model/ApiProperty.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.ApiProperty = void 0;
|
|
6
6
|
const DeclarationReference_1 = require("@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference");
|
|
7
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
7
8
|
const ApiStaticMixin_1 = require("../mixins/ApiStaticMixin");
|
|
8
9
|
const ApiPropertyItem_1 = require("../items/ApiPropertyItem");
|
|
9
10
|
/**
|
|
@@ -46,15 +47,15 @@ class ApiProperty extends (0, ApiStaticMixin_1.ApiStaticMixin)(ApiPropertyItem_1
|
|
|
46
47
|
}
|
|
47
48
|
static getContainerKey(name, isStatic) {
|
|
48
49
|
if (isStatic) {
|
|
49
|
-
return `${name}|${
|
|
50
|
+
return `${name}|${ApiItem_1.ApiItemKind.Property}|static`;
|
|
50
51
|
}
|
|
51
52
|
else {
|
|
52
|
-
return `${name}|${
|
|
53
|
+
return `${name}|${ApiItem_1.ApiItemKind.Property}|instance`;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
/** @override */
|
|
56
57
|
get kind() {
|
|
57
|
-
return
|
|
58
|
+
return ApiItem_1.ApiItemKind.Property;
|
|
58
59
|
}
|
|
59
60
|
/** @override */
|
|
60
61
|
get containerKey() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiProperty.js","sourceRoot":"","sources":["../../src/model/ApiProperty.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;
|
|
1
|
+
{"version":3,"file":"ApiProperty.js","sourceRoot":"","sources":["../../src/model/ApiProperty.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;AACjE,8CAA+C;AAC/C,6DAAkF;AAClF,8DAAoF;AAQpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAa,WAAY,SAAQ,IAAA,+BAAc,EAAC,iCAAe,CAAC;IAC9D,YAAmB,OAA4B;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,QAAiB;QAC3D,IAAI,QAAQ,EAAE;YACZ,OAAO,GAAG,IAAI,IAAI,qBAAW,CAAC,QAAQ,SAAS,CAAC;SACjD;aAAM;YACL,OAAO,GAAG,IAAI,IAAI,qBAAW,CAAC,QAAQ,WAAW,CAAC;SACnD;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,OAAO,qBAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,gBAAgB;IAChB,IAAW,YAAY;QACrB,OAAO,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,sBAAsB;IACf,uBAAuB;QAC5B,MAAM,aAAa,GAAc,2CAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,2CAAoB,CAAC,KAAK,EAAE,CAAC;aACjF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,mBAAoB,CAAC,kBAAmB,EAAE,aAAa,CAAC;aACzF,WAAW,uBAAgB,CAAC;IACjC,CAAC;CACF;AA9BD,kCA8BC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n DeclarationReference,\n Meaning,\n Navigation,\n Component\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport { ApiItemKind } from '../items/ApiItem';\nimport { ApiStaticMixin, IApiStaticMixinOptions } from '../mixins/ApiStaticMixin';\nimport { ApiPropertyItem, IApiPropertyItemOptions } from '../items/ApiPropertyItem';\n\n/**\n * Constructor options for {@link ApiProperty}.\n * @public\n */\nexport interface IApiPropertyOptions extends IApiPropertyItemOptions, IApiStaticMixinOptions {}\n\n/**\n * Represents a TypeScript property declaration that belongs to an `ApiClass`.\n *\n * @remarks\n *\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\n * API declarations.\n *\n * `ApiProperty` represents a TypeScript declaration such as the `width` and `height` members in this example:\n *\n * ```ts\n * export class Widget {\n * public width: number = 100;\n *\n * public get height(): number {\n * if (this.isSquashed()) {\n * return 0;\n * } else {\n * return this.clientArea.height;\n * }\n * }\n * }\n * ```\n *\n * Note that member variables are also considered to be properties.\n *\n * If the property has both a getter function and setter function, they will be represented by a single `ApiProperty`\n * and must have a single documentation comment.\n *\n * Compare with {@link ApiPropertySignature}, which represents a property belonging to an interface.\n * For example, a class property can be `static` but an interface property cannot.\n *\n * @public\n */\nexport class ApiProperty extends ApiStaticMixin(ApiPropertyItem) {\n public constructor(options: IApiPropertyOptions) {\n super(options);\n }\n\n public static getContainerKey(name: string, isStatic: boolean): string {\n if (isStatic) {\n return `${name}|${ApiItemKind.Property}|static`;\n } else {\n return `${name}|${ApiItemKind.Property}|instance`;\n }\n }\n\n /** @override */\n public get kind(): ApiItemKind {\n return ApiItemKind.Property;\n }\n\n /** @override */\n public get containerKey(): string {\n return ApiProperty.getContainerKey(this.name, this.isStatic);\n }\n\n /** @beta @override */\n public buildCanonicalReference(): DeclarationReference {\n const nameComponent: Component = DeclarationReference.parseComponent(this.name);\n return (this.parent ? this.parent.canonicalReference : DeclarationReference.empty())\n .addNavigationStep(this.isStatic ? Navigation.Exports : Navigation.Members, nameComponent)\n .withMeaning(Meaning.Member);\n }\n}\n"]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.ApiPropertySignature = void 0;
|
|
6
6
|
const DeclarationReference_1 = require("@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference");
|
|
7
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
7
8
|
const ApiPropertyItem_1 = require("../items/ApiPropertyItem");
|
|
8
9
|
/**
|
|
9
10
|
* Represents a TypeScript property declaration that belongs to an `ApiInterface`.
|
|
@@ -32,11 +33,11 @@ class ApiPropertySignature extends ApiPropertyItem_1.ApiPropertyItem {
|
|
|
32
33
|
super(options);
|
|
33
34
|
}
|
|
34
35
|
static getContainerKey(name) {
|
|
35
|
-
return `${name}|${
|
|
36
|
+
return `${name}|${ApiItem_1.ApiItemKind.PropertySignature}`;
|
|
36
37
|
}
|
|
37
38
|
/** @override */
|
|
38
39
|
get kind() {
|
|
39
|
-
return
|
|
40
|
+
return ApiItem_1.ApiItemKind.PropertySignature;
|
|
40
41
|
}
|
|
41
42
|
/** @override */
|
|
42
43
|
get containerKey() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiPropertySignature.js","sourceRoot":"","sources":["../../src/model/ApiPropertySignature.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;
|
|
1
|
+
{"version":3,"file":"ApiPropertySignature.js","sourceRoot":"","sources":["../../src/model/ApiPropertySignature.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;AACjE,8CAA+C;AAC/C,8DAAoF;AAQpF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,oBAAqB,SAAQ,iCAAe;IACvD,YAAmB,OAAqC;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY;QACxC,OAAO,GAAG,IAAI,IAAI,qBAAW,CAAC,iBAAiB,EAAE,CAAC;IACpD,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,OAAO,qBAAW,CAAC,iBAAiB,CAAC;IACvC,CAAC;IAED,gBAAgB;IAChB,IAAW,YAAY;QACrB,OAAO,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,sBAAsB;IACf,uBAAuB;QAC5B,MAAM,aAAa,GAAc,2CAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,2CAAoB,CAAC,KAAK,EAAE,CAAC;aACjF,iBAAiB,oBAAqB,aAAa,CAAC;aACpD,WAAW,uBAAgB,CAAC;IACjC,CAAC;CACF;AA1BD,oDA0BC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n DeclarationReference,\n Meaning,\n Navigation,\n Component\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport { ApiItemKind } from '../items/ApiItem';\nimport { ApiPropertyItem, IApiPropertyItemOptions } from '../items/ApiPropertyItem';\n\n/**\n * Constructor options for {@link ApiPropertySignature}.\n * @public\n */\nexport interface IApiPropertySignatureOptions extends IApiPropertyItemOptions {}\n\n/**\n * Represents a TypeScript property declaration that belongs to an `ApiInterface`.\n *\n * @remarks\n *\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\n * API declarations.\n *\n * `ApiPropertySignature` represents a TypeScript declaration such as the `width` and `height` members in this example:\n *\n * ```ts\n * export interface IWidget {\n * readonly width: number;\n * height: number;\n * }\n * ```\n *\n * Compare with {@link ApiProperty}, which represents a property belonging to a class.\n * For example, a class property can be `static` but an interface property cannot.\n *\n * @public\n */\nexport class ApiPropertySignature extends ApiPropertyItem {\n public constructor(options: IApiPropertySignatureOptions) {\n super(options);\n }\n\n public static getContainerKey(name: string): string {\n return `${name}|${ApiItemKind.PropertySignature}`;\n }\n\n /** @override */\n public get kind(): ApiItemKind {\n return ApiItemKind.PropertySignature;\n }\n\n /** @override */\n public get containerKey(): string {\n return ApiPropertySignature.getContainerKey(this.name);\n }\n\n /** @beta @override */\n public buildCanonicalReference(): DeclarationReference {\n const nameComponent: Component = DeclarationReference.parseComponent(this.name);\n return (this.parent ? this.parent.canonicalReference : DeclarationReference.empty())\n .addNavigationStep(Navigation.Members, nameComponent)\n .withMeaning(Meaning.Member);\n }\n}\n"]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.ApiTypeAlias = void 0;
|
|
6
6
|
const DeclarationReference_1 = require("@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference");
|
|
7
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
7
8
|
const ApiDeclaredItem_1 = require("../items/ApiDeclaredItem");
|
|
8
9
|
const ApiReleaseTagMixin_1 = require("../mixins/ApiReleaseTagMixin");
|
|
9
10
|
const ApiNameMixin_1 = require("../mixins/ApiNameMixin");
|
|
@@ -45,11 +46,11 @@ class ApiTypeAlias extends (0, ApiTypeParameterListMixin_1.ApiTypeParameterListM
|
|
|
45
46
|
options.typeTokenRange = jsonObject.typeTokenRange;
|
|
46
47
|
}
|
|
47
48
|
static getContainerKey(name) {
|
|
48
|
-
return `${name}|${
|
|
49
|
+
return `${name}|${ApiItem_1.ApiItemKind.TypeAlias}`;
|
|
49
50
|
}
|
|
50
51
|
/** @override */
|
|
51
52
|
get kind() {
|
|
52
|
-
return
|
|
53
|
+
return ApiItem_1.ApiItemKind.TypeAlias;
|
|
53
54
|
}
|
|
54
55
|
/** @override */
|
|
55
56
|
get containerKey() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiTypeAlias.js","sourceRoot":"","sources":["../../src/model/ApiTypeAlias.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;
|
|
1
|
+
{"version":3,"file":"ApiTypeAlias.js","sourceRoot":"","sources":["../../src/model/ApiTypeAlias.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;AAEjE,8CAA+C;AAC/C,8DAA0G;AAC1G,qEAA8F;AAC9F,yDAA4E;AAC5E,mFAI6C;AAmB7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,YAAa,SAAQ,IAAA,qDAAyB,EACzD,IAAA,2BAAY,EAAC,IAAA,uCAAkB,EAAC,iCAAe,CAAC,CAAC,CAClD;IAcC,YAAmB,OAA6B;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,iBAAiB,CAC7B,OAAsC,EACtC,OAA4B,EAC5B,UAA6B;QAE7B,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY;QACxC,OAAO,GAAG,IAAI,IAAI,qBAAW,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,OAAO,qBAAW,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,IAAW,YAAY;QACrB,OAAO,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB;IACT,aAAa,CAAC,UAAsC;QACzD,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;IAC1D,CAAC;IAED,sBAAsB;IACf,uBAAuB;QAC5B,MAAM,aAAa,GAAc,2CAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,2CAAoB,CAAC,KAAK,EAAE,CAAC;aACjF,iBAAiB,oBAAqB,aAAa,CAAC;aACpD,WAAW,wBAAmB,CAAC;IACpC,CAAC;CACF;AA7DD,oCA6DC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n DeclarationReference,\n Meaning,\n Navigation,\n Component\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport { Excerpt, IExcerptTokenRange } from '../mixins/Excerpt';\nimport { ApiItemKind } from '../items/ApiItem';\nimport { ApiDeclaredItem, IApiDeclaredItemOptions, IApiDeclaredItemJson } from '../items/ApiDeclaredItem';\nimport { ApiReleaseTagMixin, IApiReleaseTagMixinOptions } from '../mixins/ApiReleaseTagMixin';\nimport { IApiNameMixinOptions, ApiNameMixin } from '../mixins/ApiNameMixin';\nimport {\n ApiTypeParameterListMixin,\n IApiTypeParameterListMixinOptions,\n IApiTypeParameterListMixinJson\n} from '../mixins/ApiTypeParameterListMixin';\nimport { DeserializerContext } from './DeserializerContext';\n\n/**\n * Constructor options for {@link ApiTypeAlias}.\n * @public\n */\nexport interface IApiTypeAliasOptions\n extends IApiNameMixinOptions,\n IApiReleaseTagMixinOptions,\n IApiDeclaredItemOptions,\n IApiTypeParameterListMixinOptions {\n typeTokenRange: IExcerptTokenRange;\n}\n\nexport interface IApiTypeAliasJson extends IApiDeclaredItemJson, IApiTypeParameterListMixinJson {\n typeTokenRange: IExcerptTokenRange;\n}\n\n/**\n * Represents a TypeScript type alias declaration.\n *\n * @remarks\n *\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\n * API declarations.\n *\n * `ApiTypeAlias` represents a definition such as one of these examples:\n *\n * ```ts\n * // A union type:\n * export type Shape = Square | Triangle | Circle;\n *\n * // A generic type alias:\n * export type BoxedValue<T> = { value: T };\n *\n * export type BoxedArray<T> = { array: T[] };\n *\n * // A conditional type alias:\n * export type Boxed<T> = T extends any[] ? BoxedArray<T[number]> : BoxedValue<T>;\n *\n * ```\n *\n * @public\n */\nexport class ApiTypeAlias extends ApiTypeParameterListMixin(\n ApiNameMixin(ApiReleaseTagMixin(ApiDeclaredItem))\n) {\n /**\n * An {@link Excerpt} that describes the type of the alias.\n *\n * @remarks\n * In the example below, the `typeExcerpt` would correspond to the subexpression\n * `T extends any[] ? BoxedArray<T[number]> : BoxedValue<T>;`:\n *\n * ```ts\n * export type Boxed<T> = T extends any[] ? BoxedArray<T[number]> : BoxedValue<T>;\n * ```\n */\n public readonly typeExcerpt: Excerpt;\n\n public constructor(options: IApiTypeAliasOptions) {\n super(options);\n\n this.typeExcerpt = this.buildExcerpt(options.typeTokenRange);\n }\n\n /** @override */\n public static onDeserializeInto(\n options: Partial<IApiTypeAliasOptions>,\n context: DeserializerContext,\n jsonObject: IApiTypeAliasJson\n ): void {\n super.onDeserializeInto(options, context, jsonObject);\n\n options.typeTokenRange = jsonObject.typeTokenRange;\n }\n\n public static getContainerKey(name: string): string {\n return `${name}|${ApiItemKind.TypeAlias}`;\n }\n\n /** @override */\n public get kind(): ApiItemKind {\n return ApiItemKind.TypeAlias;\n }\n\n /** @override */\n public get containerKey(): string {\n return ApiTypeAlias.getContainerKey(this.name);\n }\n\n /** @override */\n public serializeInto(jsonObject: Partial<IApiTypeAliasJson>): void {\n super.serializeInto(jsonObject);\n\n jsonObject.typeTokenRange = this.typeExcerpt.tokenRange;\n }\n\n /** @beta @override */\n public buildCanonicalReference(): DeclarationReference {\n const nameComponent: Component = DeclarationReference.parseComponent(this.name);\n return (this.parent ? this.parent.canonicalReference : DeclarationReference.empty())\n .addNavigationStep(Navigation.Exports, nameComponent)\n .withMeaning(Meaning.TypeAlias);\n }\n}\n"]}
|
package/lib/model/ApiVariable.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.ApiVariable = void 0;
|
|
6
6
|
const DeclarationReference_1 = require("@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference");
|
|
7
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
7
8
|
const ApiDeclaredItem_1 = require("../items/ApiDeclaredItem");
|
|
8
9
|
const ApiReleaseTagMixin_1 = require("../mixins/ApiReleaseTagMixin");
|
|
9
10
|
const ApiNameMixin_1 = require("../mixins/ApiNameMixin");
|
|
@@ -38,11 +39,11 @@ class ApiVariable extends (0, ApiNameMixin_1.ApiNameMixin)((0, ApiReleaseTagMixi
|
|
|
38
39
|
options.variableTypeTokenRange = jsonObject.variableTypeTokenRange;
|
|
39
40
|
}
|
|
40
41
|
static getContainerKey(name) {
|
|
41
|
-
return `${name}|${
|
|
42
|
+
return `${name}|${ApiItem_1.ApiItemKind.Variable}`;
|
|
42
43
|
}
|
|
43
44
|
/** @override */
|
|
44
45
|
get kind() {
|
|
45
|
-
return
|
|
46
|
+
return ApiItem_1.ApiItemKind.Variable;
|
|
46
47
|
}
|
|
47
48
|
/** @override */
|
|
48
49
|
get containerKey() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiVariable.js","sourceRoot":"","sources":["../../src/model/ApiVariable.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;
|
|
1
|
+
{"version":3,"file":"ApiVariable.js","sourceRoot":"","sources":["../../src/model/ApiVariable.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,kGAKiE;AACjE,8CAA+C;AAC/C,8DAA0G;AAC1G,qEAA8F;AAC9F,yDAA4E;AAmB5E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,WAAY,SAAQ,IAAA,2BAAY,EAAC,IAAA,uCAAkB,EAAC,iCAAe,CAAC,CAAC;IAMhF,YAAmB,OAA4B;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/E,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,iBAAiB,CAC7B,OAAqC,EACrC,OAA4B,EAC5B,UAA4B;QAE5B,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,CAAC,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAY;QACxC,OAAO,GAAG,IAAI,IAAI,qBAAW,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,OAAO,qBAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,gBAAgB;IAChB,IAAW,YAAY;QACrB,OAAO,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IACT,aAAa,CAAC,UAAqC;QACxD,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhC,UAAU,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC1E,CAAC;IAED,sBAAsB;IACf,uBAAuB;QAC5B,MAAM,aAAa,GAAc,2CAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,2CAAoB,CAAC,KAAK,EAAE,CAAC;aACjF,iBAAiB,oBAAqB,aAAa,CAAC;aACpD,WAAW,sBAAkB,CAAC;IACnC,CAAC;CACF;AAnDD,kCAmDC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n DeclarationReference,\n Meaning,\n Navigation,\n Component\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport { ApiItemKind } from '../items/ApiItem';\nimport { ApiDeclaredItem, IApiDeclaredItemOptions, IApiDeclaredItemJson } from '../items/ApiDeclaredItem';\nimport { ApiReleaseTagMixin, IApiReleaseTagMixinOptions } from '../mixins/ApiReleaseTagMixin';\nimport { IApiNameMixinOptions, ApiNameMixin } from '../mixins/ApiNameMixin';\nimport { IExcerptTokenRange, Excerpt } from '../mixins/Excerpt';\nimport { DeserializerContext } from './DeserializerContext';\n\n/**\n * Constructor options for {@link ApiVariable}.\n * @public\n */\nexport interface IApiVariableOptions\n extends IApiNameMixinOptions,\n IApiReleaseTagMixinOptions,\n IApiDeclaredItemOptions {\n variableTypeTokenRange: IExcerptTokenRange;\n}\n\nexport interface IApiVariableJson extends IApiDeclaredItemJson {\n variableTypeTokenRange: IExcerptTokenRange;\n}\n\n/**\n * Represents a TypeScript variable declaration.\n *\n * @remarks\n *\n * This is part of the {@link ApiModel} hierarchy of classes, which are serializable representations of\n * API declarations.\n *\n * `ApiVariable` represents an exported `const` or `let` object such as these examples:\n *\n * ```ts\n * // A variable declaration\n * export let verboseLogging: boolean;\n *\n * // A constant variable declaration with an initializer\n * export const canvas: IWidget = createCanvas();\n * ```\n *\n * @public\n */\nexport class ApiVariable extends ApiNameMixin(ApiReleaseTagMixin(ApiDeclaredItem)) {\n /**\n * An {@link Excerpt} that describes the type of the variable.\n */\n public readonly variableTypeExcerpt: Excerpt;\n\n public constructor(options: IApiVariableOptions) {\n super(options);\n\n this.variableTypeExcerpt = this.buildExcerpt(options.variableTypeTokenRange);\n }\n\n /** @override */\n public static onDeserializeInto(\n options: Partial<IApiVariableOptions>,\n context: DeserializerContext,\n jsonObject: IApiVariableJson\n ): void {\n super.onDeserializeInto(options, context, jsonObject);\n\n options.variableTypeTokenRange = jsonObject.variableTypeTokenRange;\n }\n\n public static getContainerKey(name: string): string {\n return `${name}|${ApiItemKind.Variable}`;\n }\n\n /** @override */\n public get kind(): ApiItemKind {\n return ApiItemKind.Variable;\n }\n\n /** @override */\n public get containerKey(): string {\n return ApiVariable.getContainerKey(this.name);\n }\n\n /** @override */\n public serializeInto(jsonObject: Partial<IApiVariableJson>): void {\n super.serializeInto(jsonObject);\n\n jsonObject.variableTypeTokenRange = this.variableTypeExcerpt.tokenRange;\n }\n\n /** @beta @override */\n public buildCanonicalReference(): DeclarationReference {\n const nameComponent: Component = DeclarationReference.parseComponent(this.name);\n return (this.parent ? this.parent.canonicalReference : DeclarationReference.empty())\n .addNavigationStep(Navigation.Exports, nameComponent)\n .withMeaning(Meaning.Variable);\n }\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// See LICENSE in the project root for license information.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.Deserializer = void 0;
|
|
6
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
6
7
|
const ApiClass_1 = require("./ApiClass");
|
|
7
8
|
const ApiEntryPoint_1 = require("./ApiEntryPoint");
|
|
8
9
|
const ApiMethod_1 = require("./ApiMethod");
|
|
@@ -26,60 +27,60 @@ class Deserializer {
|
|
|
26
27
|
static deserialize(context, jsonObject) {
|
|
27
28
|
const options = {};
|
|
28
29
|
switch (jsonObject.kind) {
|
|
29
|
-
case
|
|
30
|
+
case ApiItem_1.ApiItemKind.Class:
|
|
30
31
|
ApiClass_1.ApiClass.onDeserializeInto(options, context, jsonObject);
|
|
31
32
|
return new ApiClass_1.ApiClass(options);
|
|
32
|
-
case
|
|
33
|
+
case ApiItem_1.ApiItemKind.CallSignature:
|
|
33
34
|
ApiCallSignature_1.ApiCallSignature.onDeserializeInto(options, context, jsonObject);
|
|
34
35
|
return new ApiCallSignature_1.ApiCallSignature(options);
|
|
35
|
-
case
|
|
36
|
+
case ApiItem_1.ApiItemKind.Constructor:
|
|
36
37
|
ApiConstructor_1.ApiConstructor.onDeserializeInto(options, context, jsonObject);
|
|
37
38
|
return new ApiConstructor_1.ApiConstructor(options);
|
|
38
|
-
case
|
|
39
|
+
case ApiItem_1.ApiItemKind.ConstructSignature:
|
|
39
40
|
ApiConstructSignature_1.ApiConstructSignature.onDeserializeInto(options, context, jsonObject);
|
|
40
41
|
return new ApiConstructSignature_1.ApiConstructSignature(options);
|
|
41
|
-
case
|
|
42
|
+
case ApiItem_1.ApiItemKind.EntryPoint:
|
|
42
43
|
ApiEntryPoint_1.ApiEntryPoint.onDeserializeInto(options, context, jsonObject);
|
|
43
44
|
return new ApiEntryPoint_1.ApiEntryPoint(options);
|
|
44
|
-
case
|
|
45
|
+
case ApiItem_1.ApiItemKind.Enum:
|
|
45
46
|
ApiEnum_1.ApiEnum.onDeserializeInto(options, context, jsonObject);
|
|
46
47
|
return new ApiEnum_1.ApiEnum(options);
|
|
47
|
-
case
|
|
48
|
+
case ApiItem_1.ApiItemKind.EnumMember:
|
|
48
49
|
ApiEnumMember_1.ApiEnumMember.onDeserializeInto(options, context, jsonObject);
|
|
49
50
|
return new ApiEnumMember_1.ApiEnumMember(options);
|
|
50
|
-
case
|
|
51
|
+
case ApiItem_1.ApiItemKind.Function:
|
|
51
52
|
ApiFunction_1.ApiFunction.onDeserializeInto(options, context, jsonObject);
|
|
52
53
|
return new ApiFunction_1.ApiFunction(options);
|
|
53
|
-
case
|
|
54
|
+
case ApiItem_1.ApiItemKind.IndexSignature:
|
|
54
55
|
ApiIndexSignature_1.ApiIndexSignature.onDeserializeInto(options, context, jsonObject);
|
|
55
56
|
return new ApiIndexSignature_1.ApiIndexSignature(options);
|
|
56
|
-
case
|
|
57
|
+
case ApiItem_1.ApiItemKind.Interface:
|
|
57
58
|
ApiInterface_1.ApiInterface.onDeserializeInto(options, context, jsonObject);
|
|
58
59
|
return new ApiInterface_1.ApiInterface(options);
|
|
59
|
-
case
|
|
60
|
+
case ApiItem_1.ApiItemKind.Method:
|
|
60
61
|
ApiMethod_1.ApiMethod.onDeserializeInto(options, context, jsonObject);
|
|
61
62
|
return new ApiMethod_1.ApiMethod(options);
|
|
62
|
-
case
|
|
63
|
+
case ApiItem_1.ApiItemKind.MethodSignature:
|
|
63
64
|
ApiMethodSignature_1.ApiMethodSignature.onDeserializeInto(options, context, jsonObject);
|
|
64
65
|
return new ApiMethodSignature_1.ApiMethodSignature(options);
|
|
65
|
-
case
|
|
66
|
+
case ApiItem_1.ApiItemKind.Model:
|
|
66
67
|
return new ApiModel_1.ApiModel();
|
|
67
|
-
case
|
|
68
|
+
case ApiItem_1.ApiItemKind.Namespace:
|
|
68
69
|
ApiNamespace_1.ApiNamespace.onDeserializeInto(options, context, jsonObject);
|
|
69
70
|
return new ApiNamespace_1.ApiNamespace(options);
|
|
70
|
-
case
|
|
71
|
+
case ApiItem_1.ApiItemKind.Package:
|
|
71
72
|
ApiPackage_1.ApiPackage.onDeserializeInto(options, context, jsonObject);
|
|
72
73
|
return new ApiPackage_1.ApiPackage(options);
|
|
73
|
-
case
|
|
74
|
+
case ApiItem_1.ApiItemKind.Property:
|
|
74
75
|
ApiProperty_1.ApiProperty.onDeserializeInto(options, context, jsonObject);
|
|
75
76
|
return new ApiProperty_1.ApiProperty(options);
|
|
76
|
-
case
|
|
77
|
+
case ApiItem_1.ApiItemKind.PropertySignature:
|
|
77
78
|
ApiPropertySignature_1.ApiPropertySignature.onDeserializeInto(options, context, jsonObject);
|
|
78
79
|
return new ApiPropertySignature_1.ApiPropertySignature(options);
|
|
79
|
-
case
|
|
80
|
+
case ApiItem_1.ApiItemKind.TypeAlias:
|
|
80
81
|
ApiTypeAlias_1.ApiTypeAlias.onDeserializeInto(options, context, jsonObject);
|
|
81
82
|
return new ApiTypeAlias_1.ApiTypeAlias(options);
|
|
82
|
-
case
|
|
83
|
+
case ApiItem_1.ApiItemKind.Variable:
|
|
83
84
|
ApiVariable_1.ApiVariable.onDeserializeInto(options, context, jsonObject);
|
|
84
85
|
return new ApiVariable_1.ApiVariable(options);
|
|
85
86
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Deserializer.js","sourceRoot":"","sources":["../../src/model/Deserializer.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;
|
|
1
|
+
{"version":3,"file":"Deserializer.js","sourceRoot":"","sources":["../../src/model/Deserializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { IApiItemJson, IApiItemOptions, ApiItem, ApiItemKind } from '../items/ApiItem';\nimport { ApiClass, IApiClassOptions, IApiClassJson } from './ApiClass';\nimport { ApiEntryPoint, IApiEntryPointOptions } from './ApiEntryPoint';\nimport { ApiMethod, IApiMethodOptions } from './ApiMethod';\nimport { ApiModel } from './ApiModel';\nimport { ApiNamespace, IApiNamespaceOptions } from './ApiNamespace';\nimport { ApiPackage, IApiPackageOptions } from './ApiPackage';\nimport { ApiInterface, IApiInterfaceOptions, IApiInterfaceJson } from './ApiInterface';\nimport { ApiPropertySignature, IApiPropertySignatureOptions } from './ApiPropertySignature';\nimport { ApiMethodSignature, IApiMethodSignatureOptions } from './ApiMethodSignature';\nimport { ApiProperty, IApiPropertyOptions } from './ApiProperty';\nimport { ApiEnumMember, IApiEnumMemberOptions, IApiEnumMemberJson } from './ApiEnumMember';\nimport { ApiEnum, IApiEnumOptions } from './ApiEnum';\nimport { IApiPropertyItemJson } from '../items/ApiPropertyItem';\nimport { ApiConstructor, IApiConstructorOptions } from './ApiConstructor';\nimport { ApiConstructSignature, IApiConstructSignatureOptions } from './ApiConstructSignature';\nimport { ApiFunction, IApiFunctionOptions } from './ApiFunction';\nimport { ApiCallSignature, IApiCallSignatureOptions } from './ApiCallSignature';\nimport { ApiIndexSignature, IApiIndexSignatureOptions } from './ApiIndexSignature';\nimport { ApiTypeAlias, IApiTypeAliasOptions, IApiTypeAliasJson } from './ApiTypeAlias';\nimport { ApiVariable, IApiVariableOptions, IApiVariableJson } from './ApiVariable';\nimport { IApiDeclaredItemJson } from '../items/ApiDeclaredItem';\nimport { DeserializerContext } from './DeserializerContext';\n\nexport class Deserializer {\n public static deserialize(context: DeserializerContext, jsonObject: IApiItemJson): ApiItem {\n const options: Partial<IApiItemOptions> = {};\n\n switch (jsonObject.kind) {\n case ApiItemKind.Class:\n ApiClass.onDeserializeInto(options, context, jsonObject as IApiClassJson);\n return new ApiClass(options as IApiClassOptions);\n case ApiItemKind.CallSignature:\n ApiCallSignature.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiCallSignature(options as IApiCallSignatureOptions);\n case ApiItemKind.Constructor:\n ApiConstructor.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiConstructor(options as IApiConstructorOptions);\n case ApiItemKind.ConstructSignature:\n ApiConstructSignature.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiConstructSignature(options as IApiConstructSignatureOptions);\n case ApiItemKind.EntryPoint:\n ApiEntryPoint.onDeserializeInto(options, context, jsonObject);\n return new ApiEntryPoint(options as IApiEntryPointOptions);\n case ApiItemKind.Enum:\n ApiEnum.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiEnum(options as IApiEnumOptions);\n case ApiItemKind.EnumMember:\n ApiEnumMember.onDeserializeInto(options, context, jsonObject as IApiEnumMemberJson);\n return new ApiEnumMember(options as IApiEnumMemberOptions);\n case ApiItemKind.Function:\n ApiFunction.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiFunction(options as IApiFunctionOptions);\n case ApiItemKind.IndexSignature:\n ApiIndexSignature.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiIndexSignature(options as IApiIndexSignatureOptions);\n case ApiItemKind.Interface:\n ApiInterface.onDeserializeInto(options, context, jsonObject as IApiInterfaceJson);\n return new ApiInterface(options as IApiInterfaceOptions);\n case ApiItemKind.Method:\n ApiMethod.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiMethod(options as IApiMethodOptions);\n case ApiItemKind.MethodSignature:\n ApiMethodSignature.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiMethodSignature(options as IApiMethodSignatureOptions);\n case ApiItemKind.Model:\n return new ApiModel();\n case ApiItemKind.Namespace:\n ApiNamespace.onDeserializeInto(options, context, jsonObject as IApiDeclaredItemJson);\n return new ApiNamespace(options as IApiNamespaceOptions);\n case ApiItemKind.Package:\n ApiPackage.onDeserializeInto(options, context, jsonObject);\n return new ApiPackage(options as IApiPackageOptions);\n case ApiItemKind.Property:\n ApiProperty.onDeserializeInto(options, context, jsonObject as IApiPropertyItemJson);\n return new ApiProperty(options as IApiPropertyOptions);\n case ApiItemKind.PropertySignature:\n ApiPropertySignature.onDeserializeInto(options, context, jsonObject as IApiPropertyItemJson);\n return new ApiPropertySignature(options as IApiPropertySignatureOptions);\n case ApiItemKind.TypeAlias:\n ApiTypeAlias.onDeserializeInto(options, context, jsonObject as IApiTypeAliasJson);\n return new ApiTypeAlias(options as IApiTypeAliasOptions);\n case ApiItemKind.Variable:\n ApiVariable.onDeserializeInto(options, context, jsonObject as IApiVariableJson);\n return new ApiVariable(options as IApiVariableOptions);\n default:\n throw new Error(`Failed to deserialize unsupported API item type ${JSON.stringify(jsonObject.kind)}`);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeserializerContext.js","sourceRoot":"","sources":["../../src/model/DeserializerContext.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D,IAAY,oBAwDX;AAxDD,WAAY,oBAAoB;IAC9B;;OAEG;IACH,sEAAa,CAAA;IAEb;;OAEG;IACH,sEAAa,CAAA;IAEb;;OAEG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAe,CAAA;IAEf;;;;;OAKG;IACH,0FAAyB,CAAA;IAEzB;;;;;;OAMG;IACH,8GAAmC,CAAA;AACrC,CAAC,EAxDW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAwD/B;AAED,MAAa,mBAAmB;IA0B9B,YAAmB,OAA4B;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACvD,CAAC;CACF;AAjCD,kDAiCC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\
|
|
1
|
+
{"version":3,"file":"DeserializerContext.js","sourceRoot":"","sources":["../../src/model/DeserializerContext.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D,IAAY,oBAwDX;AAxDD,WAAY,oBAAoB;IAC9B;;OAEG;IACH,sEAAa,CAAA;IAEb;;OAEG;IACH,sEAAa,CAAA;IAEb;;OAEG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAa,CAAA;IAEb;;;;;OAKG;IACH,sEAAe,CAAA;IAEf;;;;;OAKG;IACH,0FAAyB,CAAA;IAEzB;;;;;;OAMG;IACH,8GAAmC,CAAA;AACrC,CAAC,EAxDW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAwD/B;AAED,MAAa,mBAAmB;IA0B9B,YAAmB,OAA4B;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACvD,CAAC;CACF;AAjCD,kDAiCC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { TSDocConfiguration } from '@microsoft/tsdoc';\n\nexport enum ApiJsonSchemaVersion {\n /**\n * The initial release.\n */\n V_1000 = 1000,\n\n /**\n * Add support for type parameters and type alias types.\n */\n V_1001 = 1001,\n\n /**\n * Remove \"canonicalReference\" field. This field was for diagnostic purposes only and was never deserialized.\n */\n V_1002 = 1002,\n\n /**\n * Reintroduce the \"canonicalReference\" field using the experimental new TSDoc declaration reference notation.\n *\n * This is not a breaking change because this field is never deserialized; it is provided for informational\n * purposes only.\n */\n V_1003 = 1003,\n\n /**\n * Add a \"tsdocConfig\" field that tracks the TSDoc configuration for parsing doc comments.\n *\n * This is not a breaking change because an older implementation will still work correctly. The\n * custom tags will be skipped over by the parser.\n */\n V_1004 = 1004,\n\n /**\n * The current latest .api.json schema version.\n *\n * IMPORTANT: When incrementing this number, consider whether `OLDEST_SUPPORTED` or `OLDEST_FORWARDS_COMPATIBLE`\n * should be updated.\n */\n LATEST = V_1004,\n\n /**\n * The oldest .api.json schema version that is still supported for backwards compatibility.\n *\n * This must be updated if you change to the file format and do not implement compatibility logic for\n * deserializing the older representation.\n */\n OLDEST_SUPPORTED = V_1001,\n\n /**\n * Used to assign `IApiPackageMetadataJson.oldestForwardsCompatibleVersion`.\n *\n * This value must be \\<= `ApiJsonSchemaVersion.LATEST`. It must be reset to the `LATEST` value\n * if the older library would not be able to deserialize your new file format. Adding a nonessential field\n * is generally okay. Removing, modifying, or reinterpreting existing fields is NOT safe.\n */\n OLDEST_FORWARDS_COMPATIBLE = V_1001\n}\n\nexport class DeserializerContext {\n /**\n * The path of the file being deserialized, which may be useful for diagnostic purposes.\n */\n public readonly apiJsonFilename: string;\n\n /**\n * Metadata from `IApiPackageMetadataJson.toolPackage`.\n */\n public readonly toolPackage: string;\n\n /**\n * Metadata from `IApiPackageMetadataJson.toolVersion`.\n */\n public readonly toolVersion: string;\n\n /**\n * The version of the schema being deserialized, as obtained from `IApiPackageMetadataJson.schemaVersion`.\n */\n public readonly versionToDeserialize: ApiJsonSchemaVersion;\n\n /**\n * The TSDoc configuration for the context.\n */\n public readonly tsdocConfiguration: TSDocConfiguration;\n\n public constructor(options: DeserializerContext) {\n this.apiJsonFilename = options.apiJsonFilename;\n this.toolPackage = options.toolPackage;\n this.toolVersion = options.toolVersion;\n this.versionToDeserialize = options.versionToDeserialize;\n this.tsdocConfiguration = options.tsdocConfiguration;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeritageType.js","sourceRoot":"","sources":["../../src/model/HeritageType.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D;;;;;;;;;;;;;;GAcG;AACH,MAAa,YAAY;IAiBvB,YAAmB,OAAgB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AApBD,oCAoBC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\
|
|
1
|
+
{"version":3,"file":"HeritageType.js","sourceRoot":"","sources":["../../src/model/HeritageType.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D;;;;;;;;;;;;;;GAcG;AACH,MAAa,YAAY;IAiBvB,YAAmB,OAAgB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AApBD,oCAoBC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { Excerpt } from '../mixins/Excerpt';\n\n/**\n * Represents a type referenced via an \"extends\" or \"implements\" heritage clause for a TypeScript class.\n * @remarks\n *\n * For example, consider this declaration:\n *\n * ```ts\n * export class Widget extends Controls.WidgetBase implements Controls.IWidget, IDisposable {\n * // . . .\n * }\n * ```\n *\n * The heritage types are `Controls.WidgetBase`, `Controls.IWidget`, and `IDisposable`.\n * @public\n */\nexport class HeritageType {\n /**\n * An excerpt corresponding to the referenced type.\n * @remarks\n *\n * For example, consider this declaration:\n *\n * ```ts\n * export class Widget extends Controls.WidgetBase implements Controls.IWidget, IDisposable {\n * // . . .\n * }\n * ```\n *\n * The excerpt might be `Controls.WidgetBase`, `Controls.IWidget`, or `IDisposable`.\n */\n public readonly excerpt: Excerpt;\n\n public constructor(excerpt: Excerpt) {\n this.excerpt = excerpt;\n }\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// See LICENSE in the project root for license information.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.ModelReferenceResolver = void 0;
|
|
6
|
+
const ApiItem_1 = require("../items/ApiItem");
|
|
6
7
|
const ApiItemContainerMixin_1 = require("../mixins/ApiItemContainerMixin");
|
|
7
8
|
const ApiParameterListMixin_1 = require("../mixins/ApiParameterListMixin");
|
|
8
9
|
/**
|
|
@@ -110,25 +111,25 @@ class ModelReferenceResolver {
|
|
|
110
111
|
let selectorItemKind;
|
|
111
112
|
switch (selectorName) {
|
|
112
113
|
case 'class':
|
|
113
|
-
selectorItemKind =
|
|
114
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Class;
|
|
114
115
|
break;
|
|
115
116
|
case 'enum':
|
|
116
|
-
selectorItemKind =
|
|
117
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Enum;
|
|
117
118
|
break;
|
|
118
119
|
case 'function':
|
|
119
|
-
selectorItemKind =
|
|
120
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Function;
|
|
120
121
|
break;
|
|
121
122
|
case 'interface':
|
|
122
|
-
selectorItemKind =
|
|
123
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Interface;
|
|
123
124
|
break;
|
|
124
125
|
case 'namespace':
|
|
125
|
-
selectorItemKind =
|
|
126
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Namespace;
|
|
126
127
|
break;
|
|
127
128
|
case 'type':
|
|
128
|
-
selectorItemKind =
|
|
129
|
+
selectorItemKind = ApiItem_1.ApiItemKind.TypeAlias;
|
|
129
130
|
break;
|
|
130
131
|
case 'variable':
|
|
131
|
-
selectorItemKind =
|
|
132
|
+
selectorItemKind = ApiItem_1.ApiItemKind.Variable;
|
|
132
133
|
break;
|
|
133
134
|
default:
|
|
134
135
|
result.errorMessage = `Unsupported system selector "${selectorName}"`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelReferenceResolver.js","sourceRoot":"","sources":["../../src/model/ModelReferenceResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { DocDeclarationReference, DocMemberSelector, SelectorKind } from '@microsoft/tsdoc';\r\nimport { ApiItem, ApiItemKind } from '../items/ApiItem';\r\nimport { ApiModel } from './ApiModel';\r\nimport { ApiPackage } from './ApiPackage';\r\nimport { ApiEntryPoint } from './ApiEntryPoint';\r\nimport { ApiItemContainerMixin } from '../mixins/ApiItemContainerMixin';\r\nimport { ApiParameterListMixin } from '../mixins/ApiParameterListMixin';\r\n\r\n/**\r\n * Result object for {@link ApiModel.resolveDeclarationReference}.\r\n *\r\n * @public\r\n */\r\nexport interface IResolveDeclarationReferenceResult {\r\n /**\r\n * The referenced ApiItem, if the declaration reference could be resolved.\r\n */\r\n resolvedApiItem: ApiItem | undefined;\r\n\r\n /**\r\n * If resolvedApiItem is undefined, then this will always contain an error message explaining why the\r\n * resolution failed.\r\n */\r\n errorMessage: string | undefined;\r\n}\r\n\r\n/**\r\n * This resolves a TSDoc declaration reference by walking the `ApiModel` hierarchy.\r\n *\r\n * @remarks\r\n *\r\n * This class is analogous to `AstReferenceResolver` from the `@microsoft/api-extractor` project,\r\n * which resolves declaration references by walking the compiler state.\r\n */\r\nexport class ModelReferenceResolver {\r\n private readonly _apiModel: ApiModel;\r\n\r\n public constructor(apiModel: ApiModel) {\r\n this._apiModel = apiModel;\r\n }\r\n\r\n public resolve(\r\n declarationReference: DocDeclarationReference,\r\n contextApiItem: ApiItem | undefined\r\n ): IResolveDeclarationReferenceResult {\r\n const result: IResolveDeclarationReferenceResult = {\r\n resolvedApiItem: undefined,\r\n errorMessage: undefined\r\n };\r\n\r\n let apiPackage: ApiPackage | undefined = undefined;\r\n\r\n // Is this an absolute reference?\r\n if (declarationReference.packageName !== undefined) {\r\n apiPackage = this._apiModel.tryGetPackageByName(declarationReference.packageName);\r\n if (apiPackage === undefined) {\r\n result.errorMessage = `The package \"${declarationReference.packageName}\" could not be located`;\r\n return result;\r\n }\r\n } else {\r\n // If the package name is omitted, try to infer it from the context\r\n if (contextApiItem !== undefined) {\r\n apiPackage = contextApiItem.getAssociatedPackage();\r\n }\r\n\r\n if (apiPackage === undefined) {\r\n result.errorMessage =\r\n `The reference does not include a package name, and the package could not be inferred` +\r\n ` from the context`;\r\n return result;\r\n }\r\n }\r\n\r\n const importPath: string = declarationReference.importPath || '';\r\n\r\n const foundEntryPoints: ReadonlyArray<ApiEntryPoint> = apiPackage.findEntryPointsByPath(importPath);\r\n if (foundEntryPoints.length !== 1) {\r\n result.errorMessage = `The import path \"${importPath}\" could not be resolved`;\r\n return result;\r\n }\r\n\r\n let currentItem: ApiItem = foundEntryPoints[0];\r\n\r\n // Now search for the member reference\r\n for (const memberReference of declarationReference.memberReferences) {\r\n if (memberReference.memberSymbol !== undefined) {\r\n result.errorMessage = `Symbols are not yet supported in declaration references`;\r\n return result;\r\n }\r\n\r\n if (memberReference.memberIdentifier === undefined) {\r\n result.errorMessage = `Missing member identifier`;\r\n return result;\r\n }\r\n\r\n const identifier: string = memberReference.memberIdentifier.identifier;\r\n\r\n if (!ApiItemContainerMixin.isBaseClassOf(currentItem)) {\r\n // For example, {@link MyClass.myMethod.X} is invalid because methods cannot contain members\r\n result.errorMessage = `Unable to resolve ${JSON.stringify(\r\n identifier\r\n )} because ${currentItem.getScopedNameWithinPackage()} cannot act as a container`;\r\n return result;\r\n }\r\n\r\n const foundMembers: ReadonlyArray<ApiItem> = currentItem.findMembersByName(identifier);\r\n if (foundMembers.length === 0) {\r\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was not found`;\r\n return result;\r\n }\r\n\r\n const memberSelector: DocMemberSelector | undefined = memberReference.selector;\r\n if (memberSelector === undefined) {\r\n if (foundMembers.length > 1) {\r\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was ambiguous`;\r\n return result;\r\n }\r\n currentItem = foundMembers[0];\r\n } else {\r\n let memberSelectorResult: IResolveDeclarationReferenceResult;\r\n switch (memberSelector.selectorKind) {\r\n case SelectorKind.System:\r\n memberSelectorResult = this._selectUsingSystemSelector(foundMembers, memberSelector, identifier);\r\n break;\r\n case SelectorKind.Index:\r\n memberSelectorResult = this._selectUsingIndexSelector(foundMembers, memberSelector, identifier);\r\n break;\r\n default:\r\n result.errorMessage = `The selector \"${memberSelector.selector}\" is not a supported selector type`;\r\n return result;\r\n }\r\n if (memberSelectorResult.resolvedApiItem === undefined) {\r\n return memberSelectorResult;\r\n }\r\n currentItem = memberSelectorResult.resolvedApiItem;\r\n }\r\n }\r\n result.resolvedApiItem = currentItem;\r\n return result;\r\n }\r\n\r\n private _selectUsingSystemSelector(\r\n foundMembers: ReadonlyArray<ApiItem>,\r\n memberSelector: DocMemberSelector,\r\n identifier: string\r\n ): IResolveDeclarationReferenceResult {\r\n const result: IResolveDeclarationReferenceResult = {\r\n resolvedApiItem: undefined,\r\n errorMessage: undefined\r\n };\r\n\r\n const selectorName: string = memberSelector.selector;\r\n\r\n let selectorItemKind: ApiItemKind;\r\n switch (selectorName) {\r\n case 'class':\r\n selectorItemKind = ApiItemKind.Class;\r\n break;\r\n case 'enum':\r\n selectorItemKind = ApiItemKind.Enum;\r\n break;\r\n case 'function':\r\n selectorItemKind = ApiItemKind.Function;\r\n break;\r\n case 'interface':\r\n selectorItemKind = ApiItemKind.Interface;\r\n break;\r\n case 'namespace':\r\n selectorItemKind = ApiItemKind.Namespace;\r\n break;\r\n case 'type':\r\n selectorItemKind = ApiItemKind.TypeAlias;\r\n break;\r\n case 'variable':\r\n selectorItemKind = ApiItemKind.Variable;\r\n break;\r\n default:\r\n result.errorMessage = `Unsupported system selector \"${selectorName}\"`;\r\n return result;\r\n }\r\n\r\n const matches: ApiItem[] = foundMembers.filter((x) => x.kind === selectorItemKind);\r\n if (matches.length === 0) {\r\n result.errorMessage =\r\n `A declaration for \"${identifier}\" was not found that matches the` +\r\n ` TSDoc selector \"${selectorName}\"`;\r\n return result;\r\n }\r\n if (matches.length > 1) {\r\n result.errorMessage = `More than one declaration \"${identifier}\" matches the TSDoc selector \"${selectorName}\"`;\r\n }\r\n result.resolvedApiItem = matches[0];\r\n return result;\r\n }\r\n\r\n private _selectUsingIndexSelector(\r\n foundMembers: ReadonlyArray<ApiItem>,\r\n memberSelector: DocMemberSelector,\r\n identifier: string\r\n ): IResolveDeclarationReferenceResult {\r\n const result: IResolveDeclarationReferenceResult = {\r\n resolvedApiItem: undefined,\r\n errorMessage: undefined\r\n };\r\n\r\n const selectedMembers: ApiItem[] = [];\r\n\r\n const selectorOverloadIndex: number = parseInt(memberSelector.selector);\r\n for (const foundMember of foundMembers) {\r\n if (ApiParameterListMixin.isBaseClassOf(foundMember)) {\r\n if (foundMember.overloadIndex === selectorOverloadIndex) {\r\n selectedMembers.push(foundMember);\r\n }\r\n }\r\n }\r\n\r\n if (selectedMembers.length === 0) {\r\n result.errorMessage =\r\n `An overload for ${JSON.stringify(identifier)} was not found that matches` +\r\n ` the TSDoc selector \":${selectorOverloadIndex}\"`;\r\n return result;\r\n }\r\n\r\n if (selectedMembers.length === 1) {\r\n result.resolvedApiItem = selectedMembers[0];\r\n return result;\r\n }\r\n\r\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was ambiguous`;\r\n return result;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ModelReferenceResolver.js","sourceRoot":"","sources":["../../src/model/ModelReferenceResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { DocDeclarationReference, DocMemberSelector, SelectorKind } from '@microsoft/tsdoc';\nimport { ApiItem, ApiItemKind } from '../items/ApiItem';\nimport { ApiModel } from './ApiModel';\nimport { ApiPackage } from './ApiPackage';\nimport { ApiEntryPoint } from './ApiEntryPoint';\nimport { ApiItemContainerMixin } from '../mixins/ApiItemContainerMixin';\nimport { ApiParameterListMixin } from '../mixins/ApiParameterListMixin';\n\n/**\n * Result object for {@link ApiModel.resolveDeclarationReference}.\n *\n * @public\n */\nexport interface IResolveDeclarationReferenceResult {\n /**\n * The referenced ApiItem, if the declaration reference could be resolved.\n */\n resolvedApiItem: ApiItem | undefined;\n\n /**\n * If resolvedApiItem is undefined, then this will always contain an error message explaining why the\n * resolution failed.\n */\n errorMessage: string | undefined;\n}\n\n/**\n * This resolves a TSDoc declaration reference by walking the `ApiModel` hierarchy.\n *\n * @remarks\n *\n * This class is analogous to `AstReferenceResolver` from the `@microsoft/api-extractor` project,\n * which resolves declaration references by walking the compiler state.\n */\nexport class ModelReferenceResolver {\n private readonly _apiModel: ApiModel;\n\n public constructor(apiModel: ApiModel) {\n this._apiModel = apiModel;\n }\n\n public resolve(\n declarationReference: DocDeclarationReference,\n contextApiItem: ApiItem | undefined\n ): IResolveDeclarationReferenceResult {\n const result: IResolveDeclarationReferenceResult = {\n resolvedApiItem: undefined,\n errorMessage: undefined\n };\n\n let apiPackage: ApiPackage | undefined = undefined;\n\n // Is this an absolute reference?\n if (declarationReference.packageName !== undefined) {\n apiPackage = this._apiModel.tryGetPackageByName(declarationReference.packageName);\n if (apiPackage === undefined) {\n result.errorMessage = `The package \"${declarationReference.packageName}\" could not be located`;\n return result;\n }\n } else {\n // If the package name is omitted, try to infer it from the context\n if (contextApiItem !== undefined) {\n apiPackage = contextApiItem.getAssociatedPackage();\n }\n\n if (apiPackage === undefined) {\n result.errorMessage =\n `The reference does not include a package name, and the package could not be inferred` +\n ` from the context`;\n return result;\n }\n }\n\n const importPath: string = declarationReference.importPath || '';\n\n const foundEntryPoints: ReadonlyArray<ApiEntryPoint> = apiPackage.findEntryPointsByPath(importPath);\n if (foundEntryPoints.length !== 1) {\n result.errorMessage = `The import path \"${importPath}\" could not be resolved`;\n return result;\n }\n\n let currentItem: ApiItem = foundEntryPoints[0];\n\n // Now search for the member reference\n for (const memberReference of declarationReference.memberReferences) {\n if (memberReference.memberSymbol !== undefined) {\n result.errorMessage = `Symbols are not yet supported in declaration references`;\n return result;\n }\n\n if (memberReference.memberIdentifier === undefined) {\n result.errorMessage = `Missing member identifier`;\n return result;\n }\n\n const identifier: string = memberReference.memberIdentifier.identifier;\n\n if (!ApiItemContainerMixin.isBaseClassOf(currentItem)) {\n // For example, {@link MyClass.myMethod.X} is invalid because methods cannot contain members\n result.errorMessage = `Unable to resolve ${JSON.stringify(\n identifier\n )} because ${currentItem.getScopedNameWithinPackage()} cannot act as a container`;\n return result;\n }\n\n const foundMembers: ReadonlyArray<ApiItem> = currentItem.findMembersByName(identifier);\n if (foundMembers.length === 0) {\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was not found`;\n return result;\n }\n\n const memberSelector: DocMemberSelector | undefined = memberReference.selector;\n if (memberSelector === undefined) {\n if (foundMembers.length > 1) {\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was ambiguous`;\n return result;\n }\n currentItem = foundMembers[0];\n } else {\n let memberSelectorResult: IResolveDeclarationReferenceResult;\n switch (memberSelector.selectorKind) {\n case SelectorKind.System:\n memberSelectorResult = this._selectUsingSystemSelector(foundMembers, memberSelector, identifier);\n break;\n case SelectorKind.Index:\n memberSelectorResult = this._selectUsingIndexSelector(foundMembers, memberSelector, identifier);\n break;\n default:\n result.errorMessage = `The selector \"${memberSelector.selector}\" is not a supported selector type`;\n return result;\n }\n if (memberSelectorResult.resolvedApiItem === undefined) {\n return memberSelectorResult;\n }\n currentItem = memberSelectorResult.resolvedApiItem;\n }\n }\n result.resolvedApiItem = currentItem;\n return result;\n }\n\n private _selectUsingSystemSelector(\n foundMembers: ReadonlyArray<ApiItem>,\n memberSelector: DocMemberSelector,\n identifier: string\n ): IResolveDeclarationReferenceResult {\n const result: IResolveDeclarationReferenceResult = {\n resolvedApiItem: undefined,\n errorMessage: undefined\n };\n\n const selectorName: string = memberSelector.selector;\n\n let selectorItemKind: ApiItemKind;\n switch (selectorName) {\n case 'class':\n selectorItemKind = ApiItemKind.Class;\n break;\n case 'enum':\n selectorItemKind = ApiItemKind.Enum;\n break;\n case 'function':\n selectorItemKind = ApiItemKind.Function;\n break;\n case 'interface':\n selectorItemKind = ApiItemKind.Interface;\n break;\n case 'namespace':\n selectorItemKind = ApiItemKind.Namespace;\n break;\n case 'type':\n selectorItemKind = ApiItemKind.TypeAlias;\n break;\n case 'variable':\n selectorItemKind = ApiItemKind.Variable;\n break;\n default:\n result.errorMessage = `Unsupported system selector \"${selectorName}\"`;\n return result;\n }\n\n const matches: ApiItem[] = foundMembers.filter((x) => x.kind === selectorItemKind);\n if (matches.length === 0) {\n result.errorMessage =\n `A declaration for \"${identifier}\" was not found that matches the` +\n ` TSDoc selector \"${selectorName}\"`;\n return result;\n }\n if (matches.length > 1) {\n result.errorMessage = `More than one declaration \"${identifier}\" matches the TSDoc selector \"${selectorName}\"`;\n }\n result.resolvedApiItem = matches[0];\n return result;\n }\n\n private _selectUsingIndexSelector(\n foundMembers: ReadonlyArray<ApiItem>,\n memberSelector: DocMemberSelector,\n identifier: string\n ): IResolveDeclarationReferenceResult {\n const result: IResolveDeclarationReferenceResult = {\n resolvedApiItem: undefined,\n errorMessage: undefined\n };\n\n const selectedMembers: ApiItem[] = [];\n\n const selectorOverloadIndex: number = parseInt(memberSelector.selector);\n for (const foundMember of foundMembers) {\n if (ApiParameterListMixin.isBaseClassOf(foundMember)) {\n if (foundMember.overloadIndex === selectorOverloadIndex) {\n selectedMembers.push(foundMember);\n }\n }\n }\n\n if (selectedMembers.length === 0) {\n result.errorMessage =\n `An overload for ${JSON.stringify(identifier)} was not found that matches` +\n ` the TSDoc selector \":${selectorOverloadIndex}\"`;\n return result;\n }\n\n if (selectedMembers.length === 1) {\n result.resolvedApiItem = selectedMembers[0];\n return result;\n }\n\n result.errorMessage = `The member reference ${JSON.stringify(identifier)} was ambiguous`;\n return result;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parameter.js","sourceRoot":"","sources":["../../src/model/Parameter.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D,kEAA+D;AAc/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,SAAS;IAapB,YAAmB,OAA0B;QAC3C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACxB,IAAI,IAAI,CAAC,OAAO,YAAY,qCAAiB,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtE;SACF;IACH,CAAC;CACF;AA7BD,8BA6BC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\
|
|
1
|
+
{"version":3,"file":"Parameter.js","sourceRoot":"","sources":["../../src/model/Parameter.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D,kEAA+D;AAc/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,SAAS;IAapB,YAAmB,OAA0B;QAC3C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACxB,IAAI,IAAI,CAAC,OAAO,YAAY,qCAAiB,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtE;SACF;IACH,CAAC;CACF;AA7BD,8BA6BC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as tsdoc from '@microsoft/tsdoc';\n\nimport { ApiDocumentedItem } from '../items/ApiDocumentedItem';\nimport { Excerpt } from '../mixins/Excerpt';\nimport { ApiParameterListMixin } from '../mixins/ApiParameterListMixin';\n\n/**\n * Constructor options for {@link Parameter}.\n * @public\n */\nexport interface IParameterOptions {\n name: string;\n parameterTypeExcerpt: Excerpt;\n parent: ApiParameterListMixin;\n}\n\n/**\n * Represents a named parameter for a function-like declaration.\n *\n * @remarks\n *\n * `Parameter` represents a TypeScript declaration such as `x: number` in this example:\n *\n * ```ts\n * export function add(x: number, y: number): number {\n * return x + y;\n * }\n * ```\n *\n * `Parameter` objects belong to the {@link (ApiParameterListMixin:interface).parameters} collection.\n *\n * @public\n */\nexport class Parameter {\n /**\n * An {@link Excerpt} that describes the type of the parameter.\n */\n public readonly parameterTypeExcerpt: Excerpt;\n\n /**\n * The parameter name.\n */\n public name: string;\n\n private _parent: ApiParameterListMixin;\n\n public constructor(options: IParameterOptions) {\n this.name = options.name;\n this.parameterTypeExcerpt = options.parameterTypeExcerpt;\n this._parent = options.parent;\n }\n\n /**\n * Returns the `@param` documentation for this parameter, if present.\n */\n public get tsdocParamBlock(): tsdoc.DocParamBlock | undefined {\n if (this._parent instanceof ApiDocumentedItem) {\n if (this._parent.tsdocComment) {\n return this._parent.tsdocComment.params.tryGetBlockByName(this.name);\n }\n }\n }\n}\n"]}
|