@mintlify/prebuild 1.0.1086 → 1.0.1088

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,12 @@
1
1
  import { AsyncAPIFile } from '@mintlify/common';
2
2
  import { OpenApiFile } from '@mintlify/models';
3
+ import type { InvalidSpecFile } from './invalidSpecFiles.js';
3
4
  export declare const categorizeFilePaths: (contentDirectoryPath: string, mintIgnore?: string[], disableOpenApi?: boolean) => Promise<{
4
5
  contentFilenames: string[];
5
6
  staticFilenames: string[];
6
7
  openApiFiles: OpenApiFile[];
7
8
  asyncApiFiles: AsyncAPIFile[];
9
+ invalidSpecFiles: InvalidSpecFile[];
8
10
  snippets: string[];
9
11
  snippetsV2: string[];
10
12
  fileImportsMap: Map<string, Set<string>>;
@@ -5,7 +5,6 @@ import * as path from 'path';
5
5
  import { formatError } from '../errorMessages/formatError.js';
6
6
  import { getFileList } from '../fs/index.js';
7
7
  import { getFileExtension } from '../utils.js';
8
- import { addWarning } from './warnings.js';
9
8
  export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [], disableOpenApi) => {
10
9
  const allFiles = getFileList(contentDirectoryPath, contentDirectoryPath, mintIgnore);
11
10
  const mdxFiles = [];
@@ -48,6 +47,7 @@ export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [],
48
47
  const staticFilenames = [];
49
48
  const openApiFiles = [];
50
49
  const asyncApiFiles = [];
50
+ const invalidSpecFiles = [];
51
51
  for (const { filename, extension } of nonMdxFiles) {
52
52
  switch (extension) {
53
53
  case 'json':
@@ -55,7 +55,18 @@ export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [],
55
55
  case 'yml':
56
56
  const filePath = path.join(contentDirectoryPath, filename);
57
57
  const str = await readFile(filePath, 'utf8');
58
- const obj = yaml.load(str);
58
+ let obj;
59
+ try {
60
+ obj = yaml.load(str);
61
+ }
62
+ catch (error) {
63
+ invalidSpecFiles.push({
64
+ originalFileLocation: filename,
65
+ reason: `Invalid JSON or YAML syntax: ${error instanceof Error ? error.message : String(error)}`,
66
+ kind: 'syntax',
67
+ });
68
+ break;
69
+ }
59
70
  if (!obj || typeof obj !== 'object')
60
71
  break;
61
72
  const isOpenApi = Object.keys(obj).includes('openapi');
@@ -73,9 +84,10 @@ export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [],
73
84
  }
74
85
  }
75
86
  catch (error) {
76
- addWarning({
77
- type: 'openapi',
78
- message: `Error validating OpenAPI file ${filename}: ${error}`,
87
+ invalidSpecFiles.push({
88
+ originalFileLocation: filename,
89
+ reason: error instanceof Error ? error.message : String(error),
90
+ kind: 'openapi',
79
91
  });
80
92
  }
81
93
  }
@@ -90,7 +102,13 @@ export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [],
90
102
  });
91
103
  }
92
104
  }
93
- catch { }
105
+ catch (error) {
106
+ invalidSpecFiles.push({
107
+ originalFileLocation: filename,
108
+ reason: error instanceof Error ? error.message : String(error),
109
+ kind: 'asyncapi',
110
+ });
111
+ }
94
112
  }
95
113
  break;
96
114
  default:
