Skip to content

Commit 8fbf131

Browse files
authored
perf: stream bundled OpenAPI file instead of sending it wholesale (#361)
* perf: stream bundled OpenAPI file instead of sending it wholesale * chore: update default host URL
1 parent 1fcc890 commit 8fbf131

File tree

4 files changed

+52
-8
lines changed

4 files changed

+52
-8
lines changed

config/default.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = {
22
// eslint-disable-next-line global-require
33
cli: require('../package.json').name,
4-
host: 'https://dash.readme.io',
4+
host: 'https://dash.readme.com',
55
hub: 'https://{project}.readme.io',
66
};

package-lock.json

Lines changed: 41 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
"parse-link-header": "^1.0.1",
5252
"read": "^1.0.7",
5353
"semver": "^7.0.0",
54-
"table-layout": "^1.0.0"
54+
"table-layout": "^1.0.0",
55+
"tmp-promise": "^3.0.2"
5556
},
5657
"devDependencies": {
5758
"@readme/eslint-config": "^6.0.0",

src/cmds/openapi.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const { getProjectVersion } = require('../lib/versionSelect');
1010
const fetch = require('node-fetch');
1111
const FormData = require('form-data');
1212
const parse = require('parse-link-header');
13+
const { file: tmpFile } = require('tmp-promise');
1314

1415
exports.command = 'openapi';
1516
exports.usage = 'openapi [file] [options]';
@@ -117,8 +118,14 @@ exports.run = async function (opts) {
117118
return Promise.reject(err);
118119
});
119120

121+
// Create a temporary file to write the bundled spec to,
122+
// which we will then stream into the form data body
123+
const { path } = await tmpFile({ prefix: 'rdme-openapi-', postfix: '.json' });
124+
await fs.writeFileSync(path, bundledSpec);
125+
const stream = fs.createReadStream(path);
126+
120127
const formData = new FormData();
121-
formData.append('spec', bundledSpec);
128+
formData.append('spec', stream);
122129

123130
const options = {
124131
headers: cleanHeaders(key, {

0 commit comments

Comments
 (0)