@mintlify/scraping 4.0.52 → 4.0.54
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/CONTRIBUTING.md +4 -4
- package/__test__/getOpenApiDefinition.test.ts +154 -0
- package/bin/cli.js +8 -4
- package/bin/cli.js.map +1 -1
- package/bin/openapi/generateOpenApiPages.d.ts +6 -1
- package/bin/openapi/generateOpenApiPages.js +32 -7
- package/bin/openapi/generateOpenApiPages.js.map +1 -1
- package/bin/tsconfig.build.tsbuildinfo +1 -1
- package/bin/utils/network.d.ts +2 -0
- package/bin/utils/network.js +15 -0
- package/bin/utils/network.js.map +1 -1
- package/package.json +3 -3
- package/src/cli.ts +8 -4
- package/src/openapi/generateOpenApiPages.ts +38 -7
- package/src/utils/network.ts +16 -0
package/bin/utils/network.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { OpenAPI } from 'openapi-types';
|
|
1
2
|
import { Browser } from 'puppeteer';
|
|
2
3
|
export declare function startPuppeteer(): Promise<Browser | undefined>;
|
|
3
4
|
export declare function getHtmlWithPuppeteer(browser: Browser, url: string | URL): Promise<string | undefined>;
|
|
4
5
|
export declare function fetchPageHtml(url: string | URL, browser?: Browser | undefined): Promise<string>;
|
|
5
6
|
export declare function fetchImage(url: string): Promise<NodeJS.TypedArray>;
|
|
7
|
+
export declare function fetchOpenApi(url: URL): Promise<OpenAPI.Document>;
|
package/bin/utils/network.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import yaml from 'js-yaml';
|
|
1
2
|
import { launch } from 'puppeteer';
|
|
2
3
|
import { framework } from './detectFramework.js';
|
|
3
4
|
import { getErrorMessage } from './errors.js';
|
|
@@ -132,4 +133,18 @@ export async function fetchImage(url) {
|
|
|
132
133
|
throw new Error(`${url} - failed to retrieve image from source${errorMessage}`);
|
|
133
134
|
}
|
|
134
135
|
}
|
|
136
|
+
export async function fetchOpenApi(url) {
|
|
137
|
+
try {
|
|
138
|
+
const res = await fetch(url);
|
|
139
|
+
if (!res.ok) {
|
|
140
|
+
throw new Error(`${res.status} ${res.statusText}`);
|
|
141
|
+
}
|
|
142
|
+
const file = await res.text();
|
|
143
|
+
return yaml.load(file);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const errorMessage = getErrorMessage(error);
|
|
147
|
+
throw new Error(`${url} - failed to retrieve OpenAPI file from source${errorMessage}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
135
150
|
//# sourceMappingURL=network.js.map
|
package/bin/utils/network.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,UAAU,GAAG;IACjB,uHAAuH;IACvH,uHAAuH;IACvH,uHAAuH;IACvH,uHAAuH;IACvH,uHAAuH;CAC/G,CAAC;AAEX,MAAM,OAAO,GAAG;IACd,iBAAiB,EAAE,gBAAgB;IACnC,MAAM,EACJ,yIAAyI;IAC3I,YAAY,EACV,uHAAuH;IACzH,iBAAiB,EAAE,yBAAyB;IAC5C,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,KAAK,UAAU,kBAAkB,CAC/B,SAA2B,EAC3B,UAAkB,CAAC,EACnB,QAAgB,IAAI,EACpB,SAAiB,CAAC;IAElB,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3D,OAAO,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,wCAAwC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAgB,EAChB,GAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAErC,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,iBAAiB,EAAE,CAAC;YACpB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,YAAY,CACrB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAC3E,CAAC;QACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACxB,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,CAAC,EAAE,EAAE;oBACJ,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;wBACnF,CAAC,CAAC,cAAc,EAAE,CAAC;gBACvB,CAAC,EACD,IAAI,CACL,CAAC;gBAEF,SAAS,UAAU,CAAC,EAA0B;oBAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,sBAAsB,CACzC,qBAAqB,CACW,CAAC;oBACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,UAAU,CAAC,IAAI,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;gBACD,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAiB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAiB,EACjB,UAA+B,SAAS;IAExC,IAAI,CAAC;QACH,IAAI,GAAG,GAAuB,SAAS,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QAE9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,0CAA0C,YAAY,EAAE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,iDAAiD,YAAY,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mintlify/scraping",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.54",
|
|
4
4
|
"description": "Scrape documentation frameworks to Mintlify docs",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18.0.0"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"format:check": "prettier . --check"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@mintlify/common": "1.0.
|
|
41
|
+
"@mintlify/common": "1.0.209",
|
|
42
42
|
"@mintlify/openapi-parser": "^0.0.7",
|
|
43
43
|
"fs-extra": "^11.1.1",
|
|
44
44
|
"hast-util-to-mdast": "^10.1.0",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"typescript": "^5.5.3",
|
|
79
79
|
"vitest": "^2.0.4"
|
|
80
80
|
},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "986db53372fd43afe751a9567ebf910f9dcdc70e"
|
|
82
82
|
}
|
package/src/cli.ts
CHANGED
|
@@ -30,12 +30,12 @@ await yargs(hideBin(process.argv))
|
|
|
30
30
|
)
|
|
31
31
|
|
|
32
32
|
.command(
|
|
33
|
-
'openapi-file <
|
|
33
|
+
'openapi-file <openapiLocation>',
|
|
34
34
|
'Creates MDX files from an OpenAPI spec',
|
|
35
35
|
(yargs) =>
|
|
36
36
|
yargs
|
|
37
|
-
.positional('
|
|
38
|
-
describe: 'The filename of the OpenAPI spec',
|
|
37
|
+
.positional('openapiLocation', {
|
|
38
|
+
describe: 'The filename or URL location of the OpenAPI spec',
|
|
39
39
|
type: 'string',
|
|
40
40
|
demandOption: true,
|
|
41
41
|
})
|
|
@@ -57,7 +57,7 @@ await yargs(hideBin(process.argv))
|
|
|
57
57
|
}),
|
|
58
58
|
async (argv) => {
|
|
59
59
|
try {
|
|
60
|
-
const { nav } = await generateOpenApiPages(argv.
|
|
60
|
+
const { nav, isUrl } = await generateOpenApiPages(argv.openapiLocation, {
|
|
61
61
|
openApiFilePath: undefined,
|
|
62
62
|
version: undefined,
|
|
63
63
|
writeFiles: argv.writeFiles,
|
|
@@ -66,6 +66,10 @@ await yargs(hideBin(process.argv))
|
|
|
66
66
|
});
|
|
67
67
|
console.log('navigation object suggestion:');
|
|
68
68
|
console.log(JSON.stringify(nav, undefined, 2));
|
|
69
|
+
if (isUrl) {
|
|
70
|
+
console.log('openapi location suggestion:');
|
|
71
|
+
console.log(`openapi: ${argv.openapiLocation}`);
|
|
72
|
+
}
|
|
69
73
|
} catch (error) {
|
|
70
74
|
if (error instanceof Error) {
|
|
71
75
|
console.error(error.message);
|
|
@@ -19,8 +19,40 @@ import { OpenAPI, OpenAPIV3 } from 'openapi-types';
|
|
|
19
19
|
import { join, resolve, parse } from 'path';
|
|
20
20
|
import path from 'path';
|
|
21
21
|
|
|
22
|
+
import { fetchOpenApi } from '../utils/network.js';
|
|
23
|
+
|
|
24
|
+
export const getOpenApiDefinition = async (
|
|
25
|
+
pathOrDocumentOrUrl: string | OpenAPI.Document | URL
|
|
26
|
+
): Promise<{ document: OpenAPI.Document; isUrl: boolean }> => {
|
|
27
|
+
if (typeof pathOrDocumentOrUrl === 'string') {
|
|
28
|
+
if (pathOrDocumentOrUrl.startsWith('http://')) {
|
|
29
|
+
// This is an invalid location either for a file or a URL
|
|
30
|
+
throw new Error('Only HTTPS URLs are supported. Please provide an HTTPS URL');
|
|
31
|
+
} else {
|
|
32
|
+
try {
|
|
33
|
+
const url = new URL(pathOrDocumentOrUrl);
|
|
34
|
+
pathOrDocumentOrUrl = url;
|
|
35
|
+
} catch {
|
|
36
|
+
const pathname = path.join(process.cwd(), pathOrDocumentOrUrl.toString());
|
|
37
|
+
const file = await fs.readFile(pathname, 'utf-8');
|
|
38
|
+
pathOrDocumentOrUrl = yaml.load(file) as OpenAPI.Document;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const isUrl = pathOrDocumentOrUrl instanceof URL;
|
|
44
|
+
if (pathOrDocumentOrUrl instanceof URL) {
|
|
45
|
+
if (pathOrDocumentOrUrl.protocol !== 'https:') {
|
|
46
|
+
throw new Error('Only HTTPS URLs are supported. Please provide an HTTPS URL');
|
|
47
|
+
}
|
|
48
|
+
pathOrDocumentOrUrl = await fetchOpenApi(pathOrDocumentOrUrl);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return { document: pathOrDocumentOrUrl as OpenAPI.Document, isUrl };
|
|
52
|
+
};
|
|
53
|
+
|
|
22
54
|
export const generateOpenApiPages = async (
|
|
23
|
-
|
|
55
|
+
pathOrDocumentOrUrl: string | OpenAPI.Document | URL,
|
|
24
56
|
opts?: {
|
|
25
57
|
openApiFilePath?: string | undefined;
|
|
26
58
|
version?: string | undefined;
|
|
@@ -34,18 +66,16 @@ export const generateOpenApiPages = async (
|
|
|
34
66
|
decoratedNav: DecoratedNavigation;
|
|
35
67
|
spec: OpenAPI.Document;
|
|
36
68
|
pagesAcc: Record<string, DecoratedNavigationPage>;
|
|
69
|
+
isUrl: boolean;
|
|
37
70
|
}> => {
|
|
38
71
|
const { openApiFilePath, version, writeFiles, outDir, outDirBasePath } = opts ?? {};
|
|
39
72
|
const openApiFilePathFromRoot = openApiFilePath
|
|
40
73
|
? optionallyAddLeadingSlash(openApiFilePath)
|
|
41
74
|
: undefined;
|
|
42
|
-
if (typeof pathOrDocument === 'string') {
|
|
43
|
-
const pathname = path.join(process.cwd(), pathOrDocument);
|
|
44
|
-
const file = await fs.readFile(pathname, 'utf-8');
|
|
45
|
-
pathOrDocument = yaml.load(file) as OpenAPI.Document;
|
|
46
|
-
}
|
|
47
75
|
|
|
48
|
-
const {
|
|
76
|
+
const { document, isUrl } = await getOpenApiDefinition(pathOrDocumentOrUrl);
|
|
77
|
+
|
|
78
|
+
const { schema } = await validate(document);
|
|
49
79
|
|
|
50
80
|
if (schema?.paths === undefined || Object.keys(schema.paths).length === 0) {
|
|
51
81
|
throw new Error('No paths defined.');
|
|
@@ -114,6 +144,7 @@ export const generateOpenApiPages = async (
|
|
|
114
144
|
decoratedNav,
|
|
115
145
|
spec: schema as OpenAPI.Document,
|
|
116
146
|
pagesAcc,
|
|
147
|
+
isUrl,
|
|
117
148
|
};
|
|
118
149
|
};
|
|
119
150
|
|
package/src/utils/network.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import yaml from 'js-yaml';
|
|
2
|
+
import { OpenAPI } from 'openapi-types';
|
|
1
3
|
import { Browser, launch } from 'puppeteer';
|
|
2
4
|
|
|
3
5
|
import { framework } from './detectFramework.js';
|
|
@@ -162,3 +164,17 @@ export async function fetchImage(url: string): Promise<NodeJS.TypedArray> {
|
|
|
162
164
|
throw new Error(`${url} - failed to retrieve image from source${errorMessage}`);
|
|
163
165
|
}
|
|
164
166
|
}
|
|
167
|
+
|
|
168
|
+
export async function fetchOpenApi(url: URL): Promise<OpenAPI.Document> {
|
|
169
|
+
try {
|
|
170
|
+
const res = await fetch(url);
|
|
171
|
+
if (!res.ok) {
|
|
172
|
+
throw new Error(`${res.status} ${res.statusText}`);
|
|
173
|
+
}
|
|
174
|
+
const file = await res.text();
|
|
175
|
+
return yaml.load(file) as OpenAPI.Document;
|
|
176
|
+
} catch (error) {
|
|
177
|
+
const errorMessage = getErrorMessage(error);
|
|
178
|
+
throw new Error(`${url} - failed to retrieve OpenAPI file from source${errorMessage}`);
|
|
179
|
+
}
|
|
180
|
+
}
|