Skip to content

Commit

Permalink
Merge pull request #42 from mpyw/follow-up-axios-update
Browse files Browse the repository at this point in the history
Follow up [email protected] changes
  • Loading branch information
mpyw authored Oct 14, 2021
2 parents 60f54bf + db61adc commit f72cfad
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 32 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:

strategy:
matrix:
node: [16, 14, 12, 10]
node: [16, 14, 12]

steps:
- uses: actions/checkout@v2
Expand Down
34 changes: 17 additions & 17 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "axios-case-converter",
"version": "0.8.1",
"version": "0.9.0",
"main": "lib/index.js",
"module": "es/index.js",
"types": "typings/index.d.ts",
Expand Down Expand Up @@ -49,28 +49,28 @@
"tslib": "^2.3.0"
},
"devDependencies": {
"@rollup/plugin-node-resolve": "^13.0.0",
"@rollup/plugin-typescript": "^8.2.1",
"@types/jest": "^26.0.23",
"@types/node": "^15.14.0",
"@typescript-eslint/eslint-plugin": "^4.28.1",
"@typescript-eslint/parser": "^4.28.1",
"axios": "^0.21.1",
"axios-mock-adapter": "^1.19.0",
"@rollup/plugin-node-resolve": "^13.0.5",
"@rollup/plugin-typescript": "^8.2.5",
"@types/jest": "^27.0.2",
"@types/node": "^16.10.9",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"axios": "^0.23.0",
"axios-mock-adapter": "^1.20.0",
"blob-polyfill": "^5.0.20210201",
"eslint": "^7.29.0",
"eslint": "^8.0.0",
"eslint-config-prettier": "^8.3.0",
"formdata-polyfill": "^4.0.6",
"jest": "^27.0.6",
"formdata-polyfill": "^4.0.10",
"jest": "^27.2.5",
"npm-run-all": "^4.1.5",
"prettier": "^2.3.2",
"rollup": "^2.52.6",
"prettier": "^2.4.1",
"rollup": "^2.58.0",
"rollup-plugin-terser": "^7.0.2",
"ts-jest": "^27.0.3",
"typescript": "^4.3.5",
"ts-jest": "^27.0.5",
"typescript": "^4.4.4",
"url-search-params-polyfill": "^8.1.1"
},
"peerDependencies": {
"axios": "^0.21.1"
"axios": ">=0.23.0 <1.0.0"
}
}
11 changes: 6 additions & 5 deletions src/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import { isPlainObject } from './util';
import {
ApplyCaseMiddleware,
CreateAxiosInterceptor,
CreateAxiosTransformer,
CreateAxiosRequestTransformer,
CreateAxiosResponseTransformer,
TransformableObject,
} from './types';

Expand All @@ -18,14 +19,14 @@ export const createSnakeParamsInterceptor: CreateAxiosInterceptor = (
return config;
};
};
export const createSnakeRequestTransformer: CreateAxiosTransformer = (
export const createSnakeRequestTransformer: CreateAxiosRequestTransformer = (
options?
) => {
const { snake, header } = createObjectTransformers(options?.caseFunctions);
return (
data: unknown,
headers?: unknown
): ReturnType<ReturnType<CreateAxiosTransformer>> => {
): ReturnType<ReturnType<CreateAxiosRequestTransformer>> => {
if (!options?.ignoreHeaders && isPlainObject(headers)) {
for (const [key, value] of Object.entries(headers)) {
header(value, { overwrite: true, ...options });
Expand All @@ -46,14 +47,14 @@ export const createSnakeRequestTransformer: CreateAxiosTransformer = (
return snake(data, options);
};
};
export const createCamelResponseTransformer: CreateAxiosTransformer = (
export const createCamelResponseTransformer: CreateAxiosResponseTransformer = (
options?
) => {
const { camel } = createObjectTransformers(options?.caseFunctions);
return (
data: unknown,
headers?: unknown
): ReturnType<ReturnType<CreateAxiosTransformer>> => {
): ReturnType<ReturnType<CreateAxiosResponseTransformer>> => {
if (!options?.ignoreHeaders) {
camel(headers, { overwrite: true, ...options });
}
Expand Down
18 changes: 13 additions & 5 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { Options as NoCaseOptions } from 'camel-case';
import { AxiosInstance, AxiosRequestConfig, AxiosTransformer } from 'axios';
import {
AxiosInstance,
AxiosRequestConfig,
AxiosRequestTransformer,
AxiosResponseTransformer,
} from 'axios';

/** string transformers (change-case functions) */
export interface CaseFunction {
Expand Down Expand Up @@ -72,15 +77,18 @@ export interface AxiosInterceptor {
export interface CreateAxiosInterceptor {
(options?: AxiosCaseMiddlewareOptions): AxiosInterceptor;
}
export interface CreateAxiosTransformer {
(options?: AxiosCaseMiddlewareOptions): AxiosTransformer;
export interface CreateAxiosRequestTransformer {
(options?: AxiosCaseMiddlewareOptions): AxiosResponseTransformer;
}
export interface CreateAxiosResponseTransformer {
(options?: AxiosCaseMiddlewareOptions): AxiosResponseTransformer;
}

/** converter applier */
export type ApplyCaseMiddlewareOptions = AxiosCaseMiddlewareOptions & {
caseMiddleware?: {
requestTransformer?: AxiosTransformer;
responseTransformer?: AxiosTransformer;
requestTransformer?: AxiosRequestTransformer;
responseTransformer?: AxiosResponseTransformer;
requestInterceptor?: AxiosInterceptor;
};
};
Expand Down
8 changes: 4 additions & 4 deletions test/integration/basic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ const mock = new MockAdapter(client);
test('it should be converted on success', (done) => {
mock.onPost('/success').reply((config) => {
expect(config.method).toBe('post');
expect(config.headers['X-Requested-With']).toBe('XMLHttpRequest');
expect(config.headers.thisCamelShouldBePreserved).toBe('preserved');
expect(config.headers?.['X-Requested-With']).toBe('XMLHttpRequest');
expect(config.headers?.thisCamelShouldBePreserved).toBe('preserved');
expect(config.params.user_id).toBe(1);
expect(config.params.screen_name).toBe('yay');
expect(config.params.thisCamelShouldBePreserved).toBe('preserved');
Expand Down Expand Up @@ -108,8 +108,8 @@ test('it should be converted on success', (done) => {
test('it should be converted on failure', (done) => {
mock.onPost('/failure').reply((config) => {
expect(config.method).toBe('post');
expect(config.headers['X-Requested-With']).toBe('XMLHttpRequest');
expect(config.headers.thisCamelShouldBePreserved).toBe('preserved');
expect(config.headers?.['X-Requested-With']).toBe('XMLHttpRequest');
expect(config.headers?.thisCamelShouldBePreserved).toBe('preserved');
expect(config.params.user_id).toBe(1);
expect(config.params.screen_name).toBe('yay');
expect(config.params.thisCamelShouldBePreserved).toBe('preserved');
Expand Down

0 comments on commit f72cfad

Please sign in to comment.