@mintlify/prebuild 1.0.1285 → 1.0.1287
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/prebuild/categorizeFilePaths.d.ts +9 -2
- package/dist/prebuild/categorizeFilePaths.js +61 -15
- package/dist/prebuild/discoverOverlayFiles.d.ts +12 -0
- package/dist/prebuild/discoverOverlayFiles.js +56 -0
- package/dist/prebuild/getOpenApiFiles.d.ts +6 -1
- package/dist/prebuild/getOpenApiFiles.js +44 -4
- package/dist/prebuild/index.d.ts +8 -0
- package/dist/prebuild/index.js +39 -2
- package/dist/prebuild/invalidSpecFiles.d.ts +1 -1
- package/dist/prebuild/invalidSpecFiles.js +5 -1
- package/dist/prebuild/update/ConfigUpdater.d.ts +234 -99
- package/dist/prebuild/update/docsConfig/generateOpenApiDivisions.d.ts +2 -1
- package/dist/prebuild/update/docsConfig/generateOpenApiDivisions.js +3 -2
- package/dist/prebuild/update/docsConfig/generateOpenApiFromDocsConfig.d.ts +4 -0
- package/dist/prebuild/update/docsConfig/generateOpenApiFromDocsConfig.js +25 -8
- package/dist/prebuild/update/docsConfig/index.d.ts +3 -2
- package/dist/prebuild/update/docsConfig/index.js +2 -2
- package/dist/prebuild/update/index.d.ts +237 -101
- package/dist/prebuild/update/index.js +2 -1
- package/dist/prebuild/update/read/getOpenApiFilesFromConfig.d.ts +2 -1
- package/dist/prebuild/update/read/getOpenApiFilesFromConfig.js +10 -18
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { OverlayRegistry } from '@mintlify/common';
|
|
1
2
|
import type { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
|
|
2
3
|
import { DocsConfig } from '@mintlify/validation';
|
|
3
4
|
import type { InvalidSpecFile } from '../../invalidSpecFiles.js';
|
|
4
|
-
export declare const generateOpenApiDivisions: (docsConfig: DocsConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean, invalidSpecFiles?: InvalidSpecFile[], graphqlPages?: Record<string, DecoratedNavigationPage>, deferWrites?: boolean) => Promise<{
|
|
5
|
+
export declare const generateOpenApiDivisions: (docsConfig: DocsConfig, openApiFiles: OpenApiFile[], targetDir?: string, localSchema?: boolean, invalidSpecFiles?: InvalidSpecFile[], graphqlPages?: Record<string, DecoratedNavigationPage>, deferWrites?: boolean, overlayRegistry?: OverlayRegistry) => Promise<{
|
|
5
6
|
newDocsConfig: DocsConfig;
|
|
6
7
|
pagesAcc: Record<string, DecoratedNavigationPage>;
|
|
7
8
|
openApiFiles: OpenApiFile[];
|
|
@@ -2,8 +2,8 @@ import fse from 'fs-extra';
|
|
|
2
2
|
import { getOpenApiFilesFromConfig } from '../read/getOpenApiFilesFromConfig.js';
|
|
3
3
|
import { assertNoGeneratedRouteCollisions } from './generatedRouteCollisions.js';
|
|
4
4
|
import { generateOpenApiFromDocsConfig } from './generateOpenApiFromDocsConfig.js';
|
|
5
|
-
export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetDir, localSchema, invalidSpecFiles, graphqlPages, deferWrites = false) => {
|
|
6
|
-
const openapiFilesFromDocsConfig = await getOpenApiFilesFromConfig('docs', docsConfig, localSchema);
|
|
5
|
+
export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetDir, localSchema, invalidSpecFiles, graphqlPages, deferWrites = false, overlayRegistry) => {
|
|
6
|
+
const openapiFilesFromDocsConfig = await getOpenApiFilesFromConfig('docs', docsConfig, localSchema, overlayRegistry);
|
|
7
7
|
openApiFiles.push(...openapiFilesFromDocsConfig);
|
|
8
8
|
const pagesAcc = {};
|
|
9
9
|
const writes = [];
|
|
@@ -14,6 +14,7 @@ export const generateOpenApiDivisions = async (docsConfig, openApiFiles, targetD
|
|
|
14
14
|
targetDir,
|
|
15
15
|
localSchema,
|
|
16
16
|
invalidSpecFiles,
|
|
17
|
+
overlayRegistry,
|
|
17
18
|
...(planWrites
|
|
18
19
|
? {
|
|
19
20
|
writeFile: (filename, content) => {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type OverlayRegistry } from '@mintlify/common';
|
|
1
2
|
import type { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
|
|
2
3
|
import { NavigationConfig } from '@mintlify/validation';
|
|
3
4
|
import { type InvalidSpecFile } from '../../invalidSpecFiles.js';
|
|
@@ -9,6 +10,9 @@ export declare const generateOpenApiFromDocsConfig: (navigation: NavigationConfi
|
|
|
9
10
|
invalidSpecFiles?: InvalidSpecFile[];
|
|
10
11
|
mountPaths?: string[];
|
|
11
12
|
writeFile?: (filename: string, content: string) => void | Promise<void>;
|
|
13
|
+
overlayRegistry?: OverlayRegistry;
|
|
14
|
+
/** SSRF-safe fetch override for hosted spec URLs; supplied by server environments. */
|
|
15
|
+
fetchRemoteDocument?: (url: string) => Promise<unknown>;
|
|
12
16
|
}) => Promise<{
|
|
13
17
|
newNav: NavigationConfig;
|
|
14
18
|
newOpenApiFiles: OpenApiFile[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getOpenApiDocumentFromUrl, optionallyAddLeadingSlash, isAllowedLocalSchemaUrl, potentiallyParseOpenApiString, findNavGroup, findOpenApiPath, } from '@mintlify/common';
|
|
1
|
+
import { getOpenApiDocumentFromUrl, optionallyAddLeadingSlash, isAllowedLocalSchemaUrl, potentiallyParseOpenApiString, findNavGroup, findOpenApiPath, resolveOverlaysForSpec, } from '@mintlify/common';
|
|
2
2
|
import { readObjectArrayProperty } from '@mintlify/common/divisions/iterateObjectArrayProperty';
|
|
3
3
|
import { generateOpenApiPagesForDocsConfig } from '@mintlify/scraping';
|
|
4
4
|
import { processOpenApiPath, processOpenApiWebhook, } from '@mintlify/scraping/bin/openapi/common.js';
|
|
@@ -19,7 +19,7 @@ const getMountPathForPath = (candidatePath, mountPaths) => {
|
|
|
19
19
|
};
|
|
20
20
|
const resolveMountPath = (specPath, outputDir, mountPaths) => getMountPathForPath(specPath, mountPaths) || getMountPathForPath(outputDir, mountPaths);
|
|
21
21
|
export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pagesAcc, opts) => {
|
|
22
|
-
const { overwrite, writeFiles, targetDir, localSchema, invalidSpecFiles, mountPaths = [], writeFile, } = opts;
|
|
22
|
+
const { overwrite, writeFiles, targetDir, localSchema, invalidSpecFiles, mountPaths = [], writeFile, overlayRegistry, fetchRemoteDocument, } = opts;
|
|
23
23
|
const newOpenApiFiles = [];
|
|
24
24
|
const openApiFilePromises = new Map();
|
|
25
25
|
async function processOpenApiInNav(nav) {
|
|
@@ -31,7 +31,14 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
|
|
|
31
31
|
}
|
|
32
32
|
else if (Array.isArray(nav.openapi) && nav.openapi.length > 0) {
|
|
33
33
|
// TODO: handle multiple openapi files
|
|
34
|
-
|
|
34
|
+
const firstEntry = nav.openapi[0];
|
|
35
|
+
if (typeof firstEntry === 'string') {
|
|
36
|
+
openapi = firstEntry;
|
|
37
|
+
}
|
|
38
|
+
else if (firstEntry != undefined) {
|
|
39
|
+
openapi = firstEntry.source;
|
|
40
|
+
outputDir = firstEntry.directory ?? DEFAULT_OUTPUT_DIR;
|
|
41
|
+
}
|
|
35
42
|
}
|
|
36
43
|
else if (typeof nav.openapi === 'object' && 'source' in nav.openapi) {
|
|
37
44
|
openapi = nav.openapi.source;
|
|
@@ -42,7 +49,7 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
|
|
|
42
49
|
let openApiFile = undefined;
|
|
43
50
|
if (isAllowedLocalSchemaUrl(openapi, localSchema)) {
|
|
44
51
|
if (!openApiFilePromises.has(openapi)) {
|
|
45
|
-
const promise = createOpenApiFile(openapi);
|
|
52
|
+
const promise = createOpenApiFile(openapi, overlayRegistry, fetchRemoteDocument);
|
|
46
53
|
openApiFilePromises.set(openapi, promise);
|
|
47
54
|
openApiFile = await promise;
|
|
48
55
|
newOpenApiFiles.push(openApiFile);
|
|
@@ -102,7 +109,14 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
|
|
|
102
109
|
return { source: openapiProp, directory: undefined };
|
|
103
110
|
}
|
|
104
111
|
else if (Array.isArray(openapiProp) && openapiProp.length > 0) {
|
|
105
|
-
|
|
112
|
+
const firstEntry = openapiProp[0];
|
|
113
|
+
if (typeof firstEntry === 'string') {
|
|
114
|
+
return { source: firstEntry, directory: undefined };
|
|
115
|
+
}
|
|
116
|
+
if (firstEntry != undefined) {
|
|
117
|
+
return { source: firstEntry.source, directory: firstEntry.directory };
|
|
118
|
+
}
|
|
119
|
+
return { source: undefined, directory: undefined };
|
|
106
120
|
}
|
|
107
121
|
else if (typeof openapiProp === 'object' &&
|
|
108
122
|
'source' in openapiProp &&
|
|
@@ -150,7 +164,7 @@ export const generateOpenApiFromDocsConfig = async (navigation, openApiFiles, pa
|
|
|
150
164
|
if (openapiPath) {
|
|
151
165
|
if (isAllowedLocalSchemaUrl(openapiPath, localSchema)) {
|
|
152
166
|
if (!openApiFilePromises.has(openapiPath)) {
|
|
153
|
-
const promise = createOpenApiFile(openapiPath);
|
|
167
|
+
const promise = createOpenApiFile(openapiPath, overlayRegistry, fetchRemoteDocument);
|
|
154
168
|
openApiFilePromises.set(openapiPath, promise);
|
|
155
169
|
openApiFile = await promise;
|
|
156
170
|
newOpenApiFiles.push(openApiFile);
|
|
@@ -318,9 +332,12 @@ function getDivisionNav(nav) {
|
|
|
318
332
|
}
|
|
319
333
|
return undefined;
|
|
320
334
|
}
|
|
321
|
-
async function createOpenApiFile(openApiUrl) {
|
|
335
|
+
async function createOpenApiFile(openApiUrl, overlayRegistry, fetchRemoteDocument) {
|
|
322
336
|
try {
|
|
323
|
-
const
|
|
337
|
+
const overlays = overlayRegistry
|
|
338
|
+
? await resolveOverlaysForSpec(overlayRegistry, openApiUrl)
|
|
339
|
+
: undefined;
|
|
340
|
+
const document = await getOpenApiDocumentFromUrl(openApiUrl, { overlays, fetchRemoteDocument });
|
|
324
341
|
return {
|
|
325
342
|
filename: openApiUrl,
|
|
326
343
|
spec: document,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AsyncAPIFile } from '@mintlify/common';
|
|
1
|
+
import { AsyncAPIFile, type OverlayRegistry } from '@mintlify/common';
|
|
2
2
|
import { OpenApiFile, DecoratedNavigationPage } from '@mintlify/models';
|
|
3
3
|
import type { SdkFormat } from '@mintlify/scraping';
|
|
4
4
|
import { DocsConfig } from '@mintlify/validation';
|
|
5
5
|
import type { InvalidSpecFile } from '../../invalidSpecFiles.js';
|
|
6
|
-
export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, allowSourceRefs, }: {
|
|
6
|
+
export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, allowSourceRefs, overlayRegistry, }: {
|
|
7
7
|
contentDirectoryPath: string;
|
|
8
8
|
openApiFiles: OpenApiFile[];
|
|
9
9
|
asyncApiFiles: AsyncAPIFile[];
|
|
@@ -13,6 +13,7 @@ export declare function updateDocsConfigFile({ contentDirectoryPath, openApiFile
|
|
|
13
13
|
strict?: boolean;
|
|
14
14
|
invalidSpecFiles?: InvalidSpecFile[];
|
|
15
15
|
allowSourceRefs?: boolean;
|
|
16
|
+
overlayRegistry?: OverlayRegistry;
|
|
16
17
|
}): Promise<{
|
|
17
18
|
docsConfig: DocsConfig;
|
|
18
19
|
pagesAcc: Record<string, DecoratedNavigationPage>;
|
|
@@ -54,7 +54,7 @@ async function scanSdkFrontmatterMetadata(contentDirectoryPath, navigation) {
|
|
|
54
54
|
}));
|
|
55
55
|
return metadataBySlug;
|
|
56
56
|
}
|
|
57
|
-
export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, allowSourceRefs, }) {
|
|
57
|
+
export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles, asyncApiFiles, docsConfig, localSchema, disableOpenApi, strict, invalidSpecFiles, allowSourceRefs, overlayRegistry, }) {
|
|
58
58
|
const configPath = await getConfigPath(contentDirectoryPath, 'docs');
|
|
59
59
|
if (configPath == null && docsConfig == null) {
|
|
60
60
|
throw Error(NOT_CORRECT_PATH_ERROR);
|
|
@@ -71,7 +71,7 @@ export async function updateDocsConfigFile({ contentDirectoryPath, openApiFiles,
|
|
|
71
71
|
const graphqlResult = await generateGraphqlDivisionsFromDocsConfig(docsConfig, (source) => loadGraphqlSdlSource(source, contentDirectoryPath));
|
|
72
72
|
const { newDocsConfig: docsConfigWithGraphqlPages, pagesAcc: pagesAccWithGraphqlPages } = graphqlResult;
|
|
73
73
|
const { newDocsConfig: docsConfigWithOpenApiPages, pagesAcc: pagesAccWithOpenApiPages, openApiFiles: newOpenApiFiles, flushWrites: flushOpenApiWrites, } = !disableOpenApi
|
|
74
|
-
? await generateOpenApiDivisions(docsConfigWithGraphqlPages, openApiFiles, undefined, localSchema, invalidSpecFiles, pagesAccWithGraphqlPages, true)
|
|
74
|
+
? await generateOpenApiDivisions(docsConfigWithGraphqlPages, openApiFiles, undefined, localSchema, invalidSpecFiles, pagesAccWithGraphqlPages, true, overlayRegistry)
|
|
75
75
|
: {
|
|
76
76
|
newDocsConfig: docsConfigWithGraphqlPages,
|
|
77
77
|
pagesAcc: {},
|