@@ -102,6 +120,7 @@ export const categorizeFilePaths = async (contentDirectoryPath, mintIgnore = [],
102
120
  staticFilenames,
103
121
  openApiFiles,
104
122
  asyncApiFiles,
123
+ invalidSpecFiles,
105
124
  snippets,
106
125
  snippetsV2,
107
126
  fileImportsMap,
@@ -9,6 +9,7 @@ export declare const prebuild: (contentDirectoryPath: string, { localSchema, gro
9
9
  }) => Promise<PrebuildResult | undefined>;
10
10
  export * from './categorizeFilePaths.js';
11
11
  export * from './getOpenApiFiles.js';
12
+ export * from './invalidSpecFiles.js';
12
13
  export * from '../createPage/index.js';
13
14
  export * from '../createPage/preparseMdx/index.js';
14
15
  export * from './update/index.js';
@@ -1,5 +1,6 @@
1
1
  import { getConfigPath, getMintIgnore } from '../utils.js';
2
2
  import { categorizeFilePaths } from './categorizeFilePaths.js';
3
+ import { warnInvalidSpecFiles } from './invalidSpecFiles.js';
3
4
  import { update } from './update/index.js';
4
5
  import { clearWarnings, checkStrictMode } from './warnings.js';
5
6
  export const prebuild = async (contentDirectoryPath, { localSchema, groups, disableOpenApi, strict, } = {}) => {
@@ -15,7 +16,7 @@ export const prebuild = async (contentDirectoryPath, { localSchema, groups, disa
15
16
  throw Error('must be run in a directory where a docs.json file exists.');
16
17
  }
17
18
  const mintIgnore = await getMintIgnore(contentDirectoryPath);
18
- const { contentFilenames, staticFilenames, openApiFiles, asyncApiFiles, snippets, snippetsV2, fileImportsMap, } = await categorizeFilePaths(contentDirectoryPath, mintIgnore, disableOpenApi);
19
+ const { contentFilenames, staticFilenames, openApiFiles, asyncApiFiles, invalidSpecFiles, snippets, snippetsV2, fileImportsMap, } = await categorizeFilePaths(contentDirectoryPath, mintIgnore, disableOpenApi);
19
20
  await update({
20
21
  contentDirectoryPath,
21
22
  staticFilenames,
@@ -30,13 +31,17 @@ export const prebuild = async (contentDirectoryPath, { localSchema, groups, disa
30
31
  mintIgnore,
31
32
  disableOpenApi,
32
33
  strict,
34
+ invalidSpecFiles,
33
35
  });
36
+ // Deferred until after update so files that fail the build don't also warn
37
+ warnInvalidSpecFiles(invalidSpecFiles);
34
38
  // In strict mode, fail if there were any warnings
35
39
  checkStrictMode(strict);
36
40
  return { fileImportsMap };
37
41
  };
38
42
  export * from './categorizeFilePaths.js';
39
43
  export * from './getOpenApiFiles.js';
44
+ export * from './invalidSpecFiles.js';
40
45
  export * from '../createPage/index.js';
41
46
  export * from '../createPage/preparseMdx/index.js';
42
47
  export * from './update/index.js';
@@ -0,0 +1,7 @@
1
+ export type InvalidSpecFile = {
2
+ originalFileLocation: string;
3
+ reason: string;
4
+ kind: 'openapi' | 'asyncapi' | 'syntax';
5
+ };
6
+ export declare const findInvalidSpecFile: (invalidSpecFiles: InvalidSpecFile[] | undefined, reference: string) => InvalidSpecFile | undefined;
7
+ export declare const warnInvalidSpecFiles: (invalidSpecFiles: InvalidSpecFile[] | undefined) => void;
@@ -0,0 +1,13 @@
1
+ import { normalizeRelativePath } from '@mintlify/common';
2
+ import { addWarning } from './warnings.js';
3
+ export const findInvalidSpecFile = (invalidSpecFiles, reference) => invalidSpecFiles?.find((file) => normalizeRelativePath(file.originalFileLocation) === normalizeRelativePath(reference));
4
+ export const warnInvalidSpecFiles = (invalidSpecFiles) => {
5
+ for (const file of invalidSpecFiles ?? []) {
6
+ addWarning({
7
+ type: 'openapi',
8
+ message: file.kind === 'syntax'
9
+ ? `Error parsing ${file.originalFileLocation}: ${file.reason}`
10
+ : `Error validating ${file.kind === 'asyncapi' ? 'AsyncAPI' : 'OpenAPI'} file ${file.originalFileLocation}: ${file.reason}`,
11
+ });
12
+ }
13
+ };
@@ -1,6 +1,7 @@
1
1
  import type { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
2
2
  import { DocsConfig } from '@mintlify/validation';
3
- export declare const generateOpenApiDivisions: (docsConfig: DocsConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean) => Promise<{
3
+ import type { InvalidSpecFile } from '../../invalidSpecFiles.js';
4
+ export declare const generateOpenApiDivisions: (docsConfig: DocsConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean, invalidSpecFiles?: InvalidSpecFile[]) => Promise<{
4
5
  newDocsConfig: DocsConfig;
5
6
  pagesAcc: Record<string, DecoratedNavigationPage>;
6
7
  openApiFiles: OpenApiFile[];
@@ -1,6 +1,6 @@
1
1
  import { getOpenApiFilesFromConfig } from '../read/getOpenApiFilesFromConfig.js';
2
2
  import { generateOpenApiFromDocsConfig } from './generateOpenApiFromDocsConfig.js';
3
- export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetDir, localSchema) => {
3
+ export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetDir, localSchema, invalidSpecFiles) => {
4
4
  const openapiFilesFromDocsConfig = await getOpenApiFilesFromConfig('docs', docsConfig, localSchema);
5
5
  openApiFiles.push(...openapiFilesFromDocsConfig);
6
6
  const pagesAcc = {};
@@ -9,6 +9,7 @@ export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetD
9
9
  writeFiles: true,
10
10
  targetDir,
11
11
  localSchema,
12
+ invalidSpecFiles,
12
13
  });
13
14
  return {
14
15
  newDocsConfig: { ...docsConfig, navigation: newNav },
@@ -1,10 +1,12 @@
1
1
  import type { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
2
2
  import { NavigationConfig } from '@mintlify/validation';
3
+ import { type InvalidSpecFile } from '../../invalidSpecFiles.js';
3
4
  export declare const generateOpenApiFromDocsConfig: (navigation: NavigationConfig, openApiFiles: OpenApiFile[], pagesAcc: Record<string, DecoratedNavigationPage>, opts: {
4
5
  overwrite?: boolean;
5
6
  writeFiles: boolean;
6
7
  targetDir?: string;
7
8
  localSchema?: boolean;
9
+ invalidSpecFiles?: InvalidSpecFile[];
8
10
  }) => Promise<{
9
11
  newNav: NavigationConfig;
10
12
  newOpenApiFiles: OpenApiFile[];
@@ -3,9 +3,10 @@ import { generateOpenApiPagesForDocsConfig } from '@mintlify/scraping';
3
3
  import { processOpenApiPath, processOpenApiWebhook, } from '@mintlify/scraping/bin/openapi/common.js';
4
4
  import { divisions, } from '@mintlify/validation';
5
5
  import * as path from 'path';
6
+ import { findInvalidSpecFile } from '../../invalidSpecFiles.js';
6
7
  const DEFAULT_OUTPUT_DIR = 'api-reference';
7
8
  export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pagesAcc, opts) => {
8
- const { overwrite, writeFiles, targetDir, localSchema } = opts;
9
+ const { overwrite, writeFiles, targetDir, localSchema, invalidSpecFiles } = opts;
9
10
  const newOpenApiFiles = [];
10
11
  const openApiFilePromises = new Map();
11
12
  async function processOpenApiInNav(nav) {
@@ -42,7 +43,10 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
42
43
  file.originalFileLocation === optionallyAddLeadingSlash(openapi));
43
44
  }
44
45
  if (!openApiFile) {
45
- throw new Error(`Openapi file ${openapi} defined in ${getDivisionNav(nav)?.division} in your docs.json does not exist`);
46
+ const invalidSpecFile = findInvalidSpecFile(invalidSpecFiles, openapi);
47
+ throw new Error(invalidSpecFile
48
+ ? `Openapi file ${openapi} defined in ${getDivisionNav(nav)?.division} in your docs.json exists but is invalid: ${invalidSpecFile.reason}`
49
+ : `Openapi file ${openapi} defined in ${getDivisionNav(nav)?.division} in your docs.json does not exist`);
46
50
  }
47
51
  const { pagesAcc: pagesAccFromGeneratedOpenApiPages, nav: navFromGeneratedOpenApiPages } = await generateOpenApiPagesForDocsConfig(openApiFile.spec, {
48
52
  openApiFilePath: openApiFile.originalFileLocation,
@@ -146,7 +150,10 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
146
150
  }
147
151
  }
148
152
  if (!openApiFile) {
149
- throw new Error(`Openapi file ${openapiPath} referenced in docs.json does not exist`);
153
+ const invalidSpecFile = findInvalidSpecFile(invalidSpecFiles, openapiPath);
154
+ throw new Error(invalidSpecFile
155
+ ? `Openapi file ${openapiPath} referenced in docs.json exists but is invalid: ${invalidSpecFile.reason}`
156
+ : `Openapi file ${openapiPath} referenced in docs.json does not exist`);
150
157
  }
151
158
  const schema = openApiFile.spec;
152
159
  const isWebhook = method.toLowerCase() === 'webhook';
@@ -1,7 +1,8 @@
1
1
  import { AsyncAPIFile } from '@mintlify/common';
2
2
  import { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
3
3
  import { DocsConfig } from '@mintlify/validation';
4
- export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, }: {
4
+ import type { InvalidSpecFile } from '../../invalidSpecFiles.js';
5
+ export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, }: {
5
6
  contentDirectoryPath: string;
6
7
  openApiFiles: OpenApiFile[];
7
8
  asyncApiFiles: AsyncAPIFile[];
@@ -9,6 +10,7 @@ export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFile
9
10
  localSchema?: boolean;
10
11
  disableOpenApi?: boolean;
11
12
  strict?: boolean;
13
+ invalidSpecFiles?: InvalidSpecFile[];
12
14
  }): Promise<{
13
15
  docsConfig: DocsConfig;
14
16
  pagesAcc: Record<string, DecoratedNavigationPage>;
@@ -4,7 +4,7 @@ import { generateAsyncApiDivisions } from './generateAsyncApiDivisions.js';
4
4
  import { generateOpenApiDivisions } from './generateOpenApiDivisions.js';
5
5
  import { getCustomLanguages } from './getCustomLanguages.js';
6
6
  const NOT_CORRECT_PATH_ERROR = 'must be run in a directory where a docs.json file exists.';
7
- export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, }) {
7
+ export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, }) {
8
8
  const configPath = await getConfigPath(contentDirectoryPath, 'docs');
9
9
  if (configPath == null && docsConfig == null) {
10
10
  throw Error(NOT_CORRECT_PATH_ERROR);
@@ -17,7 +17,7 @@ export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles,
17
17
  }
18
18
  const customLanguages = await getCustomLanguages({ config: docsConfig, contentDirectoryPath });
19
19
  const { newDocsConfig: docsConfigWithOpenApiPages, pagesAcc: pagesAccWithOpenApiPages, openApiFiles: newOpenApiFiles, } = !disableOpenApi
20
- ? await generateOpenApiDivisions(docsConfig, openApiFiles, undefined, localSchema)
20
+ ? await generateOpenApiDivisions(docsConfig, openApiFiles, undefined, localSchema, invalidSpecFiles)
21
21
  : { newDocsConfig: docsConfig, pagesAcc: {}, openApiFiles: openApiFiles };
22
22
  const { newDocsConfig, pagesAcc: pagesAccWithAsyncApiPages, asyncApiFiles: newAsyncApiFiles, } = await generateAsyncApiDivisions(docsConfigWithOpenApiPages, asyncApiFiles, undefined, localSchema);
23
23
  const pagesAcc = { ...pagesAccWithOpenApiPages, ...pagesAccWithAsyncApiPages };
@@ -1,6 +1,7 @@
1
1
  import { AsyncAPIFile } from '@mintlify/common';
2
2
  import type { OpenApiFile } from '@mintlify/models';
3
3
  import type { Root } from 'mdast';
4
+ import type { InvalidSpecFile } from '../invalidSpecFiles.js';
4
5
  type UpdateArgs = {
5
6
  contentDirectoryPath: string;
6
7
  staticFilenames: string[];
@@ -15,8 +16,9 @@ type UpdateArgs = {
15
16
  mintIgnore?: string[];
16
17
  disableOpenApi?: boolean;
17
18
  strict?: boolean;
19
+ invalidSpecFiles?: InvalidSpecFile[];
18
20
  };
19
- export declare const update: ({ contentDirectoryPath, staticFilenames, openApiFiles, asyncApiFiles, contentFilenames, snippets, snippetV2Filenames, docsConfigPath, localSchema, groups, mintIgnore, disableOpenApi, strict, }: UpdateArgs) => Promise<{
21
+ export declare const update: ({ contentDirectoryPath, staticFilenames, openApiFiles, asyncApiFiles, contentFilenames, snippets, snippetV2Filenames, docsConfigPath, localSchema, groups, mintIgnore, disableOpenApi, strict, invalidSpecFiles, }: UpdateArgs) => Promise<{
20
22
  name: string;
21
23
  $schema: string;
22
24
  theme: "mint";
@@ -12,8 +12,8 @@ import { writeAsyncApiFiles } from './write/writeAsyncApiFiles.js';
12
12
  import { writeFiles, writeFile } from './write/writeFiles.js';
13
13
  import { writeOpenApiData } from './write/writeOpenApiData.js';
14
14
  import { writeRssFiles } from './write/writeRssFiles.js';
15
- export const update = async ({ contentDirectoryPath, staticFilenames, openApiFiles, asyncApiFiles, contentFilenames, snippets, snippetV2Filenames, docsConfigPath, localSchema, groups, mintIgnore, disableOpenApi, strict, }) => {
16
- const mintConfigResult = await updateMintConfigFile(contentDirectoryPath, openApiFiles, localSchema, strict);
15
+ export const update = async ({ contentDirectoryPath, staticFilenames, openApiFiles, asyncApiFiles, contentFilenames, snippets, snippetV2Filenames, docsConfigPath, localSchema, groups, mintIgnore, disableOpenApi, strict, invalidSpecFiles, }) => {
16
+ const mintConfigResult = await updateMintConfigFile(contentDirectoryPath, openApiFiles, localSchema, strict, invalidSpecFiles);
17
17
  // we used the original mint config without openapi pages injected
18
18
  // because we will do it in `updateDocsConfigFile`, this will avoid duplicated openapi pages
19
19
  const docsConfig = mintConfigResult != null ? upgradeToDocsConfig(mintConfigResult.originalMintConfig) : undefined;
@@ -25,6 +25,7 @@ export const update = async ({ contentDirectoryPath, staticFilenames, openApiFil
25
25
  localSchema,
26
26
  disableOpenApi,
27
27
  strict,
28
+ invalidSpecFiles,
28
29
  });
29
30
  const pagePromises = readPageContents({
30
31
  contentDirectoryPath,
@@ -1,5 +1,6 @@
1
1
  import type { DecoratedNavigationPage, MintConfig, Navigation, OpenApiFile, Division } from '@mintlify/models';
2
- export declare const generateOpenApiAnchorsOrTabs: (mintConfig: MintConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean) => Promise<{
2
+ import { type InvalidSpecFile } from '../../invalidSpecFiles.js';
3
+ export declare const generateOpenApiAnchorsOrTabs: (mintConfig: MintConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean, invalidSpecFiles?: InvalidSpecFile[]) => Promise<{
3
4
  mintConfig: MintConfig;
4
5
  pagesAcc: Record<string, DecoratedNavigationPage>;
5
6
  openApiFiles: OpenApiFile[];
@@ -9,6 +10,7 @@ export declare const generateOpenApiAnchorOrTab: (anchorsOrTabs: Division[] | un
9
10
  writeFiles: boolean;
10
11
  targetDir?: string;
11
12
  localSchema?: boolean;
13
+ invalidSpecFiles?: InvalidSpecFile[];
12
14
  }) => Promise<{
13
15
  newNavItems: Navigation;
14
16
  newOpenApiFiles: OpenApiFile[];
@@ -1,8 +1,9 @@
1
1
  import { getOpenApiDocumentFromUrl, isAllowedLocalSchemaUrl } from '@mintlify/common';
2
2
  import { generateOpenApiPages } from '@mintlify/scraping';
3
3
  import * as path from 'path';
4
+ import { findInvalidSpecFile } from '../../invalidSpecFiles.js';
4
5
  import { getOpenApiFilesFromConfig } from '../read/getOpenApiFilesFromConfig.js';
5
- export const generateOpenApiAnchorsOrTabs = async (mintConfig, openApiFiles, targetDir, localSchema) => {
6
+ export const generateOpenApiAnchorsOrTabs = async (mintConfig, openApiFiles, targetDir, localSchema, invalidSpecFiles) => {
6
7
  const openapiFilesFromMintConfig = await getOpenApiFilesFromConfig('mint', mintConfig);
7
8
  openApiFiles.push(...openapiFilesFromMintConfig);
8
9
  const pagesAcc = {};
@@ -12,12 +13,14 @@ export const generateOpenApiAnchorsOrTabs = async (mintConfig, openApiFiles, tar
12
13
  writeFiles: true,
13
14
  targetDir,
14
15
  localSchema,
16
+ invalidSpecFiles,
15
17
  }),
16
18
  generateOpenApiAnchorOrTab(mintConfig.tabs, openApiFiles, pagesAcc, {
17
19
  overwrite: true,
18
20
  writeFiles: true,
19
21
  targetDir,
20
22
  localSchema,
23
+ invalidSpecFiles,
21
24
  }),
22
25
  ]);
23
26
  const newNav = [
@@ -36,7 +39,7 @@ export const generateOpenApiAnchorsOrTabs = async (mintConfig, openApiFiles, tar
36
39
  };
37
40
  };
38
41
  export const generateOpenApiAnchorOrTab = async (anchorsOrTabs, openApiFiles, pagesAcc, opts) => {
39
- const { overwrite, writeFiles, targetDir, localSchema } = opts;
42
+ const { overwrite, writeFiles, targetDir, localSchema, invalidSpecFiles } = opts;
40
43
  const newNavItems = [];
41
44
  const newOpenApiFiles = [];
42
45
  if (anchorsOrTabs == undefined)
@@ -65,7 +68,10 @@ export const generateOpenApiAnchorOrTab = async (anchorsOrTabs, openApiFiles, pa
65
68
  file.originalFileLocation === anchorOrTab.openapi);
66
69
  }
67
70
  if (openApiFile == undefined) {
68
- throw new Error(`Openapi file "${anchorOrTab.openapi}" defined in the anchor or tab array at index ${i} in your mint.json does not exist`);
71
+ const invalidSpecFile = findInvalidSpecFile(invalidSpecFiles, anchorOrTab.openapi);
72
+ throw new Error(invalidSpecFile
73
+ ? `Openapi file "${anchorOrTab.openapi}" defined in the anchor or tab array at index ${i} in your mint.json exists but is invalid: ${invalidSpecFile.reason}`
74
+ : `Openapi file "${anchorOrTab.openapi}" defined in the anchor or tab array at index ${i} in your mint.json does not exist`);
69
75
  }
70
76
  promises.push((async () => {
71
77
  const { pagesAcc: pagesAccFromGeneratedOpenApiPages, nav: navFromGeneratedOpenApiPages } = await generateOpenApiPages(openApiFile.spec, {
@@ -1,5 +1,6 @@
1
1
  import { DecoratedNavigationPage, MintConfig, OpenApiFile } from '@mintlify/models';
2
- export declare function updateMintConfigFile(contentDirectoryPath: string, openApiFiles: OpenApiFile[], localSchema?: boolean, strict?: boolean): Promise<{
2
+ import type { InvalidSpecFile } from '../../invalidSpecFiles.js';
3
+ export declare function updateMintConfigFile(contentDirectoryPath: string, openApiFiles: OpenApiFile[], localSchema?: boolean, strict?: boolean, invalidSpecFiles?: InvalidSpecFile[]): Promise<{
3
4
  mintConfig: MintConfig;
4
5
  originalMintConfig: MintConfig;
5
6
  pagesAcc: Record<string, DecoratedNavigationPage>;
@@ -1,13 +1,13 @@
1
1
  import { getConfigPath } from '../../../utils.js';
2
2
  import { MintConfigUpdater } from '../ConfigUpdater.js';
3
3
  import { generateOpenApiAnchorsOrTabs } from './generateOpenApiAnchorsOrTabs.js';
4
- export async function updateMintConfigFile(contentDirectoryPath, openApiFiles, localSchema, strict) {
4
+ export async function updateMintConfigFile(contentDirectoryPath, openApiFiles, localSchema, strict, invalidSpecFiles) {
5
5
  const configPath = await getConfigPath(contentDirectoryPath, 'mint');
6
6
  if (configPath == null) {
7
7
  return null;
8
8
  }
9
9
  const mintConfig = await MintConfigUpdater.getConfig(configPath, strict, contentDirectoryPath);
10
- const { mintConfig: newMintConfig, pagesAcc, openApiFiles: newOpenApiFiles, } = await generateOpenApiAnchorsOrTabs(mintConfig, openApiFiles, undefined, localSchema);
10
+ const { mintConfig: newMintConfig, pagesAcc, openApiFiles: newOpenApiFiles, } = await generateOpenApiAnchorsOrTabs(mintConfig, openApiFiles, undefined, localSchema, invalidSpecFiles);
11
11
  await MintConfigUpdater.writeConfigFile(newMintConfig);
12
12
  return {
13
13
  mintConfig: newMintConfig,