-
-
Notifications
You must be signed in to change notification settings - Fork 531
/
Copy pathindex.js
65 lines (57 loc) · 1.93 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'use strict';
const OpenAPI = require('../');
const fetch = require('node-fetch');
const generate = async (input, output) => {
await OpenAPI.generate({
input,
output,
httpClient: OpenAPI.HttpClient.FETCH,
useOptions: true,
useUnionTypes: false,
exportCore: true,
exportSchemas: true,
exportModels: true,
exportServices: true,
// clientName: 'Demo',
// indent: OpenAPI.Indent.SPACE_2,
// postfix: 'Service',
// request: './test/custom/request.ts',
});
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const generateRealWorldSpecs = async () => {
const response = await fetch('https://api.apis.guru/v2/list.json');
const list = await response.json();
delete list['api.video'];
delete list['apideck.com:vault'];
delete list['amazonaws.com:mediaconvert'];
delete list['bungie.net'];
delete list['docusign.net'];
delete list['googleapis.com:adsense'];
delete list['googleapis.com:servicebroker'];
delete list['kubernetes.io'];
delete list['microsoft.com:graph'];
delete list['presalytics.io:ooxml'];
delete list['stripe.com'];
const specs = Object.entries(list).map(([name, api]) => {
const latestVersion = api.versions[api.preferred];
return {
name: name
.replace(/^[^a-zA-Z]+/g, '')
.replace(/[^\w\-]+/g, '-')
.trim()
.toLowerCase(),
url: latestVersion.swaggerYamlUrl || latestVersion.swaggerUrl,
};
});
for (let i = 0; i < specs.length; i++) {
const spec = specs[i];
await generate(spec.url, `./test/generated/${spec.name}/`);
}
};
const main = async () => {
await generate('./test/spec/v2.json', './test/generated/v2/');
await generate('./test/spec/v3.json', './test/generated/v3/');
// await generateRealWorldSpecs();
};
main();