{"version":3,"file":"index.mjs","sources":["../../src/core/_lib/_fileExists.ts","../../src/core/_printExtractMessages.ts","../../src/core/config/_findConfigFile.ts","../../src/core/config/_loadConfig.ts","../../src/core/config/defineConfig.ts","../../src/core/extract/defaults.ts","../../src/core/extract/apiExtractorConfig.ts","../../src/core/extract/helpers.ts","../../src/core/extract/tsDocConfig.ts","../../src/core/extract/extract.ts","../../src/core/load/helpers.ts","../../src/core/load/load.ts","../../src/core/transform/helpers.ts","../../src/core/transform/_classIsReactComponentType.ts","../../src/core/transform/_transformTokens.ts","../../src/core/transform/constants.ts","../../src/core/transform/transformDocComment.ts","../../src/core/transform/_transformParameter.ts","../../src/core/transform/_transformTypeParameter.ts","../../src/core/transform/transformClass.ts","../../src/core/transform/transformEnum.ts","../../src/core/transform/_functionIsReactComponentType.ts","../../src/core/transform/_functionIsReactHook.ts","../../src/core/transform/_functionReactComponentPropsType.ts","../../src/core/transform/transformFunction.ts","../../src/core/transform/transformInterface.ts","../../src/core/transform/transformTypeAlias.ts","../../src/core/transform/transformVariable.ts","../../src/core/transform/transformNamespace.ts","../../src/core/transform/transformExportMember.ts","../../src/core/transform/transformPackage.ts","../../src/core/transform/transform.ts"],"sourcesContent":["import {accessSync} from 'fs'\n\n/** @internal */\nexport function _fileExists(file: string): boolean {\n  try {\n    accessSync(file)\n\n    return true\n  } catch (_) {\n    return false\n  }\n}\n","/* eslint-disable no-console */\n\nimport {ExtractorMessage} from '@microsoft/api-extractor'\nimport chalk from 'chalk'\nimport path from 'path'\n\n/** @internal */\nexport function _printExtractMessages(cwd: string, messages: ExtractorMessage[]): void {\n  const warnings = messages.filter((msg) => msg.logLevel === 'warning')\n\n  for (const msg of warnings) {\n    const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n    if (msg.messageId === 'TS6307') {\n      continue\n    }\n\n    console.log('')\n\n    console.log(\n      [\n        `${chalk.cyan(sourceFilePath || '?')}`,\n        `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n        ` - ${chalk.yellow('warning')} ${chalk.gray(msg.messageId)}\\n`,\n        msg.text,\n      ].join(''),\n    )\n  }\n\n  const errors: ExtractorMessage[] = messages.filter((msg) => msg.logLevel === 'error')\n\n  for (const msg of errors) {\n    const sourceFilePath = msg.sourceFilePath && path.relative(cwd, msg.sourceFilePath)\n\n    console.log('')\n\n    console.log(\n      [\n        `${chalk.cyan(sourceFilePath || '?')}`,\n        `:${chalk.yellow(msg.sourceFileLine)}:${chalk.yellow(msg.sourceFileColumn)}`,\n        ` - ${chalk.red('error')} ${chalk.gray(msg.messageId)}\\n`,\n        msg.text,\n      ].join(''),\n    )\n  }\n}\n","import path from 'path'\n\nimport {_fileExists} from '../_lib/_fileExists'\n\nconst CONFIG_FILE_NAMES = [\n  'tsdoc.config.js',\n  'tsdoc.config.jsx',\n  'tsdoc.config.mjs',\n  'tsdoc.config.cjs',\n  'tsdoc.config.ts',\n  'tsdoc.config.tsx',\n]\n\n/** @internal */\nexport function _findConfigFile(options: {packagePath: string}): string | undefined {\n  const {packagePath} = options\n\n  for (const f of CONFIG_FILE_NAMES) {\n    const file = path.resolve(packagePath, f)\n\n    if (_fileExists(file)) return file\n  }\n\n  return undefined\n}\n","import {register} from 'esbuild-register/dist/node'\n\nimport {_findConfigFile} from './_findConfigFile'\nimport type {SanityTSDocConfigOptions} from './types'\n\ntype RegisterOptions = Exclude<Parameters<typeof register>[0], undefined>\n\n/** @internal */\nexport async function _loadConfig(options: {\n  packagePath: string\n}): Promise<SanityTSDocConfigOptions | undefined> {\n  const {packagePath} = options\n\n  const configPath = _findConfigFile({packagePath})\n\n  if (!configPath) {\n    return undefined\n  }\n\n  const esbuildOptions = {\n    jsx: 'automatic',\n    jsxFactory: 'createElement',\n    jsxFragment: 'Fragment',\n    jsxImportSource: 'react',\n    logLevel: 'silent',\n  } satisfies RegisterOptions\n\n  const {unregister} = globalThis.__DEV__ ? {unregister: () => undefined} : register(esbuildOptions)\n\n  // eslint-disable-next-line @typescript-eslint/no-var-requires\n  const config = require(configPath)\n\n  // Unregister the require hook as we don't need it anymore\n  unregister()\n\n  return config?.default || config\n}\n","import {SanityTSDocConfigOptions} from './types'\n\n/** @public */\nexport function defineConfig(config: SanityTSDocConfigOptions): SanityTSDocConfigOptions {\n  return config\n}\n","import {ExtractorLogLevel, IExtractorMessagesConfig} from '@microsoft/api-extractor'\n\nexport const DEFAULT_MESSAGES_CONFIG: IExtractorMessagesConfig = {\n  /**\n   * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing\n   * the input .d.ts files.\n   *\n   * TypeScript message identifiers start with \"TS\" followed by an integer.  For example: \"TS2551\"\n   *\n   * DEFAULT VALUE:  A single \"default\" entry with logLevel=warning.\n   */\n  compilerMessageReporting: {\n    /**\n     * Configures the default routing for messages that don't match an explicit rule in this table.\n     */\n    default: {\n      /**\n       * Specifies whether the message should be written to the the tool's output log.  Note that\n       * the \"addToApiReportFile\" property may supersede this option.\n       *\n       * Possible values: \"error\", \"warning\", \"none\"\n       *\n       * Errors cause the build to fail and return a nonzero exit code.  Warnings cause a production build fail\n       * and return a nonzero exit code.  For a non-production build (e.g. when \"api-extractor run\" includes\n       * the \"--local\" option), the warning is displayed but the build will not fail.\n       *\n       * DEFAULT VALUE: \"warning\"\n       */\n      logLevel: 'warning' as ExtractorLogLevel,\n\n      /**\n       * When addToApiReportFile is true:  If API Extractor is configured to write an API report file (.api.md),\n       * then the message will be written inside that file; otherwise, the message is instead logged according to\n       * the \"logLevel\" option.\n       *\n       * DEFAULT VALUE: false\n       */\n      addToApiReportFile: false,\n    },\n\n    // \"TS2551\": {\n    //   \"logLevel\": \"warning\",\n    //   \"addToApiReportFile\": true\n    // },\n    //\n    // . . .\n  },\n\n  /**\n   * Configures handling of messages reported by API Extractor during its analysis.\n   *\n   * API Extractor message identifiers start with \"ae-\".  For example: \"ae-extra-release-tag\"\n   *\n   * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings\n   */\n  extractorMessageReporting: {\n    default: {\n      logLevel: 'warning' as ExtractorLogLevel,\n      addToApiReportFile: false,\n    },\n\n    // 'ae-extra-release-tag': {\n    //   logLevel: 'warning' as ExtractorLogLevel,\n    //   addToApiReportFile: false,\n    // },\n\n    // 'ae-forgotten-export': {\n    //   logLevel: 'error' as ExtractorLogLevel,\n    //   addToApiReportFile: false,\n    // },\n\n    'ae-incompatible-release-tags': {\n      logLevel: 'none' as ExtractorLogLevel,\n      addToApiReportFile: false,\n    },\n\n    'ae-internal-missing-underscore': {\n      logLevel: 'none' as ExtractorLogLevel,\n      addToApiReportFile: false,\n    },\n\n    'ae-missing-release-tag': {\n      logLevel: 'none' as ExtractorLogLevel,\n      addToApiReportFile: false,\n    },\n  },\n\n  /**\n   * Configures handling of messages reported by the TSDoc parser when analyzing code comments.\n   *\n   * TSDoc message identifiers start with \"tsdoc-\".  For example: \"tsdoc-link-tag-unescaped-text\"\n   *\n   * DEFAULT VALUE:  A single \"default\" entry with logLevel=warning.\n   */\n  tsdocMessageReporting: {\n    default: {\n      logLevel: 'warning' as ExtractorLogLevel,\n      addToApiReportFile: false,\n    },\n\n    // 'tsdoc-link-tag-unescaped-text': {\n    //   logLevel: 'warning' as ExtractorLogLevel,\n    //   addToApiReportFile: false,\n    // },\n\n    // 'tsdoc-unsupported-tag': {\n    //   logLevel: 'warning' as ExtractorLogLevel,\n    //   addToApiReportFile: false,\n    // },\n\n    // 'tsdoc-undefined-tag': {\n    //   logLevel: 'warning' as ExtractorLogLevel,\n    //   addToApiReportFile: false,\n    // },\n  },\n}\n","import type {IConfigFile, IExtractorMessagesConfig} from '@microsoft/api-extractor'\nimport path from 'path'\n\nimport {DEFAULT_MESSAGES_CONFIG} from './defaults'\n\nexport function createApiExtractorConfig(opts: {\n  mainEntryPointFilePath: string\n  messagesConfig: IExtractorMessagesConfig\n  packagePath: string\n  tempDirPath: string\n  tsconfigPath: string\n  bundledPackages: string[]\n}): IConfigFile {\n  /**\n   * Config file for API Extractor.  For more info, please visit: https://api-extractor.com\n   */\n  return {\n    /**\n     * Optionally specifies another JSON config file that this file extends from.  This provides a way for\n     * standard settings to be shared across multiple projects.\n     *\n     * If the path starts with \"./\" or \"../\", the path is resolved relative to the folder of the file that contains\n     * the \"extends\" field.  Otherwise, the first path segment is interpreted as an NPM package name, and will be\n     * resolved using NodeJS require().\n     *\n     * SUPPORTED TOKENS: none\n     * DEFAULT VALUE: \"\"\n     */\n    // \"extends\": \"./shared/api-extractor-base.json\"\n    // \"extends\": \"my-package/include/api-extractor-base.json\"\n\n    /**\n     * Determines the \"<projectFolder>\" token that can be used with other config file settings.  The project folder\n     * typically contains the tsconfig.json and package.json config files, but the path is user-defined.\n     *\n     * The path is resolved relative to the folder of the config file that contains the setting.\n     *\n     * The default value for \"projectFolder\" is the token \"<lookup>\", which means the folder is determined by traversing\n     * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder\n     * that contains a tsconfig.json file.  If a tsconfig.json file cannot be found in this way, then an error\n     * will be reported.\n     *\n     * SUPPORTED TOKENS: <lookup>\n     * DEFAULT VALUE: \"<lookup>\"\n     */\n    projectFolder: opts.packagePath,\n\n    /**\n     * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis.  API Extractor\n     * analyzes the symbols exported by this module.\n     *\n     * The file extension must be \".d.ts\" and not \".ts\".\n     *\n     * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n     * prepend a folder token such as \"<projectFolder>\".\n     *\n     * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n     */\n    mainEntryPointFilePath: path.resolve(opts.packagePath, opts.mainEntryPointFilePath),\n\n    /**\n     * A list of NPM package names whose exports should be treated as part of this package.\n     *\n     * For example, suppose that Webpack is used to generate a distributed bundle for the project \"library1\",\n     * and another NPM package \"library2\" is embedded in this bundle.  Some types from library2 may become part\n     * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly\n     * imports library2.  To avoid this, we can specify:\n     *\n     *   \"bundledPackages\": [ \"library2\" ],\n     *\n     * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been\n     * local files for library1.\n     */\n    bundledPackages: opts.bundledPackages,\n\n    /**\n     * Determines how the TypeScript compiler engine will be invoked by API Extractor.\n     */\n    compiler: {\n      /**\n       * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * Note: This setting will be ignored if \"overrideTsconfig\" is used.\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<projectFolder>/tsconfig.json\"\n       */\n      // tsconfigFilePath: path.resolve(opts.packagePath, opts.tsconfigPath || 'tsconfig.json'),\n      tsconfigFilePath: `<projectFolder>/${opts.tsconfigPath}`,\n\n      /**\n       * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk.\n       * The object must conform to the TypeScript tsconfig schema:\n       *\n       * http://json.schemastore.org/tsconfig\n       *\n       * If omitted, then the tsconfig.json file will be read from the \"projectFolder\".\n       *\n       * DEFAULT VALUE: no overrideTsconfig section\n       */\n      // overrideTsconfig: {\n      //   // . . .\n      // },\n\n      /**\n       * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended\n       * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when\n       * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses\n       * for its analysis.  Where possible, the underlying issue should be fixed rather than relying on skipLibCheck.\n       *\n       * DEFAULT VALUE: false\n       */\n      // \"skipLibCheck\": true,\n    },\n\n    /**\n     * Configures how the API report file (*.api.md) will be generated.\n     */\n    apiReport: {\n      /**\n       * (REQUIRED) Whether to generate an API report.\n       */\n      enabled: false,\n\n      /**\n       * The filename for the API report files.  It will be combined with \"reportFolder\" or \"reportTempFolder\" to produce\n       * a full file path.\n       *\n       * The file extension should be \".api.md\", and the string should not contain a path separator such as \"\\\" or \"/\".\n       *\n       * SUPPORTED TOKENS: <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<unscopedPackageName>.api.md\"\n       */\n      reportFileName: '<unscopedPackageName>.api.md',\n\n      /**\n       * Specifies the folder where the API report file is written.  The file name portion is determined by\n       * the \"reportFileName\" setting.\n       *\n       * The API report file is normally tracked by Git.  Changes to it can be used to trigger a branch policy,\n       * e.g. for an API review.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<projectFolder>/etc/\"\n       */\n      // \"reportFolder\": \"<projectFolder>/etc/\",\n\n      /**\n       * Specifies the folder where the temporary report file is written.  The file name portion is determined by\n       * the \"reportFileName\" setting.\n       *\n       * After the temporary file is written to disk, it is compared with the file in the \"reportFolder\".\n       * If they are different, a production build will fail.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<projectFolder>/temp/\"\n       */\n      // \"reportTempFolder\": \"<projectFolder>/temp/\"\n    },\n\n    /**\n     * Configures how the doc model file (*.api.json) will be generated.\n     */\n    docModel: {\n      /**\n       * (REQUIRED) Whether to generate a doc model file.\n       */\n      enabled: true,\n\n      /**\n       * The output path for the doc model file.  The file extension should be \".api.json\".\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<projectFolder>/temp/<unscopedPackageName>.api.json\"\n       */\n      apiJsonFilePath: path.resolve(opts.tempDirPath, 'api.json'),\n    },\n\n    /**\n     * Configures how the .d.ts rollup file will be generated.\n     */\n    dtsRollup: {\n      /**\n       * (REQUIRED) Whether to generate the .d.ts rollup file.\n       */\n      enabled: false,\n\n      /**\n       * Specifies the output path for a .d.ts rollup file to be generated without any trimming.\n       * This file will include all declarations that are exported by the main entry point.\n       *\n       * If the path is an empty string, then this file will not be written.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<projectFolder>/dist/<unscopedPackageName>.d.ts\"\n       */\n      // untrimmedFilePath: '<projectFolder>/dist/es/<unscopedPackageName>.d.ts',\n\n      /**\n       * Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"beta\" release.\n       * This file will include only declarations that are marked as \"@public\" or \"@beta\".\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"\"\n       */\n      // betaTrimmedFilePath: '<projectFolder>/dist/es/<unscopedPackageName>-beta.d.ts',\n\n      /**\n       * Specifies the output path for a .d.ts rollup file to be generated with trimming for a \"public\" release.\n       * This file will include only declarations that are marked as \"@public\".\n       *\n       * If the path is an empty string, then this file will not be written.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"\"\n       */\n      // publicTrimmedFilePath: '<projectFolder>/dist/es/<unscopedPackageName>-public.d.ts',\n\n      /**\n       * When a declaration is trimmed, by default it will be replaced by a code comment such as\n       * \"Excluded from this release type: exampleMember\".  Set \"omitTrimmingComments\" to true to remove the\n       * declaration completely.\n       *\n       * DEFAULT VALUE: false\n       */\n      // \"omitTrimmingComments\": true\n    },\n\n    /**\n     * Configures how the tsdoc-metadata.json file will be generated.\n     */\n    tsdocMetadata: {\n      /**\n       * Whether to generate the tsdoc-metadata.json file.\n       *\n       * DEFAULT VALUE: true\n       */\n      enabled: false,\n      /**\n       * Specifies where the TSDoc metadata file should be written.\n       *\n       * The path is resolved relative to the folder of the config file that contains the setting; to change this,\n       * prepend a folder token such as \"<projectFolder>\".\n       *\n       * The default value is \"<lookup>\", which causes the path to be automatically inferred from the \"tsdocMetadata\",\n       * \"typings\" or \"main\" fields of the project's package.json.  If none of these fields are set, the lookup\n       * falls back to \"tsdoc-metadata.json\" in the package folder.\n       *\n       * SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>\n       * DEFAULT VALUE: \"<lookup>\"\n       */\n      // tsdocMetadataFilePath: '<projectFolder>/dist/es/tsdoc-metadata.json',\n    },\n\n    /**\n     * Specifies what type of newlines API Extractor should use when writing output files.  By default, the output files\n     * will be written with Windows-style newlines.  To use POSIX-style newlines, specify \"lf\" instead.\n     * To use the OS's default newline kind, specify \"os\".\n     *\n     * DEFAULT VALUE: \"crlf\"\n     */\n    // \"newlineKind\": \"crlf\",\n\n    /**\n     * Configures how API Extractor reports error and warning messages produced during analysis.\n     *\n     * There are three sources of messages:  compiler messages, API Extractor messages, and TSDoc messages.\n     */\n    messages: opts.messagesConfig || DEFAULT_MESSAGES_CONFIG,\n  }\n}\n","import tmp from 'tmp'\n\nexport function createTempDir(): Promise<{path: string; cleanup: () => void}> {\n  return new Promise((resolve, reject) => {\n    tmp.dir((err, dirPath, cleanupCallback) => {\n      if (err) {\n        reject(err)\n\n        return\n      }\n\n      resolve({path: dirPath, cleanup: cleanupCallback})\n    })\n  })\n}\n","import {TSDocConfigFile} from '@microsoft/tsdoc-config'\nimport {readFile} from 'fs/promises'\nimport {parse} from 'jsonc-parser'\n\nimport {TSDocCustomTag} from './types'\n\nexport async function createTSDocConfig(opts: {\n  customTags: TSDocCustomTag[]\n}): Promise<TSDocConfigFile | undefined> {\n  const {customTags} = opts\n\n  if (customTags.length === 0) {\n    return undefined\n  }\n\n  const tsDocBaseBuf = await readFile(\n    require.resolve('@microsoft/api-extractor/extends/tsdoc-base.json'),\n  )\n\n  // Include the definitions that are required for API Extractor\n  // extends: ['@microsoft/api-extractor/extends/tsdoc-base.json'],\n  const tsDocBaseConfig = parse(tsDocBaseBuf.toString())\n\n  // Define custom tags and specify how they should be parsed\n  const tagDefinitions = (tsDocBaseConfig.tagDefinitions || []).concat(\n    customTags.map((t) => ({\n      tagName: `@${t.name}`,\n      syntaxKind: t.syntaxKind,\n      allowMultiple: t.allowMultiple,\n    })),\n  )\n\n  // Indicate that custom tags are supported by your tooling.\n  // (Without this, warnings may be reported saying that a tag is unsupported.)\n  const supportForTags = {...tsDocBaseConfig.supportForTags}\n\n  for (const customTag of customTags) {\n    supportForTags[`@${customTag.name}`] = true\n  }\n\n  const tsDocConfig = {\n    ...tsDocBaseConfig,\n    noStandardTags: false,\n    tagDefinitions,\n    supportForTags,\n  }\n\n  return TSDocConfigFile.loadFromObject(tsDocConfig)\n}\n","import {Extractor, ExtractorConfig, type ExtractorMessage} from '@microsoft/api-extractor'\nimport {ApiPackage} from '@microsoft/api-extractor-model'\nimport {\n  createLogger,\n  getExtractMessagesConfig,\n  loadConfig,\n  loadPkgWithReporting,\n  type PackageJSON,\n  parseExports,\n  parseStrictOptions,\n  type PkgConfigOptions,\n} from '@sanity/pkg-utils'\nimport path from 'path'\n\nimport {createApiExtractorConfig} from './apiExtractorConfig'\nimport {createTempDir} from './helpers'\nimport {createTSDocConfig} from './tsDocConfig'\nimport type {TSDocCustomTag} from './types'\n\n/**\n * @public\n */\nexport interface ExtractResult {\n  apiPackage?: ApiPackage\n  exportPath: string\n  messages: ExtractorMessage[]\n  succeeded: boolean\n  tempDirPath: string\n  typesPath: string\n}\n\n/**\n * Extract API information\n *\n * @public\n */\nexport async function extract(options: {\n  customTags?: TSDocCustomTag[]\n  packagePath: string\n  rules?: NonNullable<PkgConfigOptions['extract']>['rules']\n  strict: boolean\n  tsconfig?: string\n  bundledPackages?: string[]\n}): Promise<{pkg: PackageJSON; results: ExtractResult[]}> {\n  const {\n    customTags,\n    packagePath,\n    rules,\n    strict,\n    tsconfig: tsconfigPath = 'tsconfig.json',\n    bundledPackages = [],\n  } = options\n  const tempDir = await createTempDir()\n  const tempDirPath = tempDir.path\n  const packageJsonFullPath = path.resolve(packagePath, 'package.json')\n\n  // pkg utils\n  const cwd = packagePath\n  const config = await loadConfig({cwd})\n  const strictOptions = parseStrictOptions(config?.strictOptions ?? {})\n  const logger = createLogger()\n  const pkg = await loadPkgWithReporting({cwd, logger, strict})\n\n  logger.info('Using tsconfig: ', path.resolve(packagePath, tsconfigPath))\n\n  // const exports = _resolveExports({pkg})\n  const exports = parseExports({\n    cwd,\n    pkg,\n    strict,\n    logger,\n    strictOptions,\n  })\n\n  try {\n    const results: ExtractResult[] = []\n\n    for (const exp of exports) {\n      if (!exp.source || !exp.default) {\n        continue\n      }\n\n      const typesPath = exp.default.replace(/\\.[mc]?js$/, '.d.ts')\n      const result = await _doExtract({\n        customTags,\n        rules: rules ?? config?.extract?.rules,\n        mainEntryPointFilePath: typesPath,\n        packagePath,\n        tempDirPath,\n        tsconfigPath,\n        packageJsonFullPath,\n        bundledPackages,\n      })\n\n      results.push({\n        exportPath: exp._path,\n        tempDirPath,\n        typesPath: typesPath,\n        ...result,\n      })\n    }\n\n    // Clean up temporary directory\n    tempDir.cleanup()\n\n    return {pkg, results}\n  } catch (err) {\n    // Clean up temporary directory\n    tempDir.cleanup()\n\n    throw err\n  }\n}\n\nasync function _doExtract(options: {\n  customTags: NonNullable<PkgConfigOptions['extract']>['customTags']\n  rules: NonNullable<PkgConfigOptions['extract']>['rules']\n  mainEntryPointFilePath: string\n  packagePath: string\n  tempDirPath: string\n  tsconfigPath: string\n  packageJsonFullPath: string\n  bundledPackages: string[]\n}) {\n  const {\n    customTags,\n    rules,\n    mainEntryPointFilePath,\n    packagePath,\n    tempDirPath,\n    tsconfigPath,\n    packageJsonFullPath,\n    bundledPackages,\n  } = options\n\n  const tsdocConfigFile = await createTSDocConfig({customTags: customTags || []})\n\n  // Load the API Extractor configuration\n  const extractorConfig: ExtractorConfig = ExtractorConfig.prepare({\n    configObject: createApiExtractorConfig({\n      mainEntryPointFilePath,\n      messagesConfig: getExtractMessagesConfig({rules}),\n      packagePath,\n      tempDirPath,\n      tsconfigPath,\n      bundledPackages,\n    }),\n    configObjectFullPath: undefined,\n    packageJson: undefined,\n    packageJsonFullPath,\n    tsdocConfigFile,\n  })\n\n  const messages: ExtractorMessage[] = []\n\n  // Invoke API Extractor\n  const extractorResult = Extractor.invoke(extractorConfig, {\n    // Equivalent to the \"--local\" command-line parameter\n    localBuild: true,\n    // Equivalent to the \"--verbose\" command-line parameter\n    showVerboseMessages: true,\n    // handle messages\n    messageCallback(message: ExtractorMessage) {\n      messages.push(message)\n      message.handled = true\n    },\n  })\n\n  const apiPackage = ApiPackage.loadFromJsonFile(path.resolve(tempDirPath, 'api.json'))\n\n  return {\n    apiPackage,\n    messages,\n    succeeded: extractorResult.succeeded,\n  }\n}\n","import fs from 'fs'\nimport util from 'util'\n\nexport const writeFile = util.promisify(fs.writeFile)\n","import {createClient, SanityDocument} from '@sanity/client'\nimport mkdirp from 'mkdirp'\nimport path from 'path'\n\nimport {APIDocument} from '../types'\nimport {writeFile} from './helpers'\n\n/**\n * @public\n */\nexport async function load(\n  transformed: APIDocument[],\n  opts: {\n    cwd: string\n    fs?: {path: string}\n    sanity?: {projectId?: string; dataset?: string; token?: string}\n  },\n): Promise<void> {\n  // Write to file system\n  if (opts.fs) {\n    const dirPath = path.dirname(opts.fs.path)\n\n    await mkdirp(dirPath)\n    await writeFile(opts.fs.path, JSON.stringify(transformed, null, 2) + '\\n')\n  }\n\n  // Write to Sanity\n  if (opts.sanity && opts.sanity.token) {\n    await _loadToSanity(opts.sanity, transformed)\n  }\n}\n\nasync function _loadToSanity(\n  sanity: {projectId?: string; dataset?: string; token?: string},\n  docs: APIDocument[],\n): Promise<void> {\n  const client = createClient({\n    ...sanity,\n    apiVersion: '2022-10-01',\n    token: sanity.token,\n    useCdn: false,\n  })\n\n  let tx = client.transaction()\n\n  for (const doc of docs) {\n    tx = tx.createOrReplace(doc as SanityDocument)\n  }\n\n  await tx.commit()\n}\n","import crypto from 'crypto'\nimport slugify from 'slugify'\n\nimport {TransformContext} from './types'\n\nexport function _hash(key: string): string {\n  return crypto.createHash('md5').update(key).digest('hex')\n}\n\nexport function _createExportMemberId(_ctx: TransformContext, key: string): string {\n  return _hash(key)\n}\n\nexport function _isArray(val: unknown): val is unknown[] {\n  return Array.isArray(val)\n}\n\nexport function _isRecord(val: unknown): val is Record<string, unknown> {\n  return typeof val === 'object' && Boolean(val)\n}\n\nexport function _sanitizeName(str: string): string {\n  // Since `Text` is part of the default browser scope, API extractor will append `_2` to other\n  // implementations. So we need to replace it for the case of readable docs.\n  if (str === 'Text_2') {\n    return 'Text'\n  }\n\n  return str\n}\n\nexport function _slugify(str: string): string {\n  return slugify(str)\n}\n\nexport function _parsePackageName(nameStr: string): [string | undefined, string] {\n  const p = nameStr.split('/')\n\n  const packageScope = p.length > 1 ? p[0] : undefined\n  const packageName = p.length > 1 ? p[1] : p[0]\n\n  if (!packageName) {\n    throw new Error(`Invalid package name: ${nameStr}`)\n  }\n\n  return [packageScope, packageName]\n}\n","import {ApiClass} from '@microsoft/api-extractor-model'\n\nexport function _classIsReactComponentType(node: ApiClass): boolean {\n  const extendsTypeTokens = node.extendsType?.excerpt.tokens\n\n  const extendedName = extendsTypeTokens?.[1]?.text || ''\n\n  if (\n    extendedName.startsWith('React.Component') ||\n    extendedName.startsWith('React_2.Component') ||\n    extendedName.startsWith('Component') ||\n    extendedName.startsWith('React.PureComponent') ||\n    extendedName.startsWith('React_2.PureComponent') ||\n    extendedName.startsWith('PureComponent')\n  ) {\n    return true\n  }\n\n  return false\n}\n","import {ExcerptToken} from '@microsoft/api-extractor-model'\n\nimport {SanityArrayItem} from '../_lib/sanity'\nimport {SerializedAPIToken} from '../types'\nimport {_hash} from './helpers'\nimport {TransformContext} from './types'\n\nexport function _transformTokens(\n  ctx: TransformContext,\n  tokens: ExcerptToken[],\n): SanityArrayItem<SerializedAPIToken>[] {\n  const pkg = ctx.package\n\n  if (!pkg) {\n    throw new Error('transformTokens: missing package document')\n  }\n\n  return tokens.map((t, idx) => {\n    if (t.kind === 'Content') {\n      return {\n        _type: 'api.token',\n        _key: `token${idx}`,\n        text: t.text,\n      }\n    }\n\n    if (t.kind === 'Reference') {\n      if (!t.canonicalReference || !t.canonicalReference.source) {\n        return {\n          _type: 'api.token',\n          _key: `token${idx}`,\n          text: t.text,\n        }\n      }\n\n      return {\n        _type: 'api.token',\n        _key: `token${idx}`,\n        text: t.text,\n        member: {\n          _type: 'reference',\n          _ref: _getTokenId(t),\n        },\n      }\n    }\n\n    throw new Error(`tokens: unknown type: ${t.kind}`)\n  })\n}\n\nfunction _getTokenId(t: ExcerptToken) {\n  const _ref = t.canonicalReference?.toString()\n\n  if (_ref === '!unknown') {\n    return '$$unknown$$'\n  }\n\n  return `tsdoc-${_hash(_ref?.replace('~', '') || '')}`\n}\n","export const RELEASE_TAGS: Record<number, 'internal' | 'alpha' | 'beta' | 'public' | undefined> = {\n  0: undefined,\n  1: 'internal',\n  2: 'alpha',\n  3: 'beta',\n  4: 'public',\n}\n","import {\n  DocBlockTag,\n  DocCodeSpan,\n  DocComment,\n  DocErrorText,\n  DocEscapedText,\n  DocFencedCode,\n  DocLinkTag,\n  DocMemberIdentifier,\n  DocMemberReference,\n  DocNode,\n  DocNodeTransforms,\n  DocParagraph,\n  DocPlainText,\n  DocSection,\n  StandardTags,\n} from '@microsoft/tsdoc'\n\nimport {PortableTextNode, PortableTextSpanNode} from '../_lib/portable-text'\nimport {SanityArrayItem} from '../_lib/sanity'\nimport {\n  TSDocComment,\n  TSDocCustomBlock,\n  TSDocDeprecatedBlock,\n  TSDocExampleBlock,\n  TSDocModifierTag,\n  TSDocParamBlock,\n  TSDocRemarksBlock,\n  TSDocReturnsBlock,\n  TSDocSeeBlock,\n} from '../types'\nimport {_isArray, _isRecord} from './helpers'\n\n/** Regex pattern that matches Markdown headers: h1 - h6 */\nconst RE_MARKDOWN_HEADER = /^([#]{1,6})\\s(.*)$/\n\n/**\n * @internal\n */\nfunction _transformDocNode(docNode: DocNode): PortableTextNode | undefined {\n  // Block = \"Block\",\n  // BlockTag = \"BlockTag\",\n  // Excerpt = \"Excerpt\",\n  // FencedCode = \"FencedCode\",\n  // CodeSpan = \"CodeSpan\",\n  // Comment = \"Comment\",\n  // DeclarationReference = \"DeclarationReference\",\n  // ErrorText = \"ErrorText\",\n  // EscapedText = \"EscapedText\",\n  // HtmlAttribute = \"HtmlAttribute\",\n  // HtmlEndTag = \"HtmlEndTag\",\n  // HtmlStartTag = \"HtmlStartTag\",\n  // InheritDocTag = \"InheritDocTag\",\n  // InlineTag = \"InlineTag\",\n  // LinkTag = \"LinkTag\",\n  // MemberIdentifier = \"MemberIdentifier\",\n  // MemberReference = \"MemberReference\",\n  // MemberSelector = \"MemberSelector\",\n  // MemberSymbol = \"MemberSymbol\",\n  // Paragraph = \"Paragraph\",\n  // ParamBlock = \"ParamBlock\",\n  // ParamCollection = \"ParamCollection\",\n  // PlainText = \"PlainText\",\n  // Section = \"Section\",\n  // SoftBreak = \"SoftBreak\"\n\n  if (docNode.kind === 'CodeSpan') {\n    return {\n      _type: 'span',\n      marks: ['code'],\n      text: (docNode as DocCodeSpan).code,\n    }\n  }\n\n  if (docNode.kind === 'ErrorText') {\n    return {\n      _type: 'span',\n      marks: [],\n      text: (docNode as DocErrorText).text,\n    }\n  }\n\n  if (docNode.kind === 'EscapedText') {\n    return {\n      _type: 'span',\n      marks: [],\n      text: (docNode as DocEscapedText).decodedText,\n    }\n  }\n\n  if (docNode.kind === 'FencedCode') {\n    const node = docNode as DocFencedCode\n\n    return {\n      _type: 'code',\n      code: node.code,\n      language: node.language,\n    }\n  }\n\n  if (docNode.kind === 'LinkTag') {\n    const linkTag: DocLinkTag = docNode as DocLinkTag\n\n    if (linkTag.urlDestination) {\n      const linkText: string = linkTag.linkText || linkTag.urlDestination\n\n      return {\n        _type: 'span',\n        _markDef: {\n          _type: 'link',\n          href: linkTag.urlDestination,\n        },\n        marks: [],\n        text: linkText,\n      }\n    } else {\n      let identifier = ''\n      let fullReferenceURL = ''\n\n      if (linkTag.codeDestination) {\n        // @todo: the library should provide a default rendering for this\n        const memberReferences: ReadonlyArray<DocMemberReference> =\n          linkTag.codeDestination.memberReferences\n\n        if (memberReferences.length > 0) {\n          const memberIdentifier: DocMemberIdentifier | undefined =\n            memberReferences[memberReferences.length - 1]?.memberIdentifier\n\n          fullReferenceURL = memberReferences\n            .map((memberReference) => memberReference.memberIdentifier?.identifier)\n            .filter((identifier) => Boolean(identifier))\n            .join('/')\n\n          if (memberIdentifier) {\n            identifier = memberIdentifier.identifier\n          }\n        }\n      }\n\n      const linkText: string = linkTag.linkText || identifier || '???'\n\n      return {\n        _type: 'span',\n        _markDef: {\n          _type: 'link',\n          href: fullReferenceURL,\n        },\n        marks: [],\n        text: linkText,\n      }\n    }\n  }\n\n  if (docNode.kind === 'Paragraph') {\n    const transformedParagraph: DocParagraph = DocNodeTransforms.trimSpacesInParagraph(\n      docNode as DocParagraph,\n    )\n\n    if (\n      transformedParagraph.nodes.length === 1 &&\n      transformedParagraph.nodes[0]?.kind === 'SoftBreak'\n    ) {\n      return undefined\n    }\n\n    const children = _transformDocCommentContent(transformedParagraph)\n\n    if (!children) return undefined\n\n    // Find mark defs\n    const markDefs: SanityArrayItem<PortableTextSpanNode['_markDef']>[] = []\n\n    let style = 'normal'\n\n    // Check if the first span starts with a Markdown header prefix (#)\n    if (children[0]?._type === 'span') {\n      const headerMatch = RE_MARKDOWN_HEADER.exec(children[0].text)\n\n      if (headerMatch) {\n        const child: SanityArrayItem<PortableTextNode> = {\n          ...children[0],\n          text: headerMatch[2]!,\n        }\n\n        style = `h${headerMatch[1]?.length}`\n\n        children[0] = child\n      }\n    }\n\n    for (const child of children) {\n      if (child._type === 'span' && _isRecord(child._markDef)) {\n        const markDefKey = `${child._markDef._type}${markDefs.length}`\n\n        child._markDef._key = markDefKey\n\n        if (_isArray(child.marks)) {\n          child.marks.push(markDefKey)\n        }\n\n        markDefs.push({_key: markDefKey, ...child._markDef})\n\n        delete child._markDef\n      }\n    }\n\n    if (children.length === 0) {\n      children.push({\n        _type: 'span',\n        _key: '0',\n        marks: [],\n        text: '',\n      })\n    }\n\n    return {\n      _type: 'block',\n      style,\n      children,\n      markDefs,\n    }\n  }\n\n  if (docNode.kind === 'PlainText') {\n    return {\n      _type: 'span',\n      marks: [],\n      text: (docNode as DocPlainText).text,\n    }\n  }\n\n  if (docNode.kind === 'SoftBreak') {\n    return {\n      _type: 'span',\n      text: '\\n',\n    }\n  }\n\n  if (docNode.kind === 'BlockTag') {\n    const node = docNode as DocBlockTag\n\n    return {\n      _type: 'span',\n      marks: [],\n      text: node.tagName,\n    }\n  }\n\n  throw new Error(`unknown doc node type: ${docNode.kind}`)\n}\n\nexport function _transformDocCommentContent(\n  section: DocSection | DocParagraph,\n): SanityArrayItem<PortableTextNode>[] | undefined {\n  if (!section.nodes.length) return undefined\n\n  const nodes: SanityArrayItem<PortableTextNode>[] = section.nodes\n    .map((node, idx) => {\n      if (idx === 0 && node.kind === 'SoftBreak') {\n        return undefined\n      }\n\n      const transformedNode = _transformDocNode(node)\n\n      return transformedNode && {_key: `node${idx}`, ...transformedNode}\n    })\n    .filter(Boolean) as SanityArrayItem<PortableTextNode>[]\n\n  return nodes.length ? nodes : undefined\n}\n\nexport function _transformDocComment(docComment: DocComment): TSDocComment {\n  // Summary\n  const summary = _transformDocCommentContent(docComment.summarySection)\n\n  // Parameters\n  const parameters: SanityArrayItem<TSDocParamBlock>[] | undefined = docComment.params.blocks.length\n    ? docComment.params.blocks.map((paramBlock, idx) => ({\n        _type: 'tsdoc.paramBlock',\n        _key: `paramBlock${idx}`,\n        name: paramBlock.parameterName,\n        content: _transformDocCommentContent(paramBlock.content),\n      }))\n    : undefined\n\n  // Returns\n  const returns: TSDocReturnsBlock | undefined = docComment.returnsBlock && {\n    _type: 'tsdoc.returnsBlock',\n    content: _transformDocCommentContent(docComment.returnsBlock.content),\n  }\n\n  // `@remarks` block\n  const remarks: TSDocRemarksBlock | undefined = docComment.remarksBlock && {\n    _type: 'tsdoc.remarksBlock',\n    content: _transformDocCommentContent(docComment.remarksBlock.content),\n  }\n\n  const exampleBlocks: SanityArrayItem<TSDocExampleBlock>[] = []\n  const customBlocks: SanityArrayItem<TSDocCustomBlock>[] = []\n\n  // Custom blocks\n  for (let i = 0; i < docComment.customBlocks.length; i += 1) {\n    const customBlock = docComment.customBlocks[i]!\n\n    // This is a `@example` block\n    if (customBlock.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase) {\n      exampleBlocks.push({\n        _type: 'tsdoc.exampleBlock',\n        _key: `exampleBlock${i}`,\n        content: _transformDocCommentContent(customBlock.content),\n      })\n    } else {\n      customBlocks.push({\n        _type: 'tsdoc.customBlock',\n        _key: `customBlock${i}`,\n        tag: customBlock.blockTag.tagName,\n        content: _transformDocCommentContent(customBlock.content),\n      })\n    }\n  }\n\n  // `@see` blocks\n  const seeBlocks: SanityArrayItem<TSDocSeeBlock>[] | undefined = docComment.seeBlocks.length\n    ? docComment.seeBlocks.map((seeBlock, idx) => ({\n        _type: 'tsdoc.seeBlock',\n        _key: `seeBlock${idx}`,\n        content: _transformDocCommentContent(seeBlock.content),\n      }))\n    : undefined\n\n  // `@deprecated` block\n  const deprecated: TSDocDeprecatedBlock | undefined = docComment.deprecatedBlock && {\n    _type: 'tsdoc.deprecatedBlock',\n    content: _transformDocCommentContent(docComment.deprecatedBlock.content),\n  }\n\n  // Modifiers\n  const modifierTags: SanityArrayItem<TSDocModifierTag>[] | undefined = docComment.modifierTagSet\n    .nodes.length\n    ? docComment.modifierTagSet.nodes.map((modifierTag, idx) => ({\n        _type: 'tsdoc.modifierTag',\n        _key: `modifierTag${idx}`,\n        name: modifierTag.tagName,\n      }))\n    : undefined\n\n  return {\n    _type: 'tsdoc.docComment',\n    customBlocks: customBlocks.length > 0 ? customBlocks : undefined,\n    deprecated,\n    exampleBlocks: exampleBlocks.length > 0 ? exampleBlocks : undefined,\n    modifierTags,\n    parameters,\n    remarks,\n    returns,\n    seeBlocks,\n    summary,\n  }\n}\n","import {\n  ApiCallSignature,\n  ApiConstructor,\n  ApiFunction,\n  ApiIndexSignature,\n  Parameter,\n} from '@microsoft/api-extractor-model'\nimport {DocSection} from '@microsoft/tsdoc'\n\nimport {SanityArrayItem} from '../_lib/sanity'\nimport {SerializedAPIParameter} from '../types'\nimport {_transformTokens} from './_transformTokens'\nimport {RELEASE_TAGS} from './constants'\nimport {_transformDocCommentContent} from './transformDocComment'\nimport {TransformContext} from './types'\n\nexport function _transformParameter(\n  ctx: TransformContext,\n  node: ApiCallSignature | ApiConstructor | ApiFunction | ApiIndexSignature,\n  param: Parameter,\n  idx: number,\n): SanityArrayItem<SerializedAPIParameter> {\n  const tsDocComment = param.tsdocParamBlock?.content\n\n  return {\n    _type: 'api.parameter',\n    _key: `param${idx}`,\n    comment: tsDocComment\n      ? {\n          _type: 'tsdoc.docComment',\n          summary: _transformDocCommentContent(tsDocComment as unknown as DocSection),\n        }\n      : undefined,\n    name: param.name,\n    isOptional: param.isOptional,\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    type: _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        param.parameterTypeExcerpt.tokenRange.startIndex,\n        param.parameterTypeExcerpt.tokenRange.endIndex,\n      ),\n    ),\n  }\n}\n","import {\n  ApiCallSignature,\n  ApiClass,\n  ApiFunction,\n  ApiInterface,\n  ApiTypeAlias,\n  TypeParameter,\n} from '@microsoft/api-extractor-model'\n\nimport {SanityArrayItem} from '../_lib/sanity'\nimport {SerializedAPITypeParameter} from '../types'\nimport {_transformTokens} from './_transformTokens'\nimport {TransformContext} from './types'\n\nexport function _transformTypeParameter(\n  ctx: TransformContext,\n  node: ApiCallSignature | ApiClass | ApiFunction | ApiInterface | ApiTypeAlias,\n  p: TypeParameter,\n  idx: number,\n): SanityArrayItem<SerializedAPITypeParameter> {\n  return {\n    _type: 'api.typeParameter',\n    _key: `typeParameter${idx}`,\n    name: p.name,\n    constraintType: _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        p.constraintExcerpt.tokenRange.startIndex,\n        p.constraintExcerpt.tokenRange.endIndex,\n      ),\n    ),\n    defaultType: _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        p.defaultTypeExcerpt.tokenRange.startIndex,\n        p.defaultTypeExcerpt.tokenRange.endIndex,\n      ),\n    ),\n  }\n}\n","import {\n  ApiClass,\n  ApiConstructor,\n  ApiItem,\n  ApiMethod,\n  ApiProperty,\n} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPIClass, SerializedAPIClassMember} from '../types'\nimport {_classIsReactComponentType} from './_classIsReactComponentType'\nimport {_transformParameter} from './_transformParameter'\nimport {_transformTokens} from './_transformTokens'\nimport {_transformTypeParameter} from './_transformTypeParameter'\nimport {RELEASE_TAGS} from './constants'\nimport {_sanitizeName, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformClass(ctx: TransformContext, node: ApiClass): SerializedAPIClass {\n  if (!ctx.export) {\n    throw new Error('transformClass: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformClass: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformClass: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n  const name = _sanitizeName(node.name)\n  const isReactComponentType = _classIsReactComponentType(node)\n\n  return {\n    _type: 'api.class',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    isReactComponentType,\n    members: node.members.map((m, idx) => ({\n      _key: `member${idx}`,\n      ..._transformClassMember(ctx, m),\n    })),\n    name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(name)},\n    typeParameters: node.typeParameters.map((p, idx) => _transformTypeParameter(ctx, node, p, idx)),\n  }\n}\n\nfunction _transformClassMember(ctx: TransformContext, m: ApiItem): SerializedAPIClassMember {\n  if (m.kind === 'Constructor') {\n    const mem = m as ApiConstructor\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.constructor',\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n    }\n  }\n\n  if (m.kind === 'Method') {\n    const mem = m as ApiMethod\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.method',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      name: mem.name,\n      isOptional: mem.isOptional,\n      isStatic: mem.isStatic,\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      returnType: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.returnTypeExcerpt.tokenRange.startIndex,\n          mem.returnTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n      typeParameters: mem.typeParameters.map((p, idx) => _transformTypeParameter(ctx, mem, p, idx)),\n    }\n  }\n\n  if (m.kind === 'Property') {\n    const mem = m as ApiProperty\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.property',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      name: mem.name,\n      isEventProperty: mem.isEventProperty,\n      isOptional: mem.isOptional,\n      isStatic: mem.isStatic,\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      type: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.propertyTypeExcerpt.tokenRange.startIndex,\n          mem.propertyTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n    }\n  }\n\n  throw new Error(`Unknown class member kind: ${m.kind}`)\n}\n","import {ApiEnum, ApiEnumMember, ApiItem} from '@microsoft/api-extractor-model'\n\nimport {SanityArrayItem} from '../_lib/sanity'\nimport {APIEnumMember, SerializedAPIEnum} from '../types'\nimport {RELEASE_TAGS} from './constants'\nimport {_hash, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformEnum(ctx: TransformContext, node: ApiEnum): SerializedAPIEnum {\n  if (!ctx.export) {\n    throw new Error('transformEnum: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformEnum: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformEnum: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n\n  return {\n    _type: 'api.enum',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    members: node.members.map((m) => _transformEnumMember(ctx, m)),\n    name: node.name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(node.name)},\n  }\n}\n\nfunction _transformEnumMember(_ctx: TransformContext, m: ApiItem): SanityArrayItem<APIEnumMember> {\n  if (m.kind === 'EnumMember') {\n    const node = m as ApiEnumMember\n\n    return {\n      _type: 'api.enumMember',\n      _key: _hash(node.canonicalReference.toString()),\n      name: node.name,\n      releaseTag: RELEASE_TAGS[node.releaseTag],\n    }\n  }\n\n  throw new Error(`Unknown enum member kind: ${m.kind}`)\n}\n","import {ApiFunction} from '@microsoft/api-extractor-model'\n\nfunction _isUpperCase(char: string) {\n  return char === char.toUpperCase()\n}\n\nexport function _functionIsReactComponentType(node: ApiFunction): boolean {\n  const firstChar = node.name.slice(0, 1)\n\n  if (!_isUpperCase(firstChar) || firstChar === '_' || firstChar === '$') {\n    return false\n  }\n\n  const returnTypeTokens = node.excerptTokens.slice(\n    node.returnTypeExcerpt.tokenRange.startIndex,\n    node.returnTypeExcerpt.tokenRange.endIndex,\n  )\n\n  const returnTypeCode = returnTypeTokens\n    .map((t) => t.text)\n    .join('')\n    .trim()\n\n  const returnsReactElement =\n    returnTypeCode === 'React.ReactElement' ||\n    returnTypeCode === 'React_2.ReactElement' ||\n    returnTypeCode === 'ReactElement'\n  const returnsReactNode =\n    returnTypeCode === 'React.ReactNode' || 'React_2.ReactNode' || returnTypeCode === 'ReactNode'\n\n  const returnsReactPortal =\n    returnTypeCode === 'React.ReactPortal' ||\n    returnTypeCode === 'React_2.ReactPortal' ||\n    returnTypeCode === 'ReactPortal' ||\n    returnTypeCode.startsWith('React.ReactPortal |') ||\n    returnTypeCode.startsWith('React_2.ReactPortal |') ||\n    returnTypeCode.startsWith('ReactPortal |')\n\n  if (returnsReactElement || returnsReactNode || returnsReactPortal) {\n    return true\n  }\n\n  return false\n}\n","import {ApiFunction} from '@microsoft/api-extractor-model'\n\nconst hookRegex = /^use[A-Z0-9].*$/\n\nexport function _functionIsReactHook(node: ApiFunction): boolean {\n  return hookRegex.test(node.name)\n}\n","import {ApiFunction} from '@microsoft/api-extractor-model'\n\nimport {SanityReferenceValue} from '../_lib/sanity'\nimport {_transformTokens} from './_transformTokens'\nimport {TransformContext} from './types'\n\nexport function _functionPropsType(\n  ctx: TransformContext,\n  node: ApiFunction,\n): SanityReferenceValue | undefined {\n  const propsParam = node.parameters[0] && node.parameters[0].name === 'props' && node.parameters[0]\n\n  if (propsParam) {\n    const propsTokens = _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        propsParam.parameterTypeExcerpt.tokenRange.startIndex,\n        propsParam.parameterTypeExcerpt.tokenRange.endIndex,\n      ),\n    )\n\n    if (propsTokens.length) {\n      return propsTokens[0]?.member\n    }\n  }\n\n  return undefined\n}\n","import {ApiFunction} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPIFunction} from '../types'\nimport {_functionIsReactComponentType} from './_functionIsReactComponentType'\nimport {_functionIsReactHook} from './_functionIsReactHook'\nimport {_functionPropsType} from './_functionReactComponentPropsType'\nimport {_transformParameter} from './_transformParameter'\nimport {_transformTokens} from './_transformTokens'\nimport {_transformTypeParameter} from './_transformTypeParameter'\nimport {RELEASE_TAGS} from './constants'\nimport {_sanitizeName, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformFunction(\n  ctx: TransformContext,\n  node: ApiFunction,\n): SerializedAPIFunction {\n  if (!ctx.export) {\n    throw new Error('transformFunction: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformFunction: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformFunction: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n  const name = _sanitizeName(node.name)\n  const isReactComponentType = _functionIsReactComponentType(node)\n  const isReactHook = _functionIsReactHook(node)\n  const propsType = isReactComponentType ? _functionPropsType(ctx, node) : undefined\n\n  return {\n    _type: 'api.function',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    isReactComponentType,\n    isReactHook,\n    name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    parameters: node.parameters.map((p, idx) => _transformParameter(ctx, node, p, idx)),\n    propsType,\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(name)},\n    returnType: _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        node.returnTypeExcerpt.tokenRange.startIndex,\n        node.returnTypeExcerpt.tokenRange.endIndex,\n      ),\n    ),\n    typeParameters: node.typeParameters.map((p, idx) => _transformTypeParameter(ctx, node, p, idx)),\n    isOverloading: node.overloadIndex > 1,\n  }\n}\n","import {\n  ApiCallSignature,\n  ApiConstructSignature,\n  ApiIndexSignature,\n  ApiInterface,\n  ApiItem,\n  ApiMethodSignature,\n  ApiPropertySignature,\n} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPIInterface, SerializedAPIInterfaceMember} from '../types'\nimport {_transformParameter} from './_transformParameter'\nimport {_transformTokens} from './_transformTokens'\nimport {_transformTypeParameter} from './_transformTypeParameter'\nimport {RELEASE_TAGS} from './constants'\nimport {_sanitizeName, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformInterface(\n  ctx: TransformContext,\n  node: ApiInterface,\n): SerializedAPIInterface {\n  if (!ctx.export) {\n    throw new Error('transformEnum: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformEnum: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformEnum: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n  const name = _sanitizeName(node.name)\n\n  return {\n    _type: 'api.interface',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    extends: node.extendsTypes.map((t, idx) => {\n      return {\n        _type: 'api.extend',\n        _key: `extend${idx}`,\n        type: _transformTokens(\n          ctx,\n          t.excerpt.tokens.slice(t.excerpt.tokenRange.startIndex, t.excerpt.tokenRange.endIndex),\n        ),\n      }\n    }),\n    members: node.members.map((m, idx) => ({\n      _key: `member${idx}`,\n      ..._transformInterfaceMember(ctx, m),\n    })),\n    name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(name)},\n    typeParameters: node.typeParameters.map((p, idx: number) => {\n      return _transformTypeParameter(ctx, node, p, idx)\n    }),\n  }\n}\n\nfunction _transformInterfaceMember(\n  ctx: TransformContext,\n  m: ApiItem,\n): SerializedAPIInterfaceMember {\n  if (m.kind === 'CallSignature') {\n    const mem = m as ApiCallSignature\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.callSignature',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      // members: mem.members.map((m) => _transformInterfaceMember(ctx, m)),\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      returnType: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.returnTypeExcerpt.tokenRange.startIndex,\n          mem.returnTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n      typeParameters: mem.typeParameters.map((p, idx) => _transformTypeParameter(ctx, mem, p, idx)),\n    }\n  }\n\n  if (m.kind === 'ConstructSignature') {\n    const mem = m as ApiConstructSignature\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.constructSignature',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      // members: mem.members.map((m) => _transformInterfaceMember(ctx, m)),\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      returnType: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.returnTypeExcerpt.tokenRange.startIndex,\n          mem.returnTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n      typeParameters: mem.typeParameters.map((p, idx) => _transformTypeParameter(ctx, mem, p, idx)),\n    }\n  }\n\n  if (m.kind === 'MethodSignature') {\n    const mem = m as ApiMethodSignature\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.methodSignature',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      isOptional: mem.isOptional,\n      // members: mem.members.map((m) => _transformInterfaceMember(ctx, m)),\n      name: mem.name,\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      returnType: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.returnTypeExcerpt.tokenRange.startIndex,\n          mem.returnTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n      typeParameters: mem.typeParameters.map((p, idx) => _transformTypeParameter(ctx, mem, p, idx)),\n    }\n  }\n\n  if (m.kind === 'PropertySignature') {\n    const mem = m as ApiPropertySignature\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.propertySignature',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      isOptional: mem.isOptional,\n      name: mem.name,\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      type: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.propertyTypeExcerpt.tokenRange.startIndex,\n          mem.propertyTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n    }\n  }\n\n  if (m.kind === 'IndexSignature') {\n    const mem = m as ApiIndexSignature\n    const docComment = mem.tsdocComment\n\n    return {\n      _type: 'api.indexSignature',\n      comment: docComment ? _transformDocComment(docComment) : undefined,\n      parameters: mem.parameters.map((p, idx) => _transformParameter(ctx, mem, p, idx)),\n      releaseTag: RELEASE_TAGS[mem.releaseTag],\n      returnType: _transformTokens(\n        ctx,\n        mem.excerptTokens.slice(\n          mem.returnTypeExcerpt.tokenRange.startIndex,\n          mem.returnTypeExcerpt.tokenRange.endIndex,\n        ),\n      ),\n    }\n  }\n\n  throw new Error(`Unknown interface member kind: ${m.kind}`)\n}\n","import {ApiTypeAlias} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPITypeAlias} from '../types'\nimport {_transformTokens} from './_transformTokens'\nimport {_transformTypeParameter} from './_transformTypeParameter'\nimport {RELEASE_TAGS} from './constants'\nimport {_sanitizeName, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformTypeAlias(\n  ctx: TransformContext,\n  node: ApiTypeAlias,\n): SerializedAPITypeAlias {\n  if (!ctx.export) {\n    throw new Error('transformTypeAlias: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformTypeAlias: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformTypeAlias: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n  const name = _sanitizeName(node.name)\n\n  return {\n    _type: 'api.typeAlias',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(name)},\n    type: _transformTokens(\n      ctx,\n      node.excerptTokens.slice(\n        node.typeExcerpt.tokenRange.startIndex,\n        node.typeExcerpt.tokenRange.endIndex,\n      ),\n    ),\n    typeParameters: node.typeParameters.map((param, idx) =>\n      _transformTypeParameter(ctx, node, param, idx),\n    ),\n  }\n}\n","import {ApiVariable} from '@microsoft/api-extractor-model'\n\nimport {SanityReferenceValue} from '../_lib/sanity'\nimport {SerializedAPIVariable} from '../types'\nimport {_transformTokens} from './_transformTokens'\nimport {RELEASE_TAGS} from './constants'\nimport {_createExportMemberId, _sanitizeName, _slugify} from './helpers'\nimport {_transformDocComment} from './transformDocComment'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformVariable(\n  ctx: TransformContext,\n  node: ApiVariable,\n): SerializedAPIVariable {\n  if (!ctx.export) {\n    throw new Error('transformVariable: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformVariable: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformVariable: missing `release` document')\n  }\n\n  const name = _sanitizeName(node.name)\n  const docComment = node.tsdocComment\n  const comment = docComment ? _transformDocComment(docComment) : undefined\n  const type = _transformTokens(\n    ctx,\n    node.excerptTokens.slice(\n      node.variableTypeExcerpt.tokenRange.startIndex,\n      node.variableTypeExcerpt.tokenRange.endIndex,\n    ),\n  )\n  const isReactComponentType = _variableIsReactComponentType(node)\n  const propsType = isReactComponentType ? _variablePropsType(ctx, node) : undefined\n\n  return {\n    _type: 'api.variable',\n    comment,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    isReactComponentType,\n    name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    propsType,\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(name)},\n    type,\n  }\n}\n\nfunction _variableIsReactComponentType(node: ApiVariable) {\n  const typeTokens = node.excerptTokens.slice(\n    node.variableTypeExcerpt.tokenRange.startIndex,\n    node.variableTypeExcerpt.tokenRange.endIndex,\n  )\n\n  const typeCode = typeTokens\n    .map((t) => t.text)\n    .join('')\n    .trim()\n\n  const isNamedExoticComponent =\n    typeCode.startsWith('React.NamedExoticComponent<') ||\n    typeCode.startsWith('React_2.NamedExoticComponent<') ||\n    typeCode.startsWith('NamedExoticComponent<')\n  const isForwardRefExoticComponent =\n    typeCode.startsWith('React.ForwardRefExoticComponent<') ||\n    typeCode.startsWith('React_2.ForwardRefExoticComponent<') ||\n    typeCode.startsWith('ForwardRefExoticComponent<')\n  const isMemoExoticComponent =\n    typeCode.startsWith('React.MemoExoticComponent<') ||\n    typeCode.startsWith('React_2.MemoExoticComponent<') ||\n    typeCode.startsWith('MemoExoticComponent<')\n  const isStyledComponent = typeCode.startsWith('StyledComponent<')\n  const returnsReactElement =\n    typeCode.endsWith('=> React.ReactElement') ||\n    typeCode.endsWith('=> React_2.ReactElement') ||\n    typeCode.endsWith('=> ReactElement') ||\n    typeCode.endsWith('=> JSX.Element')\n\n  if (\n    isNamedExoticComponent ||\n    isForwardRefExoticComponent ||\n    isMemoExoticComponent ||\n    isStyledComponent ||\n    returnsReactElement\n  ) {\n    return true\n  }\n\n  return false\n}\n\nfunction _variablePropsType(\n  ctx: TransformContext,\n  node: ApiVariable,\n): SanityReferenceValue | undefined {\n  const typeTokens = node.excerptTokens.slice(\n    node.variableTypeExcerpt.tokenRange.startIndex,\n    node.variableTypeExcerpt.tokenRange.endIndex,\n  )\n\n  const componentRef = typeTokens.find((t) => t.kind === 'Reference' && t.text.endsWith('Props'))\n\n  if (componentRef && componentRef.canonicalReference) {\n    return {\n      _type: 'reference',\n      _ref: _createExportMemberId(ctx, componentRef.canonicalReference.toString()),\n    }\n\n    // console.log({\n    //   refString: sanityUIRef.canonicalReference.toString(),\n    //   ref: {\n    //     _type: 'reference',\n    //     _ref: _createExportMemberId(ctx, sanityUIRef.canonicalReference.toString()),\n    //   },\n    // })\n\n    // return undefined\n  }\n\n  return undefined\n}\n","import {\n  ApiClass,\n  ApiEnum,\n  ApiFunction,\n  ApiInterface,\n  ApiItem,\n  ApiNamespace,\n  ApiTypeAlias,\n  ApiVariable,\n} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPIMember, SerializedAPINamespace} from '../types'\nimport {RELEASE_TAGS} from './constants'\nimport {_slugify} from './helpers'\nimport {_transformClass} from './transformClass'\nimport {_transformDocComment} from './transformDocComment'\nimport {_transformEnum} from './transformEnum'\nimport {_transformFunction} from './transformFunction'\nimport {_transformInterface} from './transformInterface'\nimport {_transformTypeAlias} from './transformTypeAlias'\nimport {_transformVariable} from './transformVariable'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformNamespace(\n  ctx: TransformContext,\n  node: ApiNamespace,\n): SerializedAPINamespace {\n  if (!ctx.export) {\n    throw new Error('transformNamespace: missing `export` document')\n  }\n\n  if (!ctx.package) {\n    throw new Error('transformNamespace: missing `package` document')\n  }\n\n  if (!ctx.release) {\n    throw new Error('transformNamespace: missing `release` document')\n  }\n\n  const docComment = node.tsdocComment\n\n  return {\n    _type: 'api.namespace',\n    comment: docComment ? _transformDocComment(docComment) : undefined,\n    export: {_type: 'reference', _ref: ctx.export._id},\n    members: node.members.map((m, idx) => ({\n      _key: `member${idx}`,\n      ..._transformNamespaceMember(ctx, m),\n    })),\n    name: node.name,\n    package: {_type: 'reference', _ref: ctx.package._id},\n    release: {_type: 'reference', _ref: ctx.release._id},\n    releaseTag: RELEASE_TAGS[node.releaseTag],\n    slug: {_type: 'slug', current: _slugify(node.name)},\n  }\n}\n\nfunction _transformNamespaceMember(ctx: TransformContext, m: ApiItem): SerializedAPIMember {\n  if (m.kind === 'Class') {\n    return _transformClass(ctx, m as ApiClass)\n  }\n\n  if (m.kind === 'Enum') {\n    return _transformEnum(ctx, m as ApiEnum)\n  }\n\n  if (m.kind === 'Function') {\n    return _transformFunction(ctx, m as ApiFunction)\n  }\n\n  if (m.kind === 'Interface') {\n    return _transformInterface(ctx, m as ApiInterface)\n  }\n\n  if (m.kind === 'Namespace') {\n    return _transformNamespace(ctx, m as ApiNamespace)\n  }\n\n  if (m.kind === 'TypeAlias') {\n    return _transformTypeAlias(ctx, m as ApiTypeAlias)\n  }\n\n  if (m.kind === 'Variable') {\n    return _transformVariable(ctx, m as ApiVariable)\n  }\n\n  throw new Error(`Unknown namespace  kind: ${m.kind}`)\n}\n","import {\n  ApiClass,\n  ApiEnum,\n  ApiFunction,\n  ApiInterface,\n  ApiItem,\n  ApiNamespace,\n  ApiTypeAlias,\n  ApiVariable,\n} from '@microsoft/api-extractor-model'\n\nimport {SerializedAPIMember} from '../types'\nimport {_hash} from './helpers'\nimport {_transformClass} from './transformClass'\nimport {_transformEnum} from './transformEnum'\nimport {_transformFunction} from './transformFunction'\nimport {_transformInterface} from './transformInterface'\nimport {_transformNamespace} from './transformNamespace'\nimport {_transformTypeAlias} from './transformTypeAlias'\nimport {_transformVariable} from './transformVariable'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function transformExportMember(\n  ctx: TransformContext,\n  item: ApiItem,\n): SerializedAPIMember & {_id: string} {\n  if (item.kind === 'Class') {\n    return {_id: _getItemId(item), ..._transformClass(ctx, item as ApiClass)}\n  }\n\n  if (item.kind === 'Enum') {\n    return {_id: _getItemId(item), ..._transformEnum(ctx, item as ApiEnum)}\n  }\n\n  if (item.kind === 'Function') {\n    return {_id: _getItemId(item), ..._transformFunction(ctx, item as ApiFunction)}\n  }\n\n  if (item.kind === 'Interface') {\n    return {_id: _getItemId(item), ..._transformInterface(ctx, item as ApiInterface)}\n  }\n\n  if (item.kind === 'Namespace') {\n    return {_id: _getItemId(item), ..._transformNamespace(ctx, item as ApiNamespace)}\n  }\n\n  if (item.kind === 'TypeAlias') {\n    return {_id: _getItemId(item), ..._transformTypeAlias(ctx, item as ApiTypeAlias)}\n  }\n\n  if (item.kind === 'Variable') {\n    return {_id: _getItemId(item), ..._transformVariable(ctx, item as ApiVariable)}\n  }\n\n  throw new Error(`package: unknown member type: ${item.kind}`)\n}\n\nfunction _getItemId(item: ApiItem): string {\n  return `tsdoc-${_hash(item.canonicalReference.toString())}`\n}\n","import {ApiPackage} from '@microsoft/api-extractor-model'\n\nimport {SanityReferenceValue} from '../_lib/sanity'\nimport {APIPackageDocument} from '../types'\nimport {TransformContext} from './types'\n\n/**\n * @internal\n */\nexport function _transformPackage(ctx: TransformContext, node: ApiPackage): APIPackageDocument {\n  const _id = node.name.replace(/@/g, '').replace(/\\./g, '-').replace(/\\//g, '_')\n\n  return {\n    _type: 'api.package',\n    _id: `tsdoc-${_id}`,\n    latestRelease: ctx.package?.latestRelease as SanityReferenceValue,\n    name: ctx.name,\n    releases: [],\n    scope: ctx.scope,\n  }\n}\n","import path from 'path'\n\nimport type {ExtractResult} from '../extract'\nimport type {\n  APIDocument,\n  APIExportDocument,\n  APIPackageDocument,\n  APIReleaseDocument,\n  APISymbolDocument,\n  SerializedAPIMember,\n} from '../types'\nimport {_isRecord, _parsePackageName} from './helpers'\nimport {transformExportMember} from './transformExportMember'\nimport {_transformPackage} from './transformPackage'\nimport type {TransformContext, TransformOpts} from './types'\n\nfunction formatReleaseId(\n  packageScope: string | undefined,\n  packageName: string,\n  releaseVersion: string,\n) {\n  return [packageScope, packageName, releaseVersion]\n    .filter(Boolean)\n    .join('_')\n    .replace(/@/g, '')\n    .replace(/\\./g, '-')\n    .replace(/\\//g, '_')\n}\n\nfunction formatExportId(\n  packageScope: string | undefined,\n  packageName: string,\n  releaseVersion: string,\n  exportPath: string,\n) {\n  const prefix = [packageScope, packageName, releaseVersion].filter(Boolean).join('_')\n\n  return path\n    .join(prefix, exportPath === '.' ? './_main' : exportPath)\n    .replace(/@/g, '')\n    .replace(/\\./g, '-')\n    .replace(/\\//g, '_')\n}\n\n/** @public */\nexport function transform(extractResults: ExtractResult[], opts: TransformOpts): APIDocument[] {\n  const {version: releaseVersion} = opts.package\n\n  const state: {\n    exports: APIExportDocument[]\n    members: (SerializedAPIMember & {_id: string})[]\n    package?: APIPackageDocument\n    release?: APIReleaseDocument\n    memberNames: string[]\n    symbols: APISymbolDocument[]\n  } = {\n    exports: [],\n    members: [],\n    package: opts.currPackageDoc || undefined,\n    release: undefined,\n    memberNames: [],\n    symbols: [],\n  }\n\n  for (const extractResult of extractResults) {\n    const {apiPackage, exportPath} = extractResult\n\n    if (!apiPackage) {\n      // skip failed\n      continue\n    }\n\n    const [packageScope, packageName] = _parsePackageName(apiPackage.name)\n\n    const releaseId = formatReleaseId(packageScope, packageName, releaseVersion)\n\n    const exportId = formatExportId(packageScope, packageName, releaseVersion, exportPath)\n\n    const exportDoc: APIExportDocument = {\n      _id: `tsdoc-${exportId}`,\n      _type: 'api.export',\n      package: {_type: 'reference', _ref: ''},\n      release: {_type: 'reference', _ref: ''},\n      members: [],\n      name: resolveExportId(packageScope, packageName, exportPath),\n      path: exportPath || '.',\n    }\n\n    const ctx: TransformContext = {\n      apiPackage,\n      scope: packageScope,\n      name: packageName,\n      version: releaseVersion,\n      package: state.package,\n      release: state.release,\n      export: exportDoc,\n    }\n\n    const packageDoc = _transformPackage(ctx, apiPackage)\n\n    exportDoc.package._ref = packageDoc._id\n\n    ctx.package = packageDoc\n\n    ctx.release = {\n      exports: [],\n      memberNames: [],\n      ...ctx.release,\n      _type: 'api.release',\n      _id: `tsdoc-${releaseId}`,\n      package: {_type: 'reference', _ref: ctx.package._id},\n      version: releaseVersion,\n    }\n\n    exportDoc.release._ref = ctx.release._id\n\n    state.exports.push(exportDoc)\n\n    ctx.release.exports.push({\n      _type: 'reference',\n      _key: exportDoc._id,\n      _ref: exportDoc._id,\n    })\n\n    ctx.package.latestRelease = {_type: 'reference', _ref: ctx.release._id}\n\n    ctx.package.releases.push({\n      _key: ctx.release._id,\n      _type: 'reference',\n      _ref: ctx.release._id,\n    })\n\n    for (const member of apiPackage.members[0]?.members || []) {\n      const memberDoc = transformExportMember(ctx, member)\n\n      state.members.push(memberDoc)\n\n      exportDoc.members.push({\n        _key: memberDoc._id,\n        _type: 'reference',\n        _ref: memberDoc._id,\n      })\n\n      const symbolDoc: APISymbolDocument = {\n        _type: 'api.symbol',\n        _id: `tsdoc-${packageDoc._id}_${member.displayName}`,\n        name: member.displayName,\n        package: {_type: 'reference', _ref: packageDoc._id},\n      }\n\n      const hasSymbol = state.symbols.some((s) => s.name === symbolDoc.name)\n\n      if (!hasSymbol) state.symbols.push(symbolDoc)\n\n      if (!ctx.release.memberNames.includes(symbolDoc.name)) {\n        ctx.release.memberNames.push(symbolDoc.name)\n      }\n    }\n\n    // keep these references\n    state.package = ctx.package\n    state.release = ctx.release\n  }\n\n  const result: APIDocument[] = []\n\n  if (state.package) result.push(state.package)\n  if (state.release) result.push(state.release)\n\n  result.push(...state.exports, ...state.members, ...state.symbols)\n\n  // Remove references to non-existing documents\n  for (const doc of result) {\n    _removeNonExistingRefs(doc as unknown as Record<string, unknown>, result)\n  }\n\n  return result\n}\n\nfunction resolveExportId(\n  packageScope: string | undefined,\n  packageName: string,\n  exportPath: string | undefined,\n) {\n  const packageId = [packageScope, packageName].filter(Boolean).join('/')\n\n  return path.join(packageId, exportPath || '.')\n}\n\nfunction _removeNonExistingRefs(source: Record<string, unknown>, docs: APIDocument[]) {\n  for (const [key, value] of Object.entries(source)) {\n    if (_isRecord(value)) {\n      if (value['_ref'] === '$$unknown$$') {\n        const doc = docs.find((d) => {\n          return 'name' in d && d.name === source['text']\n        })\n\n        if (!doc) {\n          delete source[key]\n        }\n\n        value['_ref'] = doc?._id\n\n        continue\n      }\n\n      if (value['_type'] === 'reference') {\n        const exists = docs.some((d) => d._id === value['_ref'])\n\n        if (!exists) {\n          delete source[key]\n        }\n      } else {\n        _removeNonExistingRefs(value, docs)\n      }\n    }\n  }\n}\n"],"names":["_fileExists","file","accessSync","_printExtractMessages","cwd","messages","warnings","filter","msg","logLevel","sourceFilePath","path","relative","messageId","console","log","chalk","cyan","yellow","sourceFileLine","sourceFileColumn","gray","text","join","errors","red","CONFIG_FILE_NAMES","_findConfigFile","options","packagePath","f","resolve","_loadConfig","configPath","esbuildOptions","jsx","jsxFactory","jsxFragment","jsxImportSource","unregister","globalThis","__DEV__","register","config","require","default","defineConfig","DEFAULT_MESSAGES_CONFIG","compilerMessageReporting","addToApiReportFile","extractorMessageReporting","tsdocMessageReporting","createApiExtractorConfig","opts","projectFolder","mainEntryPointFilePath","bundledPackages","compiler","tsconfigFilePath","tsconfigPath","apiReport","enabled","reportFileName","docModel","apiJsonFilePath","tempDirPath","dtsRollup","tsdocMetadata","messagesConfig","createTempDir","Promise","reject","tmp","dir","err","dirPath","cleanupCallback","cleanup","createTSDocConfig","customTags","length","tsDocBaseBuf","readFile","tsDocBaseConfig","parse","toString","tagDefinitions","concat","map","t","tagName","name","syntaxKind","allowMultiple","supportForTags","customTag","tsDocConfig","noStandardTags","TSDocConfigFile","loadFromObject","extract","rules","strict","tsconfig","tempDir","packageJsonFullPath","loadConfig","strictOptions","parseStrictOptions","logger","createLogger","pkg","loadPkgWithReporting","info","exports","parseExports","results","exp","source","typesPath","replace","result","_doExtract","push","exportPath","_path","tsdocConfigFile","extractorConfig","ExtractorConfig","prepare","configObject","getExtractMessagesConfig","configObjectFullPath","undefined","packageJson","extractorResult","Extractor","invoke","localBuild","showVerboseMessages","messageCallback","message","handled","apiPackage","ApiPackage","loadFromJsonFile","succeeded","writeFile","util","promisify","fs","load","transformed","dirname","mkdirp","JSON","stringify","sanity","token","_loadToSanity","docs","tx","createClient","apiVersion","useCdn","transaction","doc","createOrReplace","commit","_hash","key","crypto","createHash","update","digest","_createExportMemberId","_ctx","_isArray","val","Array","isArray","_isRecord","Boolean","_sanitizeName","str","_slugify","slugify","_parsePackageName","nameStr","p","split","packageScope","packageName","Error","_classIsReactComponentType","node","extendedName","extendsType","excerpt","tokens","startsWith","_transformTokens","ctx","package","idx","kind","_type","_key","canonicalReference","member","_ref","_getTokenId","RELEASE_TAGS","RE_MARKDOWN_HEADER","_transformDocNode","docNode","marks","code","decodedText","language","linkTag","urlDestination","linkText","_markDef","href","identifier","fullReferenceURL","codeDestination","memberReferences","memberIdentifier","memberReference","transformedParagraph","DocNodeTransforms","trimSpacesInParagraph","nodes","children","_transformDocCommentContent","markDefs","style","headerMatch","exec","child","markDefKey","section","transformedNode","_transformDocComment","docComment","summary","summarySection","parameters","params","blocks","paramBlock","parameterName","content","returns","returnsBlock","remarks","remarksBlock","exampleBlocks","customBlocks","i","customBlock","blockTag","tagNameWithUpperCase","StandardTags","example","tag","seeBlocks","seeBlock","deprecated","deprecatedBlock","modifierTags","modifierTagSet","modifierTag","_transformParameter","param","tsDocComment","tsdocParamBlock","comment","isOptional","releaseTag","type","excerptTokens","slice","parameterTypeExcerpt","tokenRange","startIndex","endIndex","_transformTypeParameter","constraintType","constraintExcerpt","defaultType","defaultTypeExcerpt","_transformClass","export","release","tsdocComment","isReactComponentType","_id","members","m","_transformClassMember","slug","current","typeParameters","mem","isStatic","returnType","returnTypeExcerpt","isEventProperty","propertyTypeExcerpt","_transformEnum","_transformEnumMember","_isUpperCase","char","toUpperCase","_functionIsReactComponentType","firstChar","returnTypeCode","trim","returnsReactElement","hookRegex","_functionIsReactHook","test","_functionPropsType","propsParam","propsTokens","_transformFunction","isReactHook","propsType","isOverloading","overloadIndex","_transformInterface","extends","extendsTypes","_transformInterfaceMember","_transformTypeAlias","typeExcerpt","_transformVariable","variableTypeExcerpt","_variableIsReactComponentType","_variablePropsType","typeCode","isNamedExoticComponent","isForwardRefExoticComponent","isMemoExoticComponent","isStyledComponent","endsWith","componentRef","find","_transformNamespace","_transformNamespaceMember","transformExportMember","item","_getItemId","_transformPackage","latestRelease","releases","scope","formatReleaseId","releaseVersion","formatExportId","prefix","transform","extractResults","version","state","currPackageDoc","symbols","extractResult","releaseId","exportDoc","resolveExportId","packageDoc","memberNames","memberDoc","symbolDoc","displayName","some","s","includes","_removeNonExistingRefs","packageId","value","Object","entries","d"],"mappings":"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"}