@mintlify/scraping 4.0.163 → 4.0.165

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.
Files changed (36) hide show
  1. package/__test__/fixtures/basicAsyncAPI.yml +9 -0
  2. package/__test__/generateOpenApiPages.test.ts +1 -1
  3. package/__test__/generateOpenApiPagesForDocsConfig.test.ts +1 -1
  4. package/__test__/getAsyncApiDefinition.test.ts +23 -99
  5. package/__test__/prepareStringToBeValidFilename.test.ts +1 -1
  6. package/bin/apiPages/common.d.ts +8 -0
  7. package/bin/apiPages/common.js +41 -0
  8. package/bin/apiPages/common.js.map +1 -0
  9. package/bin/asyncapi/getAsyncApiDefinition.d.ts +3 -3
  10. package/bin/asyncapi/getAsyncApiDefinition.js +15 -5
  11. package/bin/asyncapi/getAsyncApiDefinition.js.map +1 -1
  12. package/bin/asyncapi/processAsyncApiChannel.d.ts +22 -0
  13. package/bin/asyncapi/processAsyncApiChannel.js +45 -0
  14. package/bin/asyncapi/processAsyncApiChannel.js.map +1 -0
  15. package/bin/openapi/common.d.ts +1 -5
  16. package/bin/openapi/common.js +1 -25
  17. package/bin/openapi/common.js.map +1 -1
  18. package/bin/openapi/generateOpenApiPages.js +2 -1
  19. package/bin/openapi/generateOpenApiPages.js.map +1 -1
  20. package/bin/openapi/generateOpenApiPagesForDocsConfig.js +2 -15
  21. package/bin/openapi/generateOpenApiPagesForDocsConfig.js.map +1 -1
  22. package/bin/tsconfig.build.tsbuildinfo +1 -1
  23. package/bin/utils/log.js +1 -1
  24. package/bin/utils/log.js.map +1 -1
  25. package/bin/utils/network.d.ts +2 -2
  26. package/bin/utils/network.js +6 -1
  27. package/bin/utils/network.js.map +1 -1
  28. package/package.json +3 -3
  29. package/src/apiPages/common.ts +61 -0
  30. package/src/asyncapi/getAsyncApiDefinition.ts +18 -8
  31. package/src/asyncapi/processAsyncApiChannel.ts +104 -0
  32. package/src/openapi/common.ts +6 -33
  33. package/src/openapi/generateOpenApiPages.ts +1 -1
  34. package/src/openapi/generateOpenApiPagesForDocsConfig.ts +2 -27
  35. package/src/utils/log.ts +1 -1
  36. package/src/utils/network.ts +7 -3
