import { JsonSchema, PackageJsonLookup, type INodePackageJson, NewlineKind } from '@rushstack/node-core-library'; import { type IRigConfig } from '@rushstack/rig-package'; import type { IConfigFile, IExtractorMessagesConfig } from './IConfigFile'; import { EnumMemberOrder } from '@microsoft/api-extractor-model'; import { TSDocConfiguration } from '@microsoft/tsdoc'; import { TSDocConfigFile } from '@microsoft/tsdoc-config'; /** * Options for {@link ExtractorConfig.tryLoadForFolder}. * * @public */ export interface IExtractorConfigLoadForFolderOptions { /** * The folder path to start from when searching for api-extractor.json. */ startingFolder: string; /** * An already constructed `PackageJsonLookup` cache object to use. If omitted, a temporary one will * be constructed. */ packageJsonLookup?: PackageJsonLookup; /** * An already constructed `RigConfig` object. If omitted, then a new `RigConfig` object will be constructed. */ rigConfig?: IRigConfig; } /** * Options for {@link ExtractorConfig.prepare}. * * @public */ export interface IExtractorConfigPrepareOptions { /** * A configuration object as returned by {@link ExtractorConfig.loadFile}. */ configObject: IConfigFile; /** * The absolute path of the file that the `configObject` object was loaded from. This is used for error messages * and when probing for `tsconfig.json`. * * @remarks * * If `configObjectFullPath` and `projectFolderLookupToken` are both unspecified, then the api-extractor.json * config file must explicitly specify a `projectFolder` setting rather than relying on the `` token. */ configObjectFullPath: string | undefined; /** * The parsed package.json file for the working package, or undefined if API Extractor was invoked without * a package.json file. * * @remarks * * If omitted, then the `` and `` tokens will have default values. */ packageJson?: INodePackageJson | undefined; /** * The absolute path of the file that the `packageJson` object was loaded from, or undefined if API Extractor * was invoked without a package.json file. * * @remarks * * This is used for error messages and when resolving paths found in package.json. * * If `packageJsonFullPath` is specified but `packageJson` is omitted, the file will be loaded automatically. */ packageJsonFullPath: string | undefined; /** * The default value for the `projectFolder` setting is the `` token, which uses a heuristic to guess * an appropriate project folder. Use `projectFolderLookupValue` to manually specify the `` token value * instead. * * @remarks * If the `projectFolder` setting is explicitly specified in api-extractor.json file, it should take precedence * over a value specified via the API. Thus the `projectFolderLookupToken` option provides a way to override * the default value for `projectFolder` setting while still honoring a manually specified value. */ projectFolderLookupToken?: string; /** * Allow customization of the tsdoc.json config file. If omitted, this file will be loaded from its default * location. If the file does not exist, then the standard definitions will be used from * `@microsoft/api-extractor/extends/tsdoc-base.json`. */ tsdocConfigFile?: TSDocConfigFile; /** * When preparing the configuration object, folder and file paths referenced in the configuration are checked * for existence, and an error is reported if they are not found. This option can be used to disable this * check for the main entry point module. This may be useful when preparing a configuration file for an * un-built project. */ ignoreMissingEntryPoint?: boolean; } /** * The `ExtractorConfig` class loads, validates, interprets, and represents the api-extractor.json config file. * @public */ export declare class ExtractorConfig { /** * The JSON Schema for API Extractor config file (api-extractor.schema.json). */ static readonly jsonSchema: JsonSchema; /** * The config file name "api-extractor.json". */ static readonly FILENAME: 'api-extractor.json'; /** * The full path to `extends/tsdoc-base.json` which contains the standard TSDoc configuration * for API Extractor. * @internal */ static readonly _tsdocBaseFilePath: string; private static readonly _defaultConfig; /** Match all three flavors for type declaration files (.d.ts, .d.mts, .d.cts) */ private static readonly _declarationFileExtensionRegExp; /** {@inheritDoc IConfigFile.projectFolder} */ readonly projectFolder: string; /** * The parsed package.json file for the working package, or undefined if API Extractor was invoked without * a package.json file. */ readonly packageJson: INodePackageJson | undefined; /** * The absolute path of the folder containing the package.json file for the working package, or undefined * if API Extractor was invoked without a package.json file. */ readonly packageFolder: string | undefined; /** {@inheritDoc IConfigFile.mainEntryPointFilePath} */ readonly mainEntryPointFilePath: string; /** {@inheritDoc IConfigFile.bundledPackages} */ readonly bundledPackages: string[]; /** {@inheritDoc IConfigCompiler.tsconfigFilePath} */ readonly tsconfigFilePath: string; /** {@inheritDoc IConfigCompiler.overrideTsconfig} */ readonly overrideTsconfig: {} | undefined; /** {@inheritDoc IConfigCompiler.skipLibCheck} */ readonly skipLibCheck: boolean; /** {@inheritDoc IConfigApiReport.enabled} */ readonly apiReportEnabled: boolean; /** The `reportFolder` path combined with the `reportFileName`. */ readonly reportFilePath: string; /** The `reportTempFolder` path combined with the `reportFileName`. */ readonly reportTempFilePath: string; /** {@inheritDoc IConfigApiReport.includeForgottenExports} */ readonly apiReportIncludeForgottenExports: boolean; /** {@inheritDoc IConfigDocModel.enabled} */ readonly docModelEnabled: boolean; /** {@inheritDoc IConfigDocModel.apiJsonFilePath} */ readonly apiJsonFilePath: string; /** {@inheritDoc IConfigDocModel.includeForgottenExports} */ readonly docModelIncludeForgottenExports: boolean; /** {@inheritDoc IConfigDocModel.projectFolderUrl} */ readonly projectFolderUrl: string | undefined; /** {@inheritDoc IConfigDtsRollup.enabled} */ readonly rollupEnabled: boolean; /** {@inheritDoc IConfigDtsRollup.untrimmedFilePath} */ readonly untrimmedFilePath: string; /** {@inheritDoc IConfigDtsRollup.alphaTrimmedFilePath} */ readonly alphaTrimmedFilePath: string; /** {@inheritDoc IConfigDtsRollup.betaTrimmedFilePath} */ readonly betaTrimmedFilePath: string; /** {@inheritDoc IConfigDtsRollup.publicTrimmedFilePath} */ readonly publicTrimmedFilePath: string; /** {@inheritDoc IConfigDtsRollup.omitTrimmingComments} */ readonly omitTrimmingComments: boolean; /** {@inheritDoc IConfigTsdocMetadata.enabled} */ readonly tsdocMetadataEnabled: boolean; /** {@inheritDoc IConfigTsdocMetadata.tsdocMetadataFilePath} */ readonly tsdocMetadataFilePath: string; /** * The tsdoc.json configuration that will be used when parsing doc comments. */ readonly tsdocConfigFile: TSDocConfigFile; /** * The `TSDocConfiguration` loaded from {@link ExtractorConfig.tsdocConfigFile}. */ readonly tsdocConfiguration: TSDocConfiguration; /** * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files * will be written with Windows-style newlines. */ readonly newlineKind: NewlineKind; /** {@inheritDoc IConfigFile.messages} */ readonly messages: IExtractorMessagesConfig; /** {@inheritDoc IConfigFile.testMode} */ readonly testMode: boolean; /** {@inheritDoc IConfigFile.enumMemberOrder} */ readonly enumMemberOrder: EnumMemberOrder; private constructor(); /** * Returns a JSON-like string representing the `ExtractorConfig` state, which can be printed to a console * for diagnostic purposes. * * @remarks * This is used by the "--diagnostics" command-line option. The string is not intended to be deserialized; * its format may be changed at any time. */ getDiagnosticDump(): string; /** * Returns a simplified file path for use in error messages. * @internal */ _getShortFilePath(absolutePath: string): string; /** * Searches for the api-extractor.json config file associated with the specified starting folder, * and loads the file if found. This lookup supports * {@link https://www.npmjs.com/package/@rushstack/rig-package | rig packages}. * * @remarks * The search will first look for a package.json file in a parent folder of the starting folder; * if found, that will be used as the base folder instead of the starting folder. If the config * file is not found in `/api-extractor.json` or `/config/api-extractor.json`, * then `"` * this reports an error if any token-looking substrings remain after expansion (e.g. `c:\blah\\blah`). */ private static _rejectAnyTokensInPath; } //# sourceMappingURL=ExtractorConfig.d.ts.map