mirror of
https://github.com/tenrok/axios.git
synced 2026-06-17 19:21:29 +03:00
Axios ES2017 (#4787)
* Added AxiosHeaders class; * Fixed README.md href; * Fixed a potential bug with headers normalization; * Fixed a potential bug with headers normalization; Refactored accessor building routine; Refactored default transforms; Removed `normalizeHeaderName` helper; * Added `Content-Length` accessor; Added missed `has` accessor to TS types; * Added `AxiosTransformStream` class; Added progress capturing ability for node.js environment; Added `maxRate` option to limit the data rate in node.js environment; Refactored event handled by `onUploadProgress` && `onDownloadProgress` listeners in browser environment; Added progress & data rate tests for the http adapter; Added response stream aborting test; Added a manual progress capture test for the browser; Updated TS types; Added TS tests; Refactored request abort logic for the http adapter; Added ability to abort the response stream; * Remove `stream/promises` & `timers/promises` modules usage in tests; * Use `abortcontroller-polyfill`; * Fixed AxiosTransformStream dead-lock in legacy node versions; Fixed CancelError emitting in streams; * Reworked AxiosTransformStream internal logic to optimize memory consumption; Added throwing an error if the request stream was silently destroying (without error) Refers to #3966; * Treat the destruction of the request stream as a cancellation of the request; Fixed tests; * Emit `progress` event in the next tick; * Initial refactoring; * Refactored Mocha tests to use ESM; * Refactored Karma tests to use rollup preprocessor & ESM; Replaced grunt with gulp; Improved dev scripts; Added Babel for rollup build; * Added default commonjs package export for Node build; Added automatic contributors list generator for package.json; Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
||||
import gulp from 'gulp';
|
||||
import fs from 'fs-extra';
|
||||
import axios from './index.js';
|
||||
|
||||
gulp.task('default', async function(){
|
||||
console.log('hello!');
|
||||
});
|
||||
|
||||
const clear = gulp.task('clear', async function() {
|
||||
await fs.emptyDir('./dist/')
|
||||
});
|
||||
|
||||
const bower = gulp.task('bower', async function () {
|
||||
const npm = JSON.parse(await fs.readFile('package.json'));
|
||||
const bower = JSON.parse(await fs.readFile('bower.json'));
|
||||
|
||||
const fields = [
|
||||
'name',
|
||||
'description',
|
||||
'version',
|
||||
'homepage',
|
||||
'license',
|
||||
'keywords'
|
||||
];
|
||||
|
||||
for (let i = 0, l = fields.length; i < l; i++) {
|
||||
const field = fields[i];
|
||||
bower[field] = npm[field];
|
||||
}
|
||||
|
||||
await fs.writeFile('bower.json', JSON.stringify(bower, null, 2));
|
||||
});
|
||||
|
||||
async function getContributors(user, repo, maxCount = 1) {
|
||||
const contributors = (await axios.get(
|
||||
`https://api.github.com/repos/${encodeURIComponent(user)}/${encodeURIComponent(repo)}/contributors?per_page=${maxCount}`
|
||||
)).data;
|
||||
|
||||
return Promise.all(contributors.map(async (contributor)=> {
|
||||
return {...contributor, ...(await axios.get(
|
||||
`https://api.github.com/users/${encodeURIComponent(contributor.login)}`
|
||||
)).data};
|
||||
}))
|
||||
}
|
||||
|
||||
const packageJSON = gulp.task('package', async function () {
|
||||
const CONTRIBUTION_THRESHOLD = 3;
|
||||
|
||||
const npm = JSON.parse(await fs.readFile('package.json'));
|
||||
|
||||
try {
|
||||
const contributors = await getContributors('axios', 'axios', 15);
|
||||
|
||||
npm.contributors = contributors
|
||||
.filter(
|
||||
({type, contributions}) => type.toLowerCase() === 'user' && contributions >= CONTRIBUTION_THRESHOLD
|
||||
)
|
||||
.map(({login, name, url}) => `${name || login} (https://github.com/${login})`);
|
||||
|
||||
await fs.writeFile('package.json', JSON.stringify(npm, null, 2));
|
||||
} catch (err) {
|
||||
if (axios.isAxiosError(err) && err.response && err.response.status === 403) {
|
||||
throw Error(`GitHub API Error: ${err.response.data && err.response.data.message}`);
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
|
||||
const env = gulp.task('env', async function () {
|
||||
var npm = JSON.parse(await fs.readFile('package.json'));
|
||||
|
||||
await fs.writeFile('./lib/env/data.js', Object.entries({
|
||||
VERSION: npm.version
|
||||
}).map(([key, value]) => {
|
||||
return `export const ${key} = ${JSON.stringify(value)};`
|
||||
}).join('\n'));
|
||||
});
|
||||
|
||||
const version = gulp.series('bower', 'env', 'package');
|
||||
|
||||
export {
|
||||
bower,
|
||||
env,
|
||||
clear,
|
||||
version,
|
||||
packageJSON
|
||||
}
|
||||
Reference in New Issue
Block a user