package/bin/utils/log.js CHANGED
@@ -89,7 +89,7 @@ export function log(message, statusOrColor = undefined, opts = {}) {
89
89
  ? 'error'
90
90
  : statusOrColor === 'warn' || statusOrColor === 'warning'
91
91
  ? 'warn'
92
- : 'log'](`${color}${icon} ${statusMsg}${activeColors.default}${separator}${typeof message === 'string' ||
92
+ : 'log'](`${color}${icon}${icon ? ' ' : ''}${statusMsg}${activeColors.default}${separator}${typeof message === 'string' ||
93
93
  typeof message === 'bigint' ||
94
94
  typeof message === 'number' ||
95
95
  typeof message === 'boolean'
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;CACT,CAAC;AAEX,MAAM,QAAQ,GAAG;IACf,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,EAAE;CACF,CAAC;AAEX,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GACvB,QAAQ,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;IAChF,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,QAAQ,CAAC;AAKf,MAAM,CAAC,MAAM,SAAS,GAAG,IAAa,CAAC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAG,IAAa,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAa,CAAC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAa,CAAC;AAEzC,MAAM,UAAU,GAAG,CACjB,OAAyB,EACzB,gBAAoC,SAAS,EAC7C,OAKI,EAAE;IAEN,IAAI,KAAK,GAAiC,YAAY,CAAC,IAAI,CAAC;IAC5D,IAAI,SAAS,GAAW,MAAM,CAAC;IAC/B,IAAI,IAAI,GAAW,QAAQ,CAAC;IAE5B,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa;YACX,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACzB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACxB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACpB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACrB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC1B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACvB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;wBACpB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,SAAS,CAAC;IACtB,CAAC;IAED,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,MAAM;YACT,MAAM;QAER,KAAK,SAAS;YACZ,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3B,SAAS,GAAG,SAAS,CAAC;YACtB,IAAI,GAAG,SAAS,CAAC;YACjB,MAAM;QAER,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YAC5B,SAAS,GAAG,SAAS,CAAC;YACtB,IAAI,GAAG,WAAW,CAAC;YACnB,MAAM;QAER,KAAK,SAAS,CAAC;QACf,KAAK,OAAO;YACV,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;YACzB,SAAS,GAAG,OAAO,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC;YACb,MAAM;IACV,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,GAAG,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,iBAAiB;QAAE,SAAS,GAAG,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5E,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,CACL,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,SAAS;QACtD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,SAAS;YACvD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,CACZ,CACC,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,YAAY,CAAC,OAAO,GAAG,SAAS,GAC9E,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAC1C,EAAE,CACH,CAAC;IACF,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { AsyncAPIDocument } from '@mintlify/common/asyncapi';
1
+ import { AsyncAPIDocumentInterface } from '@mintlify/common/asyncapi';
2
2
  import { OpenAPI } from 'openapi-types';
3
3
  import { Browser } from 'puppeteer';
4
4
  export declare function startPuppeteer(): Promise<Browser | undefined>;
@@ -6,4 +6,4 @@ export declare function getHtmlWithPuppeteer(browser: Browser, url: string | URL
6
6
  export declare function fetchPageHtml(url: string | URL, browser?: Browser | undefined): Promise<string>;
7
7
  export declare function fetchImage(url: string): Promise<NodeJS.TypedArray>;
8
8
  export declare function fetchOpenApi(url: URL): Promise<OpenAPI.Document>;
9
- export declare function fetchAsyncApi(url: URL): Promise<AsyncAPIDocument>;
9
+ export declare function fetchAsyncApi(url: URL): Promise<AsyncAPIDocumentInterface>;
@@ -1,3 +1,4 @@
1
+ import { validateAsyncApi } from '@mintlify/common/asyncapi';
1
2
  import yaml from 'js-yaml';
2
3
  import { launch } from 'puppeteer';
3
4
  import { framework } from './detectFramework.js';
@@ -154,7 +155,11 @@ export async function fetchAsyncApi(url) {
154
155
  throw new Error(`${res.status} ${res.statusText}`);
155
156
  }
156
157
  const file = await res.text();
157
- return yaml.load(file);
158
+ const { document, errorMessage } = await validateAsyncApi(file);
159
+ if (!document) {
160
+ throw new Error(`${url} - this document is not a valid AsyncAPI document - ${errorMessage}`);
161
+ }
162
+ return document;
158
163
  }
159
164
  catch (error) {
160
165
  const errorMessage = getErrorMessage(error);
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mintlify/scraping",
3
- "version": "4.0.163",
3
+ "version": "4.0.165",
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.313",
41
+ "@mintlify/common": "1.0.314",
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": "80ca70a57da4c2ee4db8430fb977ad46a8f9c78b"
81
+ "gitHead": "5f1fad60cd8625ceeaeb5e06fcd5aae5c65b2573"
82
82
  }
@@ -0,0 +1,61 @@
1
+ // Functions used for both OpenAPI and AsyncAPI page generation
2
+ import { NavigationEntry } from '@mintlify/models';
3
+ import {
4
+ DecoratedGroupsConfig,
5
+ DecoratedPagesConfig,
6
+ GroupsConfig,
7
+ PagesConfig,
8
+ } from '@mintlify/validation';
9
+
10
+ export const DEFAULT_API_GROUP_NAME = 'API Reference';
11
+ export const DEFAULT_WEBHOOK_GROUP_NAME = 'Webhooks';
12
+ export const DEFAULT_WEBSOCKETS_GROUP_NAME = 'Websockets';
13
+
14
+ export const findNavGroup = (
15
+ nav: GroupsConfig | DecoratedGroupsConfig,
16
+ groupName: string = DEFAULT_API_GROUP_NAME
17
+ ): PagesConfig | DecoratedPagesConfig => {
18
+ const group = nav.find(
19
+ (fileOrGroup) =>
20
+ typeof fileOrGroup === 'object' && 'group' in fileOrGroup && fileOrGroup.group === groupName
21
+ );
22
+ if (group === undefined || !('pages' in group)) {
23
+ const newGroup = {
24
+ group: groupName,
25
+ pages: [],
26
+ };
27
+ nav.push(newGroup);
28
+ return newGroup.pages;
29
+ } else {
30
+ return group.pages;
31
+ }
32
+ };
33
+
34
+ export const prepareStringToBeValidFilename = (str?: string) =>
35
+ str
36
+ ? str
37
+ .replaceAll(' ', '-')
38
+ .replace(/\{.*?\}/g, '-') // remove path parameters
39
+ .replace(/^-/, '')
40
+ .replace(/-$/, '')
41
+ .replace(/[{}(),.'\n\/]/g, '') // remove special characters
42
+ .replaceAll(/--/g, '-') // replace double hyphens
43
+ .toLowerCase()
44
+ : undefined;
45
+
46
+ // returns a filename that is unique within the given array of pages
47
+ export const generateUniqueFilenameWithoutExtension = (
48
+ pages: NavigationEntry[],
49
+ base: string
50
+ ): string => {
51
+ let filename = base;
52
+ if (pages.includes(filename)) {
53
+ let extension = 1;
54
+ filename = `${base}-${extension}`;
55
+ while (pages.includes(filename)) {
56
+ extension += 1;
57
+ filename = `${base}-${extension}`;
58
+ }
59
+ }
60
+ return filename;
61
+ };
@@ -1,13 +1,13 @@
1
- import { AsyncAPISchema } from '@mintlify/common/asyncapi';
1
+ import { AsyncAPIDocumentInterface, validateAsyncApi } from '@mintlify/common/asyncapi';
2
2
  import * as fs from 'fs/promises';
3
- import yaml from 'js-yaml';
4
3
  import * as path from 'path';
5
4
 
6
5
  import { fetchAsyncApi } from '../utils/network.js';
7
6
 
8
7
  export const getAsyncApiDefinition = async (
9
- pathOrDocumentOrUrl: string | AsyncAPISchema | URL
10
- ): Promise<{ document: AsyncAPISchema; isUrl: boolean }> => {
8
+ pathOrDocumentOrUrl: string | URL
9
+ ): Promise<{ document: AsyncAPIDocumentInterface | undefined; isUrl: boolean }> => {
10
+ let document: AsyncAPIDocumentInterface | undefined = undefined;
11
11
  if (typeof pathOrDocumentOrUrl === 'string') {
12
12
  if (pathOrDocumentOrUrl.startsWith('http://')) {
13
13
  // This is an invalid location either for a file or a URL
@@ -18,8 +18,18 @@ export const getAsyncApiDefinition = async (
18
18
  pathOrDocumentOrUrl = url;
19
19
  } catch {
20
20
  const pathname = path.join(process.cwd(), pathOrDocumentOrUrl.toString());
21
- const file = await fs.readFile(pathname, 'utf-8');
22
- pathOrDocumentOrUrl = yaml.load(file) as AsyncAPISchema;
21
+ try {
22
+ const file = await fs.readFile(pathname, 'utf-8');
23
+ const { document: asyncApiDocument, errorMessage } = await validateAsyncApi(file);
24
+ if (!asyncApiDocument) {
25
+ throw new Error(
26
+ `${pathname} - this document is not a valid AsyncAPI document - ${errorMessage}`
27
+ );
28
+ }
29
+ document = asyncApiDocument;
30
+ } catch (error) {
31
+ throw new Error(`Failed to read file ${pathname} - ${error}`);
32
+ }
23
33
  }
24
34
  }
25
35
  }
@@ -28,8 +38,8 @@ export const getAsyncApiDefinition = async (
28
38
  if (pathOrDocumentOrUrl.protocol !== 'https:') {
29
39
  throw new Error('Only HTTPS URLs are supported. Please provide an HTTPS URL');
30
40
  }
31
- pathOrDocumentOrUrl = await fetchAsyncApi(pathOrDocumentOrUrl);
41
+ document = await fetchAsyncApi(pathOrDocumentOrUrl);
32
42
  }
33
43
 
34
- return { document: pathOrDocumentOrUrl, isUrl };
44
+ return { document, isUrl };
35
45
  };
@@ -0,0 +1,104 @@
1
+ import { optionallyAddLeadingSlash } from '@mintlify/common';
2
+ import { AsyncAPIChannel } from '@mintlify/common/asyncapi';
3
+ import { DecoratedNavigationPage } from '@mintlify/models';
4
+ import {
5
+ DecoratedGroupsConfig,
6
+ DecoratedPagesConfig,
7
+ GroupsConfig,
8
+ PagesConfig,
9
+ } from '@mintlify/validation';
10
+ import fse from 'fs-extra';
11
+ import { outputFile } from 'fs-extra';
12
+ import { join, resolve } from 'path';
13
+
14
+ import {
15
+ DEFAULT_WEBSOCKETS_GROUP_NAME,
16
+ prepareStringToBeValidFilename,
17
+ generateUniqueFilenameWithoutExtension,
18
+ } from '../apiPages/common.js';
19
+
20
+ type GenerateAsyncApiPagesOptions = {
21
+ asyncApiFilePath?: string;
22
+ version?: string;
23
+ writeFiles?: boolean;
24
+ outDir?: string;
25
+ outDirBasePath?: string;
26
+ overwrite?: boolean;
27
+ };
28
+
29
+ type ProcessAsyncApiChannelArgs = {
30
+ channel: AsyncAPIChannel;
31
+ nav: GroupsConfig;
32
+ decoratedNav: DecoratedGroupsConfig;
33
+ writePromises: Promise<void>[];
34
+ pagesAcc: Record<string, DecoratedNavigationPage>;
35
+ opts?: GenerateAsyncApiPagesOptions;
36
+ findNavGroup: (
37
+ nav: GroupsConfig | DecoratedGroupsConfig,
38
+ groupName: string
39
+ ) => PagesConfig | DecoratedPagesConfig;
40
+ };
41
+
42
+ export const processAsyncApiChannel = ({
43
+ channel,
44
+ nav,
45
+ decoratedNav,
46
+ writePromises,
47
+ pagesAcc,
48
+ opts,
49
+ findNavGroup,
50
+ }: ProcessAsyncApiChannelArgs) => {
51
+ const asyncApiFilePathFromRoot = opts?.asyncApiFilePath
52
+ ? optionallyAddLeadingSlash(opts.asyncApiFilePath)
53
+ : undefined;
54
+
55
+ const operation = 'websocket';
56
+ const tags = channel.tags().all();
57
+ const groupName = tags[0]?.name() ?? DEFAULT_WEBSOCKETS_GROUP_NAME;
58
+ const channelId = channel.id();
59
+ const title = channel.title() ?? channelId;
60
+ const description = channel.description() ?? channel.summary() ?? '';
61
+
62
+ const folder = prepareStringToBeValidFilename(groupName) ?? '';
63
+ const base = join(opts?.outDir ?? '', folder, title);
64
+
65
+ const navGroup = findNavGroup(nav, groupName);
66
+ const decoratedNavGroup = findNavGroup(decoratedNav, groupName);
67
+
68
+ const filenameWithoutExtension = generateUniqueFilenameWithoutExtension(navGroup, base);
69
+
70
+ const asyncApiMetaTag = `${
71
+ asyncApiFilePathFromRoot ? `${asyncApiFilePathFromRoot} ` : ''
72
+ }${operation} ${channelId}`;
73
+
74
+ navGroup.push(filenameWithoutExtension);
75
+
76
+ const page: DecoratedNavigationPage = {
77
+ asyncapi: asyncApiMetaTag,
78
+ href: resolve('/', filenameWithoutExtension),
79
+ title: title,
80
+ description,
81
+ version: opts?.version,
82
+ };
83
+ decoratedNavGroup.push(page);
84
+ pagesAcc[filenameWithoutExtension] = page;
85
+
86
+ const targetPath = opts?.outDirBasePath
87
+ ? join(opts.outDirBasePath, `${filenameWithoutExtension}.mdx`)
88
+ : `${filenameWithoutExtension}.mdx`;
89
+ if (opts?.writeFiles && (!fse.pathExistsSync(targetPath) || opts.overwrite)) {
90
+ writePromises.push(createAsyncApiFrontmatter(targetPath, asyncApiMetaTag, opts.version));
91
+ }
92
+ };
93
+
94
+ const createAsyncApiFrontmatter = async (
95
+ filename: string,
96
+ asyncApiMetaTag: string,
97
+ version?: string
98
+ ) => {
99
+ const data = `---
100
+ asyncapi: ${asyncApiMetaTag}${version ? `\nversion: ${version}` : ''}
101
+ ---`;
102
+
103
+ await outputFile(filename, data);
104
+ };
@@ -3,7 +3,7 @@ import {
3
3
  optionallyAddLeadingSlash,
4
4
  slugToTitle,
5
5
  } from '@mintlify/common';
6
- import type { DecoratedNavigationPage, NavigationEntry } from '@mintlify/models';
6
+ import type { DecoratedNavigationPage } from '@mintlify/models';
7
7
  import { outputFile } from 'fs-extra';
8
8
  import fse from 'fs-extra';
9
9
  import fs from 'fs/promises';
@@ -11,6 +11,11 @@ import yaml from 'js-yaml';
11
11
  import { OpenAPI, OpenAPIV3 } from 'openapi-types';
12
12
  import path, { join, parse, resolve } from 'path';
13
13
 
14
+ import {
15
+ DEFAULT_WEBHOOK_GROUP_NAME,
16
+ prepareStringToBeValidFilename,
17
+ generateUniqueFilenameWithoutExtension,
18
+ } from '../apiPages/common.js';
14
19
  import { fetchOpenApi } from '../utils/network.js';
15
20
 
16
21
  export const getOpenApiDefinition = async (
@@ -42,23 +47,6 @@ export const getOpenApiDefinition = async (
42
47
  return { document: pathOrDocumentOrUrl, isUrl };
43
48
  };
44
49
 
45
- // returns a filename that is unique within the given array of pages
46
- export const generateUniqueFilenameWithoutExtension = (
47
- pages: NavigationEntry[],
48
- base: string
49
- ): string => {
50
- let filename = base;
51
- if (pages.includes(filename)) {
52
- let extension = 1;
53
- filename = `${base}-${extension}`;
54
- while (pages.includes(filename)) {
55
- extension += 1;
56
- filename = `${base}-${extension}`;
57
- }
58
- }
59
- return filename;
60
- };
61
-
62
50
  export const createOpenApiFrontmatter = async (
63
51
  filename: string,
64
52
  openApiMetaTag: string,
@@ -71,18 +59,6 @@ openapi: ${openApiMetaTag}${version ? `\nversion: ${version}` : ''}
71
59
  await outputFile(filename, data);
72
60
  };
73
61
 
74
- export const prepareStringToBeValidFilename = (str?: string) =>
75
- str
76
- ? str
77
- .replaceAll(' ', '-')
78
- .replace(/\{.*?\}/g, '-') // remove path parameters
79
- .replace(/^-/, '')
80
- .replace(/-$/, '')
81
- .replace(/[{}(),.'\n\/]/g, '') // remove special characters
82
- .replaceAll(/--/g, '-') // replace double hyphens
83
- .toLowerCase()
84
- : undefined;
85
-
86
62
  export type GenerateOpenApiPagesOptions = {
87
63
  openApiFilePath?: string;
88
64
  version?: string;
@@ -165,9 +141,6 @@ export function processOpenApiPath<N, DN>(
165
141
  });
166
142
  }
167
143
 
168
- export const DEFAULT_API_GROUP_NAME = 'API Reference';
169
- export const DEFAULT_WEBHOOK_GROUP_NAME = 'Webhooks';
170
-
171
144
  export function processOpenApiWebhook<N, DN>(
172
145
  webhook: string,
173
146
  webhookObject: OpenAPIV3.PathItemObject,
@@ -8,12 +8,12 @@ import type {
8
8
  } from '@mintlify/models';
9
9
  import { OpenAPI } from 'openapi-types';
10
10
 
11
+ import { DEFAULT_API_GROUP_NAME } from '../apiPages/common.js';
11
12
  import {
12
13
  getOpenApiDefinition,
13
14
  GenerateOpenApiPagesOptions,
14
15
  OpenApiPageGenerationResult,
15
16
  processOpenApiPath,
16
- DEFAULT_API_GROUP_NAME,
17
17
  processOpenApiWebhook,
18
18
  } from './common.js';
19
19
 
@@ -1,19 +1,14 @@
1
1
  import { validate } from '@mintlify/common';
2
2
  import { DecoratedNavigationPage } from '@mintlify/models';
3
- import {
4
- DecoratedGroupsConfig,
5
- GroupsConfig,
6
- PagesConfig,
7
- DecoratedPagesConfig,
8
- } from '@mintlify/validation';
3
+ import { DecoratedGroupsConfig, GroupsConfig } from '@mintlify/validation';
9
4
  import { OpenAPI } from 'openapi-types';
10
5
 
6
+ import { findNavGroup } from '../apiPages/common.js';
11
7
  import {
12
8
  getOpenApiDefinition,
13
9
  GenerateOpenApiPagesOptions,
14
10
  OpenApiPageGenerationResult,
15
11
  processOpenApiPath,
16
- DEFAULT_API_GROUP_NAME,
17
12
  processOpenApiWebhook,
18
13
  } from './common.js';
19
14
 
@@ -90,23 +85,3 @@ export async function generateOpenApiPagesForDocsConfig(
90
85
  isUrl,
91
86
  };
92
87
  }
93
-
94
- const findNavGroup = (
95
- nav: GroupsConfig | DecoratedGroupsConfig,
96
- groupName: string = DEFAULT_API_GROUP_NAME
97
- ): PagesConfig | DecoratedPagesConfig => {
98
- const group = nav.find(
99
- (fileOrGroup) =>
100
- typeof fileOrGroup === 'object' && 'group' in fileOrGroup && fileOrGroup.group === groupName
101
- );
102
- if (group === undefined || !('pages' in group)) {
103
- const newGroup = {
104
- group: groupName,
105
- pages: [],
106
- };
107
- nav.push(newGroup);
108
- return newGroup.pages;
109
- } else {
110
- return group.pages;
111
- }
112
- };
package/src/utils/log.ts CHANGED
@@ -114,7 +114,7 @@ export function log(
114
114
  ? 'warn'
115
115
  : 'log'
116
116
  ](
117
- `${color}${icon} ${statusMsg}${activeColors.default}${separator}${
117
+ `${color}${icon}${icon ? ' ' : ''}${statusMsg}${activeColors.default}${separator}${
118
118
  typeof message === 'string' ||
119
119
  typeof message === 'bigint' ||
120
120
  typeof message === 'number' ||
@@ -1,4 +1,4 @@
1
- import { AsyncAPIDocument } from '@mintlify/common/asyncapi';
1
+ import { AsyncAPIDocumentInterface, validateAsyncApi } from '@mintlify/common/asyncapi';
2
2
  import yaml from 'js-yaml';
3
3
  import { OpenAPI } from 'openapi-types';
4
4
  import { Browser, launch } from 'puppeteer';
@@ -180,14 +180,18 @@ export async function fetchOpenApi(url: URL): Promise<OpenAPI.Document> {
180
180
  }
181
181
  }
182
182
 
183
- export async function fetchAsyncApi(url: URL): Promise<AsyncAPIDocument> {
183
+ export async function fetchAsyncApi(url: URL): Promise<AsyncAPIDocumentInterface> {
184
184
  try {
185
185
  const res = await fetch(url);
186
186
  if (!res.ok) {
187
187
  throw new Error(`${res.status} ${res.statusText}`);
188
188
  }
189
189
  const file = await res.text();
190
- return yaml.load(file) as AsyncAPIDocument;
190
+ const { document, errorMessage } = await validateAsyncApi(file);
191
+ if (!document) {
192
+ throw new Error(`${url} - this document is not a valid AsyncAPI document - ${errorMessage}`);
193
+ }
194
+ return document;
191
195
  } catch (error) {
192
196
  const errorMessage = getErrorMessage(error);
193
197
  throw new Error(`${url} - failed to retrieve AsyncAPI file from source - ${errorMessage}`);