import { CustomMapping } from 'generaltranslation/types'; import { SUPPORTED_FILE_EXTENSIONS } from '../formats/files/supportedFiles.js'; import { ParsingConfigOptions, GTParsingFlags, BaseParsingFlags, ParseFlagsByFileType } from './parsing.js'; import { Libraries, InlineLibrary } from './libraries.js'; export type { Updates } from 'generaltranslation/types'; export type Options = { config: string; apiKey?: string; projectId?: string; versionId?: string; jsconfig?: string; dictionary?: string; src?: string[]; defaultLocale?: string; locales?: string[]; baseUrl: string; inline?: boolean; ignoreErrors: boolean; suppressWarnings: boolean; dryRun: boolean; timeout: number; force?: boolean; stageTranslations?: boolean; experimentalLocalizeStaticUrls?: boolean; experimentalHideDefaultLocale?: boolean; experimentalFlattenJsonFiles?: boolean; experimentalLocalizeStaticImports?: boolean; experimentalLocalizeRelativeAssets?: boolean; experimentalAddHeaderAnchorIds?: 'mintlify' | 'default'; docsImportRewrites?: Array<{ match: string; replace: string; }>; }; export type OpenApiConfig = { files: string[]; translateFields?: string[]; }; export type MintlifyOptions = { openapi?: OpenApiConfig; inferTitleFromFilename?: boolean; }; export type SharedFlags = { config?: string; apiKey?: string; projectId?: string; }; export type TranslateFlags = SharedFlags & { versionId?: string; jsconfig?: string; dictionary?: string; defaultLocale?: string; locales?: string[]; ignoreErrors?: boolean; src?: string[]; timeout: number; dryRun: boolean; saveLocal?: boolean; stageTranslations?: boolean; setupProject?: boolean; publish?: boolean; force?: boolean; forceDownload?: boolean; tag?: string; message?: string; experimentalLocalizeStaticUrls?: boolean; experimentalHideDefaultLocale?: boolean; experimentalFlattenJsonFiles?: boolean; experimentalLocalizeStaticImports?: boolean; experimentalLocalizeRelativeAssets?: boolean; experimentalAddHeaderAnchorIds?: 'mintlify' | 'default'; excludeStaticUrls?: string[]; excludeStaticImports?: string[]; docsImportRewrites?: Array<{ match: string; replace: string; }>; }; export type WrapOptions = { src?: string[]; config: string; skipTs: boolean; disableIds: boolean; disableFormatting: boolean; addGTProvider: boolean; }; export type SetupOptions = { src?: string[]; config: string; }; export type GenerateSourceOptions = { src?: string[]; config: string; defaultLocale: string; dictionary?: string; jsconfig?: string; inline?: boolean; ignoreErrors: boolean; suppressWarnings: boolean; }; export type Framework = typeof Libraries.GT_NEXT | typeof Libraries.GT_REACT | typeof Libraries.GT_REACT_NATIVE | typeof Libraries.GT_TANSTACK_START; export type FrameworkObject = { name: 'mintlify'; type?: undefined; } | { name: 'next-app' | 'next-pages' | 'vite' | 'gatsby' | 'redwood' | 'react'; type: 'react'; }; export type ReactFrameworkObject = Extract; export type FrameworkType = FrameworkObject['type']; export type SupportedFrameworks = FrameworkObject['name']; export type SupportedReactFrameworks = Extract['name']; export type SupportedLibraries = InlineLibrary | 'next-intl' | 'react-i18next' | 'next-i18next' | 'i18next' | 'i18next-icu' | 'base'; export interface ContentScanner { scanForContent(options: WrapOptions, framework: Framework): Promise<{ errors: string[]; filesUpdated: string[]; warnings: string[]; }>; } export type SupportedFileExtension = (typeof SUPPORTED_FILE_EXTENSIONS)[number]; export type ResolvedFiles = { [K in SupportedFileExtension]?: string[]; } & { gt?: string; }; export type TransformOption = { match?: string; replace: string; }; export type TransformFiles = { [K in SupportedFileExtension]?: TransformOption | string | TransformOption[]; }; export type IncludePattern = string | { pattern: string; publish?: boolean; }; export type FilesOptions = { [K in SupportedFileExtension]?: { include: IncludePattern[]; exclude?: string[]; transform?: string | TransformOption | TransformOption[]; parsingFlags?: BaseParsingFlags; }; } & { gt?: { output: string; publish?: boolean; parsingFlags?: Partial; /** * @deprecated * use `files.gt.parsingFlags.includeSourceCodeContext` instead */ includeSourceCodeContext?: boolean; }; }; export type Settings = { config: string; configDirectory: string; baseUrl: string; dashboardUrl: string; apiKey?: string; projectId?: string; defaultLocale: string; locales: string[]; customMapping?: CustomMapping; files: { resolvedPaths: ResolvedFiles; placeholderPaths: ResolvedFiles; transformPaths: TransformFiles; publishPaths: Set; unpublishPaths: Set; parsingFlags: ParseFlagsByFileType; gtJson: { publish?: boolean; parsingFlags: GTParsingFlags; /** * @deprecated * use {@link files.gt.GTParsingFlags.parsingFlags.includeSourceCodeContext} instead */ includeSourceCodeContext?: boolean; }; }; stageTranslations: boolean; publish?: boolean; _versionId?: string; _branchId?: string; version?: string; description?: string; src?: string[]; framework?: SupportedFrameworks; options?: AdditionalOptions; modelProvider?: string; tag?: string; tagMessage?: string; parsingOptions: ParsingConfigOptions; branchOptions: BranchOptions; sharedStaticAssets?: SharedStaticAssetsConfig; }; export type BranchOptions = { currentBranch?: string; autoDetectBranches?: boolean; remoteName: string; enabled: boolean; }; export type AdditionalOptions = { jsonSchema?: { [fileGlob: string]: JsonSchema; }; yamlSchema?: { [fileGlob: string]: YamlSchema; }; skipFileValidation?: { json?: boolean; yaml?: boolean; mdx?: boolean; }; mintlify?: MintlifyOptions; docsUrlPattern?: string; docsImportPattern?: string; excludeStaticUrls?: string[]; excludeStaticImports?: string[]; docsHideDefaultLocaleImport?: boolean; copyFiles?: string[]; experimentalClearLocaleDirs?: boolean; clearLocaleDirsExclude?: string[]; experimentalLocalizeStaticImports?: boolean; experimentalLocalizeStaticUrls?: boolean; experimentalLocalizeRelativeAssets?: boolean; experimentalAddHeaderAnchorIds?: 'mintlify' | 'default'; experimentalHideDefaultLocale?: boolean; experimentalFlattenJsonFiles?: boolean; baseDomain?: string; docsImportRewrites?: Array<{ match: string; replace: string; }>; experimentalCanonicalLocaleKeys?: boolean; }; export type SharedStaticAssetsConfig = { include: string | string[]; outDir?: string; publicPath?: string; mirrorToLocales?: boolean; }; export type StructuralTransform = { sourcePointer: string; destinationPointer: string; }; export type JsonSchema = { preset?: 'mintlify' | 'openapi'; structuralTransform?: StructuralTransform[]; include?: string[]; composite?: { [sourceObjectPath: string]: SourceObjectOptions; }; }; export type YamlSchema = { preset?: 'mintlify' | 'openapi'; include?: string[]; transform?: TransformOptions; }; export type SourceObjectOptions = { type: 'array' | 'object'; include: string[]; key?: string; localeProperty?: string; transform?: TransformOptions; experimentalSort?: 'locales' | 'localesAlphabetical'; }; export type TransformOptions = { [transformPath: string]: TransformOption; };