@mintlify/scraping 4.0.164 → 4.0.166
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/__test__/fixtures/basicAsyncAPI.yml +9 -0
- package/__test__/generateOpenApiPages.test.ts +1 -1
- package/__test__/generateOpenApiPagesForDocsConfig.test.ts +1 -1
- package/__test__/getAsyncApiDefinition.test.ts +23 -99
- package/__test__/prepareStringToBeValidFilename.test.ts +1 -1
- package/bin/apiPages/common.d.ts +8 -0
- package/bin/apiPages/common.js +41 -0
- package/bin/apiPages/common.js.map +1 -0
- package/bin/asyncapi/getAsyncApiDefinition.d.ts +3 -3
- package/bin/asyncapi/getAsyncApiDefinition.js +15 -5
- package/bin/asyncapi/getAsyncApiDefinition.js.map +1 -1
- package/bin/asyncapi/processAsyncApiChannel.d.ts +22 -0
- package/bin/asyncapi/processAsyncApiChannel.js +45 -0
- package/bin/asyncapi/processAsyncApiChannel.js.map +1 -0
- package/bin/openapi/common.d.ts +1 -5
- package/bin/openapi/common.js +1 -25
- package/bin/openapi/common.js.map +1 -1
- package/bin/openapi/generateOpenApiPages.js +2 -1
- package/bin/openapi/generateOpenApiPages.js.map +1 -1
- package/bin/openapi/generateOpenApiPagesForDocsConfig.js +2 -15
- package/bin/openapi/generateOpenApiPagesForDocsConfig.js.map +1 -1
- package/bin/tsconfig.build.tsbuildinfo +1 -1
- package/bin/utils/network.d.ts +2 -2
- package/bin/utils/network.js +6 -1
- package/bin/utils/network.js.map +1 -1
- package/package.json +4 -4
- package/src/apiPages/common.ts +61 -0
- package/src/asyncapi/getAsyncApiDefinition.ts +18 -8
- package/src/asyncapi/processAsyncApiChannel.ts +104 -0
- package/src/openapi/common.ts +6 -33
- package/src/openapi/generateOpenApiPages.ts +1 -1
- package/src/openapi/generateOpenApiPagesForDocsConfig.ts +2 -27
- package/src/utils/network.ts +7 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
|
|
3
|
-
import { DEFAULT_API_GROUP_NAME, DEFAULT_WEBHOOK_GROUP_NAME } from '../src/
|
|
3
|
+
import { DEFAULT_API_GROUP_NAME, DEFAULT_WEBHOOK_GROUP_NAME } from '../src/apiPages/common.js';
|
|
4
4
|
import { generateOpenApiPages } from '../src/openapi/generateOpenApiPages.js';
|
|
5
5
|
import {
|
|
6
6
|
emptyDoc,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OpenAPI, OpenAPIV3_1 } from 'openapi-types';
|
|
2
2
|
import { describe, it, expect } from 'vitest';
|
|
3
3
|
|
|
4
|
-
import { DEFAULT_API_GROUP_NAME, DEFAULT_WEBHOOK_GROUP_NAME } from '../src/
|
|
4
|
+
import { DEFAULT_API_GROUP_NAME, DEFAULT_WEBHOOK_GROUP_NAME } from '../src/apiPages/common.js';
|
|
5
5
|
import { generateOpenApiPagesForDocsConfig } from '../src/openapi/generateOpenApiPagesForDocsConfig.js';
|
|
6
6
|
import {
|
|
7
7
|
emptyDoc,
|
|
@@ -1,107 +1,55 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { validateAsyncApi } from '@mintlify/common/asyncapi';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
4
|
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
5
5
|
|
|
6
6
|
import { getAsyncApiDefinition } from '../src/asyncapi/getAsyncApiDefinition.js';
|
|
7
7
|
|
|
8
|
-
vi.mock('fs/promises');
|
|
9
|
-
vi.mock('node-fetch');
|
|
10
|
-
|
|
11
|
-
const mockAsyncApiDoc: AsyncAPISchema = {
|
|
12
|
-
asyncapi: '3.0.0',
|
|
13
|
-
info: {
|
|
14
|
-
title: 'Test API',
|
|
15
|
-
version: '1.0.0',
|
|
16
|
-
},
|
|
17
|
-
channels: {},
|
|
18
|
-
components: {},
|
|
19
|
-
};
|
|
20
|
-
|
|
21
8
|
describe('getAsyncApiDefinition', () => {
|
|
22
9
|
beforeEach(() => {
|
|
23
10
|
vi.resetAllMocks();
|
|
24
11
|
});
|
|
25
12
|
|
|
26
13
|
it('should load AsyncAPI doc from a local file path', async () => {
|
|
27
|
-
const
|
|
28
|
-
|
|
14
|
+
const filePath = path.join(__dirname, 'fixtures', 'basicAsyncAPI.yml');
|
|
15
|
+
const str = await readFile(filePath, 'utf8');
|
|
16
|
+
const { document: expectedDocument } = await validateAsyncApi(str);
|
|
17
|
+
const result = await getAsyncApiDefinition('__test__/fixtures/basicAsyncAPI.yml');
|
|
29
18
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
expect(fs.readFile).toHaveBeenCalledWith(expect.stringContaining('test.yaml'), 'utf-8');
|
|
33
|
-
expect(result).toEqual({ document: mockAsyncApiDoc, isUrl: false });
|
|
19
|
+
expect(result).toEqual({ document: expectedDocument, isUrl: false });
|
|
34
20
|
});
|
|
35
21
|
|
|
36
|
-
it('should
|
|
37
|
-
|
|
38
|
-
expect(result).toEqual({ document: mockAsyncApiDoc, isUrl: false });
|
|
22
|
+
it('should throw error when local file contains invalid schema', async () => {
|
|
23
|
+
await expect(getAsyncApiDefinition('__test__/fixtures/badAsyncAPI.yml')).rejects.toThrow();
|
|
39
24
|
});
|
|
40
25
|
|
|
41
26
|
it('should fetch yaml AsyncAPI doc from URL', async () => {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
text: () => Promise.resolve(mockYaml),
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
const url = new URL('https://example.com/asyncapi.yaml');
|
|
49
|
-
const result = await getAsyncApiDefinition(url);
|
|
50
|
-
|
|
51
|
-
expect(fetch).toHaveBeenCalledWith(url);
|
|
52
|
-
expect(result).toEqual({ document: mockAsyncApiDoc, isUrl: true });
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('should fetch and parse valid JSON AsyncAPI doc from URL', async () => {
|
|
56
|
-
const mockJson = JSON.stringify(mockAsyncApiDoc);
|
|
57
|
-
global.fetch = vi.fn().mockResolvedValue({
|
|
58
|
-
ok: true,
|
|
59
|
-
status: 200,
|
|
60
|
-
text: () => Promise.resolve(mockJson),
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
const url = new URL('https://example.com/asyncapi.yaml');
|
|
27
|
+
const url = new URL(
|
|
28
|
+
'https://raw.githubusercontent.com/asyncapi/spec/refs/heads/master/examples/websocket-gemini-asyncapi.yml'
|
|
29
|
+
);
|
|
64
30
|
const result = await getAsyncApiDefinition(url);
|
|
65
|
-
|
|
66
|
-
expect(
|
|
67
|
-
expect(result).toEqual({ document: mockAsyncApiDoc, isUrl: true });
|
|
31
|
+
expect(result.document).toBeDefined();
|
|
32
|
+
expect(result.isUrl).toBe(true);
|
|
68
33
|
});
|
|
69
34
|
|
|
70
35
|
it('should fetch AsyncAPI doc from URL string', async () => {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const urlString = 'https://example.com/asyncapi.yaml';
|
|
79
|
-
const result = await getAsyncApiDefinition(urlString);
|
|
80
|
-
|
|
81
|
-
expect(fetch).toHaveBeenCalledWith(new URL(urlString));
|
|
82
|
-
expect(result).toEqual({ document: mockAsyncApiDoc, isUrl: true });
|
|
36
|
+
const url =
|
|
37
|
+
'https://raw.githubusercontent.com/asyncapi/spec/refs/heads/master/examples/websocket-gemini-asyncapi.yml';
|
|
38
|
+
const result = await getAsyncApiDefinition(url);
|
|
39
|
+
expect(result.document).toBeDefined();
|
|
40
|
+
expect(result.isUrl).toBe(true);
|
|
83
41
|
});
|
|
84
42
|
|
|
85
43
|
it('should throw error when local file read fails', async () => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
await expect(getAsyncApiDefinition('test.yaml')).rejects.toThrow('File read error');
|
|
44
|
+
await expect(getAsyncApiDefinition('__test__/fixtures/doesntExist.yml')).rejects.toThrowError();
|
|
89
45
|
});
|
|
90
46
|
|
|
91
47
|
it('should throw error with URL and status code when fetch fails', async () => {
|
|
92
|
-
global.fetch = vi.fn().mockResolvedValue({
|
|
93
|
-
ok: false,
|
|
94
|
-
status: 404,
|
|
95
|
-
statusText: 'Not Found',
|
|
96
|
-
});
|
|
97
|
-
|
|
98
48
|
const urlString = 'https://mycoolwebsocketschema/asyncapi.doesnotexist';
|
|
99
49
|
|
|
100
50
|
await expect(getAsyncApiDefinition(urlString)).rejects.toThrow(
|
|
101
|
-
`${urlString} - failed to retrieve AsyncAPI file from source - :
|
|
51
|
+
`${urlString} - failed to retrieve AsyncAPI file from source - : fetch failed`
|
|
102
52
|
);
|
|
103
|
-
|
|
104
|
-
expect(fetch).toHaveBeenCalledWith(new URL(urlString));
|
|
105
53
|
});
|
|
106
54
|
|
|
107
55
|
it('should throw error when HTTP URL is provided', async () => {
|
|
@@ -125,31 +73,7 @@ describe('getAsyncApiDefinition', () => {
|
|
|
125
73
|
);
|
|
126
74
|
});
|
|
127
75
|
|
|
128
|
-
it('should throw error when URL response is invalid
|
|
129
|
-
global.fetch = vi.fn().mockResolvedValue({
|
|
130
|
-
text: () => Promise.resolve('invalid: yaml: content'),
|
|
131
|
-
});
|
|
132
|
-
|
|
76
|
+
it('should throw error when URL response is invalid', async () => {
|
|
133
77
|
await expect(getAsyncApiDefinition('https://example.com/asyncapi.yaml')).rejects.toThrow();
|
|
134
78
|
});
|
|
135
|
-
|
|
136
|
-
it('should throw error when URL response is invalid JSON', async () => {
|
|
137
|
-
global.fetch = vi.fn().mockResolvedValue({
|
|
138
|
-
text: () => Promise.resolve('{"invalid": "yaml", "invalid": "content"}'),
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
await expect(getAsyncApiDefinition('https://example.com/asyncapi.json')).rejects.toThrow();
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it('should throw error when local file contains invalid YAML', async () => {
|
|
145
|
-
vi.mocked(fs.readFile).mockResolvedValue('invalid: yaml: content');
|
|
146
|
-
|
|
147
|
-
await expect(getAsyncApiDefinition('test.yaml')).rejects.toThrow();
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it('should throw error when local file contains invalid JSON', async () => {
|
|
151
|
-
vi.mocked(fs.readFile).mockResolvedValue('{"invalid": "yaml", "invalid": "content"}');
|
|
152
|
-
|
|
153
|
-
await expect(getAsyncApiDefinition('test.json')).rejects.toThrow();
|
|
154
|
-
});
|
|
155
79
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NavigationEntry } from '@mintlify/models';
|
|
2
|
+
import { DecoratedGroupsConfig, DecoratedPagesConfig, GroupsConfig, PagesConfig } from '@mintlify/validation';
|
|
3
|
+
export declare const DEFAULT_API_GROUP_NAME = "API Reference";
|
|
4
|
+
export declare const DEFAULT_WEBHOOK_GROUP_NAME = "Webhooks";
|
|
5
|
+
export declare const DEFAULT_WEBSOCKETS_GROUP_NAME = "Websockets";
|
|
6
|
+
export declare const findNavGroup: (nav: GroupsConfig | DecoratedGroupsConfig, groupName?: string) => PagesConfig | DecoratedPagesConfig;
|
|
7
|
+
export declare const prepareStringToBeValidFilename: (str?: string) => string | undefined;
|
|
8
|
+
export declare const generateUniqueFilenameWithoutExtension: (pages: NavigationEntry[], base: string) => string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const DEFAULT_API_GROUP_NAME = 'API Reference';
|
|
2
|
+
export const DEFAULT_WEBHOOK_GROUP_NAME = 'Webhooks';
|
|
3
|
+
export const DEFAULT_WEBSOCKETS_GROUP_NAME = 'Websockets';
|
|
4
|
+
export const findNavGroup = (nav, groupName = DEFAULT_API_GROUP_NAME) => {
|
|
5
|
+
const group = nav.find((fileOrGroup) => typeof fileOrGroup === 'object' && 'group' in fileOrGroup && fileOrGroup.group === groupName);
|
|
6
|
+
if (group === undefined || !('pages' in group)) {
|
|
7
|
+
const newGroup = {
|
|
8
|
+
group: groupName,
|
|
9
|
+
pages: [],
|
|
10
|
+
};
|
|
11
|
+
nav.push(newGroup);
|
|
12
|
+
return newGroup.pages;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return group.pages;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export const prepareStringToBeValidFilename = (str) => str
|
|
19
|
+
? str
|
|
20
|
+
.replaceAll(' ', '-')
|
|
21
|
+
.replace(/\{.*?\}/g, '-') // remove path parameters
|
|
22
|
+
.replace(/^-/, '')
|
|
23
|
+
.replace(/-$/, '')
|
|
24
|
+
.replace(/[{}(),.'\n\/]/g, '') // remove special characters
|
|
25
|
+
.replaceAll(/--/g, '-') // replace double hyphens
|
|
26
|
+
.toLowerCase()
|
|
27
|
+
: undefined;
|
|
28
|
+
// returns a filename that is unique within the given array of pages
|
|
29
|
+
export const generateUniqueFilenameWithoutExtension = (pages, base) => {
|
|
30
|
+
let filename = base;
|
|
31
|
+
if (pages.includes(filename)) {
|
|
32
|
+
let extension = 1;
|
|
33
|
+
filename = `${base}-${extension}`;
|
|
34
|
+
while (pages.includes(filename)) {
|
|
35
|
+
extension += 1;
|
|
36
|
+
filename = `${base}-${extension}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return filename;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/apiPages/common.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;AACrD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAyC,EACzC,YAAoB,sBAAsB,EACN,EAAE;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CACpB,CAAC,WAAW,EAAE,EAAE,CACd,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,CAC/F,CAAC;IACF,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,EAAE;SACV,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAY,EAAE,EAAE,CAC7D,GAAG;IACD,CAAC,CAAC,GAAG;SACA,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,yBAAyB;SAClD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,4BAA4B;SAC1D,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,yBAAyB;SAChD,WAAW,EAAE;IAClB,CAAC,CAAC,SAAS,CAAC;AAEhB,oEAAoE;AACpE,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,KAAwB,EACxB,IAAY,EACJ,EAAE;IACV,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,QAAQ,GAAG,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,SAAS,IAAI,CAAC,CAAC;YACf,QAAQ,GAAG,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const getAsyncApiDefinition: (pathOrDocumentOrUrl: string |
|
|
3
|
-
document:
|
|
1
|
+
import { AsyncAPIDocumentInterface } from '@mintlify/common/asyncapi';
|
|
2
|
+
export declare const getAsyncApiDefinition: (pathOrDocumentOrUrl: string | URL) => Promise<{
|
|
3
|
+
document: AsyncAPIDocumentInterface | undefined;
|
|
4
4
|
isUrl: boolean;
|
|
5
5
|
}>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { validateAsyncApi } from '@mintlify/common/asyncapi';
|
|
1
2
|
import * as fs from 'fs/promises';
|
|
2
|
-
import yaml from 'js-yaml';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { fetchAsyncApi } from '../utils/network.js';
|
|
5
5
|
export const getAsyncApiDefinition = async (pathOrDocumentOrUrl) => {
|
|
6
|
+
let document = undefined;
|
|
6
7
|
if (typeof pathOrDocumentOrUrl === 'string') {
|
|
7
8
|
if (pathOrDocumentOrUrl.startsWith('http://')) {
|
|
8
9
|
// This is an invalid location either for a file or a URL
|
|
@@ -15,8 +16,17 @@ export const getAsyncApiDefinition = async (pathOrDocumentOrUrl) => {
|
|
|
15
16
|
}
|
|
16
17
|
catch {
|
|
17
18
|
const pathname = path.join(process.cwd(), pathOrDocumentOrUrl.toString());
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
try {
|
|
20
|
+
const file = await fs.readFile(pathname, 'utf-8');
|
|
21
|
+
const { document: asyncApiDocument, errorMessage } = await validateAsyncApi(file);
|
|
22
|
+
if (!asyncApiDocument) {
|
|
23
|
+
throw new Error(`${pathname} - this document is not a valid AsyncAPI document - ${errorMessage}`);
|
|
24
|
+
}
|
|
25
|
+
document = asyncApiDocument;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
throw new Error(`Failed to read file ${pathname} - ${error}`);
|
|
29
|
+
}
|
|
20
30
|
}
|
|
21
31
|
}
|
|
22
32
|
}
|
|
@@ -25,8 +35,8 @@ export const getAsyncApiDefinition = async (pathOrDocumentOrUrl) => {
|
|
|
25
35
|
if (pathOrDocumentOrUrl.protocol !== 'https:') {
|
|
26
36
|
throw new Error('Only HTTPS URLs are supported. Please provide an HTTPS URL');
|
|
27
37
|
}
|
|
28
|
-
|
|
38
|
+
document = await fetchAsyncApi(pathOrDocumentOrUrl);
|
|
29
39
|
}
|
|
30
|
-
return { document
|
|
40
|
+
return { document, isUrl };
|
|
31
41
|
};
|
|
32
42
|
//# sourceMappingURL=getAsyncApiDefinition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAsyncApiDefinition.js","sourceRoot":"","sources":["../../src/asyncapi/getAsyncApiDefinition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAsyncApiDefinition.js","sourceRoot":"","sources":["../../src/asyncapi/getAsyncApiDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,mBAAiC,EAC6C,EAAE;IAChF,IAAI,QAAQ,GAA0C,SAAS,CAAC;IAChE,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,yDAAyD;YACzD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACzC,mBAAmB,GAAG,GAAG,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAClD,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAClF,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACtB,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,uDAAuD,YAAY,EAAE,CACjF,CAAC;oBACJ,CAAC;oBACD,QAAQ,GAAG,gBAAgB,CAAC;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,YAAY,GAAG,CAAC;IACjD,IAAI,mBAAmB,YAAY,GAAG,EAAE,CAAC;QACvC,IAAI,mBAAmB,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,QAAQ,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AsyncAPIChannel } from '@mintlify/common/asyncapi';
|
|
2
|
+
import { DecoratedNavigationPage } from '@mintlify/models';
|
|
3
|
+
import { DecoratedGroupsConfig, DecoratedPagesConfig, GroupsConfig, PagesConfig } from '@mintlify/validation';
|
|
4
|
+
type GenerateAsyncApiPagesOptions = {
|
|
5
|
+
asyncApiFilePath?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
writeFiles?: boolean;
|
|
8
|
+
outDir?: string;
|
|
9
|
+
outDirBasePath?: string;
|
|
10
|
+
overwrite?: boolean;
|
|
11
|
+
};
|
|
12
|
+
type ProcessAsyncApiChannelArgs = {
|
|
13
|
+
channel: AsyncAPIChannel;
|
|
14
|
+
nav: GroupsConfig;
|
|
15
|
+
decoratedNav: DecoratedGroupsConfig;
|
|
16
|
+
writePromises: Promise<void>[];
|
|
17
|
+
pagesAcc: Record<string, DecoratedNavigationPage>;
|
|
18
|
+
opts?: GenerateAsyncApiPagesOptions;
|
|
19
|
+
findNavGroup: (nav: GroupsConfig | DecoratedGroupsConfig, groupName: string) => PagesConfig | DecoratedPagesConfig;
|
|
20
|
+
};
|
|
21
|
+
export declare const processAsyncApiChannel: ({ channel, nav, decoratedNav, writePromises, pagesAcc, opts, findNavGroup, }: ProcessAsyncApiChannelArgs) => void;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { optionallyAddLeadingSlash } from '@mintlify/common';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
import { outputFile } from 'fs-extra';
|
|
4
|
+
import { join, resolve } from 'path';
|
|
5
|
+
import { DEFAULT_WEBSOCKETS_GROUP_NAME, prepareStringToBeValidFilename, generateUniqueFilenameWithoutExtension, } from '../apiPages/common.js';
|
|
6
|
+
export const processAsyncApiChannel = ({ channel, nav, decoratedNav, writePromises, pagesAcc, opts, findNavGroup, }) => {
|
|
7
|
+
const asyncApiFilePathFromRoot = opts?.asyncApiFilePath
|
|
8
|
+
? optionallyAddLeadingSlash(opts.asyncApiFilePath)
|
|
9
|
+
: undefined;
|
|
10
|
+
const operation = 'websocket';
|
|
11
|
+
const tags = channel.tags().all();
|
|
12
|
+
const groupName = tags[0]?.name() ?? DEFAULT_WEBSOCKETS_GROUP_NAME;
|
|
13
|
+
const channelId = channel.id();
|
|
14
|
+
const title = channel.title() ?? channelId;
|
|
15
|
+
const description = channel.description() ?? channel.summary() ?? '';
|
|
16
|
+
const folder = prepareStringToBeValidFilename(groupName) ?? '';
|
|
17
|
+
const base = join(opts?.outDir ?? '', folder, title);
|
|
18
|
+
const navGroup = findNavGroup(nav, groupName);
|
|
19
|
+
const decoratedNavGroup = findNavGroup(decoratedNav, groupName);
|
|
20
|
+
const filenameWithoutExtension = generateUniqueFilenameWithoutExtension(navGroup, base);
|
|
21
|
+
const asyncApiMetaTag = `${asyncApiFilePathFromRoot ? `${asyncApiFilePathFromRoot} ` : ''}${operation} ${channelId}`;
|
|
22
|
+
navGroup.push(filenameWithoutExtension);
|
|
23
|
+
const page = {
|
|
24
|
+
asyncapi: asyncApiMetaTag,
|
|
25
|
+
href: resolve('/', filenameWithoutExtension),
|
|
26
|
+
title: title,
|
|
27
|
+
description,
|
|
28
|
+
version: opts?.version,
|
|
29
|
+
};
|
|
30
|
+
decoratedNavGroup.push(page);
|
|
31
|
+
pagesAcc[filenameWithoutExtension] = page;
|
|
32
|
+
const targetPath = opts?.outDirBasePath
|
|
33
|
+
? join(opts.outDirBasePath, `${filenameWithoutExtension}.mdx`)
|
|
34
|
+
: `${filenameWithoutExtension}.mdx`;
|
|
35
|
+
if (opts?.writeFiles && (!fse.pathExistsSync(targetPath) || opts.overwrite)) {
|
|
36
|
+
writePromises.push(createAsyncApiFrontmatter(targetPath, asyncApiMetaTag, opts.version));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const createAsyncApiFrontmatter = async (filename, asyncApiMetaTag, version) => {
|
|
40
|
+
const data = `---
|
|
41
|
+
asyncapi: ${asyncApiMetaTag}${version ? `\nversion: ${version}` : ''}
|
|
42
|
+
---`;
|
|
43
|
+
await outputFile(filename, data);
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=processAsyncApiChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processAsyncApiChannel.js","sourceRoot":"","sources":["../../src/asyncapi/processAsyncApiChannel.ts"],"names":[],"mappings":"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"}
|
package/bin/openapi/common.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import type { DecoratedNavigationPage
|
|
1
|
+
import type { DecoratedNavigationPage } from '@mintlify/models';
|
|
2
2
|
import { OpenAPI, OpenAPIV3 } from 'openapi-types';
|
|
3
3
|
export declare const getOpenApiDefinition: (pathOrDocumentOrUrl: string | OpenAPI.Document | URL) => Promise<{
|
|
4
4
|
document: OpenAPI.Document;
|
|
5
5
|
isUrl: boolean;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const generateUniqueFilenameWithoutExtension: (pages: NavigationEntry[], base: string) => string;
|
|
8
7
|
export declare const createOpenApiFrontmatter: (filename: string, openApiMetaTag: string, version?: string) => Promise<void>;
|
|
9
|
-
export declare const prepareStringToBeValidFilename: (str?: string) => string | undefined;
|
|
10
8
|
export type GenerateOpenApiPagesOptions = {
|
|
11
9
|
openApiFilePath?: string;
|
|
12
10
|
version?: string;
|
|
@@ -23,6 +21,4 @@ export type OpenApiPageGenerationResult<N, DN> = {
|
|
|
23
21
|
isUrl: boolean;
|
|
24
22
|
};
|
|
25
23
|
export declare function processOpenApiPath<N, DN>(path: string, pathItemObject: OpenAPIV3.PathItemObject, schema: OpenAPI.Document, nav: N, decoratedNav: DN, writePromises: Promise<void>[], pagesAcc: Record<string, DecoratedNavigationPage>, options: GenerateOpenApiPagesOptions, findNavGroup: (nav: any, groupName?: string) => any): void;
|
|
26
|
-
export declare const DEFAULT_API_GROUP_NAME = "API Reference";
|
|
27
|
-
export declare const DEFAULT_WEBHOOK_GROUP_NAME = "Webhooks";
|
|
28
24
|
export declare function processOpenApiWebhook<N, DN>(webhook: string, webhookObject: OpenAPIV3.PathItemObject, _schema: OpenAPI.Document, nav: N, decoratedNav: DN, writePromises: Promise<void>[], pagesAcc: Record<string, DecoratedNavigationPage>, options: GenerateOpenApiPagesOptions, findNavGroup: (nav: any, groupName?: string) => any): void;
|
package/bin/openapi/common.js
CHANGED
|
@@ -5,6 +5,7 @@ import fs from 'fs/promises';
|
|
|
5
5
|
import yaml from 'js-yaml';
|
|
6
6
|
import { OpenAPIV3 } from 'openapi-types';
|
|
7
7
|
import path, { join, parse, resolve } from 'path';
|
|
8
|
+
import { DEFAULT_WEBHOOK_GROUP_NAME, prepareStringToBeValidFilename, generateUniqueFilenameWithoutExtension, } from '../apiPages/common.js';
|
|
8
9
|
import { fetchOpenApi } from '../utils/network.js';
|
|
9
10
|
export const getOpenApiDefinition = async (pathOrDocumentOrUrl) => {
|
|
10
11
|
if (typeof pathOrDocumentOrUrl === 'string') {
|
|
@@ -33,35 +34,12 @@ export const getOpenApiDefinition = async (pathOrDocumentOrUrl) => {
|
|
|
33
34
|
}
|
|
34
35
|
return { document: pathOrDocumentOrUrl, isUrl };
|
|
35
36
|
};
|
|
36
|
-
// returns a filename that is unique within the given array of pages
|
|
37
|
-
export const generateUniqueFilenameWithoutExtension = (pages, base) => {
|
|
38
|
-
let filename = base;
|
|
39
|
-
if (pages.includes(filename)) {
|
|
40
|
-
let extension = 1;
|
|
41
|
-
filename = `${base}-${extension}`;
|
|
42
|
-
while (pages.includes(filename)) {
|
|
43
|
-
extension += 1;
|
|
44
|
-
filename = `${base}-${extension}`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return filename;
|
|
48
|
-
};
|
|
49
37
|
export const createOpenApiFrontmatter = async (filename, openApiMetaTag, version) => {
|
|
50
38
|
const data = `---
|
|
51
39
|
openapi: ${openApiMetaTag}${version ? `\nversion: ${version}` : ''}
|
|
52
40
|
---`;
|
|
53
41
|
await outputFile(filename, data);
|
|
54
42
|
};
|
|
55
|
-
export const prepareStringToBeValidFilename = (str) => str
|
|
56
|
-
? str
|
|
57
|
-
.replaceAll(' ', '-')
|
|
58
|
-
.replace(/\{.*?\}/g, '-') // remove path parameters
|
|
59
|
-
.replace(/^-/, '')
|
|
60
|
-
.replace(/-$/, '')
|
|
61
|
-
.replace(/[{}(),.'\n\/]/g, '') // remove special characters
|
|
62
|
-
.replaceAll(/--/g, '-') // replace double hyphens
|
|
63
|
-
.toLowerCase()
|
|
64
|
-
: undefined;
|
|
65
43
|
export function processOpenApiPath(path, pathItemObject, schema, nav, decoratedNav, writePromises, pagesAcc, options,
|
|
66
44
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
45
|
findNavGroup) {
|
|
@@ -108,8 +86,6 @@ findNavGroup) {
|
|
|
108
86
|
}
|
|
109
87
|
});
|
|
110
88
|
}
|
|
111
|
-
export const DEFAULT_API_GROUP_NAME = 'API Reference';
|
|
112
|
-
export const DEFAULT_WEBHOOK_GROUP_NAME = 'Webhooks';
|
|
113
89
|
export function processOpenApiWebhook(webhook, webhookObject, _schema, nav, decoratedNav, writePromises, pagesAcc, options,
|
|
114
90
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
91
|
findNavGroup) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/openapi/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAW,SAAS,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,mBAAoD,EACK,EAAE;IAC3D,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,yDAAyD;YACzD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACzC,mBAAmB,GAAG,GAAG,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAClD,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,YAAY,GAAG,CAAC;IACjD,IAAI,mBAAmB,YAAY,GAAG,EAAE,CAAC;QACvC,IAAI,mBAAmB,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,mBAAmB,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/openapi/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { validate } from '@mintlify/common';
|
|
2
|
-
import {
|
|
2
|
+
import { DEFAULT_API_GROUP_NAME } from '../apiPages/common.js';
|
|
3
|
+
import { getOpenApiDefinition, processOpenApiPath, processOpenApiWebhook, } from './common.js';
|
|
3
4
|
export async function generateOpenApiPages(pathOrDocumentOrUrl, opts) {
|
|
4
5
|
const { document, isUrl } = await getOpenApiDefinition(pathOrDocumentOrUrl);
|
|
5
6
|
const { schema } = await validate(document);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOpenApiPages.js","sourceRoot":"","sources":["../../src/openapi/generateOpenApiPages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAU5C,OAAO,EACL,oBAAoB,EAGpB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"generateOpenApiPages.js","sourceRoot":"","sources":["../../src/openapi/generateOpenApiPages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { validate } from '@mintlify/common';
|
|
2
|
-
import {
|
|
2
|
+
import { findNavGroup } from '../apiPages/common.js';
|
|
3
|
+
import { getOpenApiDefinition, processOpenApiPath, processOpenApiWebhook, } from './common.js';
|
|
3
4
|
export async function generateOpenApiPagesForDocsConfig(pathOrDocumentOrUrl, opts) {
|
|
4
5
|
const { document, isUrl } = await getOpenApiDefinition(pathOrDocumentOrUrl);
|
|
5
6
|
const { schema } = await validate(document);
|
|
@@ -41,18 +42,4 @@ export async function generateOpenApiPagesForDocsConfig(pathOrDocumentOrUrl, opt
|
|
|
41
42
|
isUrl,
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
|
-
const findNavGroup = (nav, groupName = DEFAULT_API_GROUP_NAME) => {
|
|
45
|
-
const group = nav.find((fileOrGroup) => typeof fileOrGroup === 'object' && 'group' in fileOrGroup && fileOrGroup.group === groupName);
|
|
46
|
-
if (group === undefined || !('pages' in group)) {
|
|
47
|
-
const newGroup = {
|
|
48
|
-
group: groupName,
|
|
49
|
-
pages: [],
|
|
50
|
-
};
|
|
51
|
-
nav.push(newGroup);
|
|
52
|
-
return newGroup.pages;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return group.pages;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
45
|
//# sourceMappingURL=generateOpenApiPagesForDocsConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOpenApiPagesForDocsConfig.js","sourceRoot":"","sources":["../../src/openapi/generateOpenApiPagesForDocsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateOpenApiPagesForDocsConfig.js","sourceRoot":"","sources":["../../src/openapi/generateOpenApiPagesForDocsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,oBAAoB,EAGpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,mBAAoD,EACpD,IAAkC;IAElC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5C,IACE,MAAM,EAAE,OAAO,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;SAAM,IACL,MAAM,EAAE,OAAO,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACtE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAoB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAA4C,EAAE,CAAC;IAE7D,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE;YAC9D,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,kBAAkB,CAChB,IAAI,EACJ,cAAc,EACd,MAA0B,EAC1B,GAAG,EACH,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,IAAI,IAAI,EAAE,EACV,YAAY,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE;YACnE,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,qBAAqB,CACnB,OAAO,EACP,aAAa,EACb,MAA0B,EAC1B,GAAG,EACH,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,IAAI,IAAI,EAAE,EACV,YAAY,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEjC,OAAO;QACL,GAAG;QACH,YAAY;QACZ,IAAI,EAAE,MAA0B;QAChC,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|