-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapiIncludeAsync.js
More file actions
26 lines (24 loc) · 1013 Bytes
/
openapiIncludeAsync.js
File metadata and controls
26 lines (24 loc) · 1013 Bytes
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
const https = require('https');
const fs = require('fs');
// Required for its side-effects (exposing missing values to global)
require("./openapiPolyfill.js");
module.exports = (url, fileName='irisapi.nocache.js') => {
global.location = new URL(url);
return new Promise((resolve, reject) => {
const apiFile = fs.createWriteStream(`./${fileName}`);
const request = https.get(url, response => {
// Write JS text to file
response.pipe(apiFile);
apiFile.on('finish', () => {
apiFile.close(() => {
require(`./${fileName}`); // require is synchronous, so the resolve won't happen until it is done
resolve(iris); // iris is globally exposed by the require, but we'll return it anyway
});
});
})
.on('error', err => {
// Delete the created file and reject when done
fs.unlink(`./${fileName}`, () => reject(err));
});
});
}