@xylabs/axios 5.0.33 → 5.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,9 @@
1
- import type { Logger } from '@xylabs/logger';
2
- import type { AxiosResponse, RawAxiosRequestConfig } from 'axios';
3
1
  import { Axios } from 'axios';
4
- export type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & {
5
- compressLength?: number;
6
- };
2
+ import type { RawAxiosJsonRequestConfig } from './axiosJsonConfig.ts';
3
+ /** @deprecated use axiosJsonConfig instead */
7
4
  export declare class AxiosJson extends Axios {
8
- static defaultLogger?: Logger;
9
5
  constructor(config?: RawAxiosJsonRequestConfig);
10
- static axiosConfig({ compressLength, headers, ...config }?: RawAxiosJsonRequestConfig): RawAxiosJsonRequestConfig;
6
+ static axiosConfig(config?: RawAxiosJsonRequestConfig): RawAxiosJsonRequestConfig;
11
7
  static create(config?: RawAxiosJsonRequestConfig): Axios;
12
- static finalPath(response: AxiosResponse): any;
13
- private static buildHeaders;
14
8
  }
15
9
  //# sourceMappingURL=AxiosJson.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AxiosJson.d.ts","sourceRoot":"","sources":["../../src/AxiosJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,KAAK,EAAgB,MAAM,OAAO,CAAA;AAI3C,MAAM,MAAM,yBAAyB,CAAC,CAAC,GAAG,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvG,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;gBAEjB,MAAM,CAAC,EAAE,yBAAyB;IAI9C,MAAM,CAAC,WAAW,CAAC,EACjB,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,EACnC,GAAE,yBAA8B,GAAG,yBAAyB;IAsB7D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,yBAAyB;IAIhD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa;IAYxC,OAAO,CAAC,MAAM,CAAC,YAAY;CAO5B"}
1
+ {"version":3,"file":"AxiosJson.d.ts","sourceRoot":"","sources":["../../src/AxiosJson.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAOrE,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,KAAK;gBACtB,MAAM,CAAC,EAAE,yBAAyB;IAM9C,MAAM,CAAC,WAAW,CAAC,MAAM,GAAE,yBAA8B,GAAG,yBAAyB;IAIrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,yBAAyB;CAGjD"}
@@ -0,0 +1,6 @@
1
+ import type { RawAxiosRequestConfig } from 'axios';
2
+ export type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & {
3
+ compressLength?: number;
4
+ };
5
+ export declare function axiosJsonConfig({ compressLength, headers, ...config }?: RawAxiosJsonRequestConfig): RawAxiosJsonRequestConfig;
6
+ //# sourceMappingURL=axiosJsonConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axiosJsonConfig.d.ts","sourceRoot":"","sources":["../../src/axiosJsonConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;AAKlD,MAAM,MAAM,yBAAyB,CAAC,CAAC,GAAG,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAUvG,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,EACnC,GAAE,yBAA8B,GAAG,yBAAyB,CAoB5D"}
@@ -1,5 +1,7 @@
1
1
  import { Axios } from 'axios';
2
2
  export * from './AxiosJson.ts';
3
3
  export { gzip } from 'pako';
4
+ export declare const axiosJson: Axios;
5
+ /** @deprecated use axiosJson instead */
4
6
  export declare const axios: Axios;
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAI7B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,eAAO,MAAM,KAAK,OAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAI7B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,eAAO,MAAM,SAAS,OAA+B,CAAA;AAErD,wCAAwC;AACxC,eAAO,MAAM,KAAK,OAAY,CAAA"}
@@ -1,66 +1,68 @@
1
1
  // src/index.ts
2
2
  import { Axios as Axios2 } from "axios";
3
3
 
4
- // src/AxiosJson.ts
5
- import { Axios, AxiosHeaders } from "axios";
4
+ // src/axiosJsonConfig.ts
5
+ import { AxiosHeaders } from "axios";
6
6
  import { gzip } from "pako";
7
+ function buildHeaders(headers) {
8
+ const axiosHeaders = new AxiosHeaders();
9
+ axiosHeaders.set("Accept", "application/json, text/plain, *.*");
10
+ axiosHeaders.set("Content-Type", "application/json");
11
+ for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value);
12
+ return axiosHeaders;
13
+ }
14
+ function axiosJsonConfig({
15
+ compressLength,
16
+ headers,
17
+ ...config
18
+ } = {}) {
19
+ return {
20
+ headers: buildHeaders(headers),
21
+ transformRequest: (data, headers2) => {
22
+ const json = JSON.stringify(data);
23
+ if (headers2 !== void 0 && data && json.length > (compressLength ?? 1024)) {
24
+ headers2.set("Content-Encoding", "gzip");
25
+ return gzip(json).buffer;
26
+ }
27
+ return json;
28
+ },
29
+ transformResponse: (data) => {
30
+ try {
31
+ return JSON.parse(data);
32
+ } catch {
33
+ return null;
34
+ }
35
+ },
36
+ ...config
37
+ };
38
+ }
39
+
40
+ // src/AxiosJson.ts
41
+ import { Axios } from "axios";
42
+ function deprecated(from, to, logger = console) {
43
+ logger.warn(`${from} is deprecated. Please use ${to} instead.`);
44
+ }
7
45
  var AxiosJson = class _AxiosJson extends Axios {
8
- static defaultLogger;
9
46
  constructor(config) {
47
+ deprecated("AxiosJson", "axiosJsonConfig");
10
48
  super(_AxiosJson.axiosConfig(config));
11
49
  }
12
- static axiosConfig({
13
- compressLength,
14
- headers,
15
- ...config
16
- } = {}) {
17
- return {
18
- headers: this.buildHeaders(headers),
19
- transformRequest: (data, headers2) => {
20
- const json = JSON.stringify(data);
21
- if (headers2 !== void 0 && data && json.length > (compressLength ?? 1024)) {
22
- headers2.set("Content-Encoding", "gzip");
23
- return gzip(json).buffer;
24
- }
25
- return json;
26
- },
27
- transformResponse: (data) => {
28
- try {
29
- return JSON.parse(data);
30
- } catch {
31
- return null;
32
- }
33
- },
34
- ...config
35
- };
50
+ static axiosConfig(config = {}) {
51
+ return axiosJsonConfig(config);
36
52
  }
37
53
  static create(config) {
38
54
  return new Axios(this.axiosConfig(config));
39
55
  }
40
- static finalPath(response) {
41
- if (response.request.path) {
42
- return response.request.path.split("/").pop();
43
- } else if (response.request.responseURL) {
44
- return response.request.responseURL.split("/").pop();
45
- } else {
46
- this.defaultLogger?.warn("Failed to get final path from response");
47
- }
48
- }
49
- static buildHeaders(headers) {
50
- const axiosHeaders = new AxiosHeaders();
51
- axiosHeaders.set("Accept", "application/json, text/plain, *.*");
52
- axiosHeaders.set("Content-Type", "application/json");
53
- for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value);
54
- return axiosHeaders;
55
- }
56
56
  };
57
57
 
58
58
  // src/index.ts
59
59
  import { gzip as gzip2 } from "pako";
60
- var axios = new Axios2(AxiosJson.axiosConfig());
60
+ var axiosJson = new Axios2(axiosJsonConfig());
61
+ var axios = axiosJson;
61
62
  export {
62
63
  AxiosJson,
63
64
  axios,
65
+ axiosJson,
64
66
  gzip2 as gzip
65
67
  };
66
68
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AxiosJson.ts"],"sourcesContent":["import { Axios } from 'axios'\n\nimport { AxiosJson } from './AxiosJson.ts'\n\nexport * from './AxiosJson.ts'\nexport { gzip } from 'pako'\n\nexport const axios = new Axios(AxiosJson.axiosConfig())\n","import type { Logger } from '@xylabs/logger'\nimport type { AxiosResponse, RawAxiosRequestConfig } from 'axios'\nimport { Axios, AxiosHeaders } from 'axios'\nimport { gzip } from 'pako'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & { compressLength?: number }\n\nexport class AxiosJson extends Axios {\n static defaultLogger?: Logger\n\n constructor(config?: RawAxiosJsonRequestConfig) {\n super(AxiosJson.axiosConfig(config))\n }\n\n static axiosConfig({\n compressLength, headers, ...config\n }: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {\n return {\n headers: this.buildHeaders(headers),\n transformRequest: (data, headers) => {\n const json = JSON.stringify(data)\n if (headers !== undefined && data && json.length > (compressLength ?? 1024)) {\n headers.set('Content-Encoding', 'gzip')\n return gzip(json).buffer\n }\n return json\n },\n transformResponse: (data) => {\n try {\n return JSON.parse(data)\n } catch {\n return null\n }\n },\n ...config,\n }\n }\n\n static create(config?: RawAxiosJsonRequestConfig) {\n return new Axios(this.axiosConfig(config))\n }\n\n static finalPath(response: AxiosResponse) {\n if (response.request.path) {\n // nodejs\n return response.request.path.split('/').pop()\n } else if (response.request.responseURL) {\n // browser\n return response.request.responseURL.split('/').pop()\n } else {\n this.defaultLogger?.warn('Failed to get final path from response')\n }\n }\n\n private static buildHeaders(headers: RawAxiosJsonRequestConfig['headers']) {\n const axiosHeaders = new AxiosHeaders()\n axiosHeaders.set('Accept', 'application/json, text/plain, *.*')\n axiosHeaders.set('Content-Type', 'application/json')\n for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value)\n return axiosHeaders\n }\n}\n"],"mappings":";AAAA,SAAS,SAAAA,cAAa;;;ACEtB,SAAS,OAAO,oBAAoB;AACpC,SAAS,YAAY;AAKd,IAAM,YAAN,MAAM,mBAAkB,MAAM;AAAA,EACnC,OAAO;AAAA,EAEP,YAAY,QAAoC;AAC9C,UAAM,WAAU,YAAY,MAAM,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,YAAY;AAAA,IACjB;AAAA,IAAgB;AAAA,IAAS,GAAG;AAAA,EAC9B,IAA+B,CAAC,GAA8B;AAC5D,WAAO;AAAA,MACL,SAAS,KAAK,aAAa,OAAO;AAAA,MAClC,kBAAkB,CAAC,MAAMC,aAAY;AACnC,cAAM,OAAO,KAAK,UAAU,IAAI;AAChC,YAAIA,aAAY,UAAa,QAAQ,KAAK,UAAU,kBAAkB,OAAO;AAC3E,UAAAA,SAAQ,IAAI,oBAAoB,MAAM;AACtC,iBAAO,KAAK,IAAI,EAAE;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAAA,MACA,mBAAmB,CAAC,SAAS;AAC3B,YAAI;AACF,iBAAO,KAAK,MAAM,IAAI;AAAA,QACxB,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EAEA,OAAO,OAAO,QAAoC;AAChD,WAAO,IAAI,MAAM,KAAK,YAAY,MAAM,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,UAAU,UAAyB;AACxC,QAAI,SAAS,QAAQ,MAAM;AAEzB,aAAO,SAAS,QAAQ,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,IAC9C,WAAW,SAAS,QAAQ,aAAa;AAEvC,aAAO,SAAS,QAAQ,YAAY,MAAM,GAAG,EAAE,IAAI;AAAA,IACrD,OAAO;AACL,WAAK,eAAe,KAAK,wCAAwC;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,OAAe,aAAa,SAA+C;AACzE,UAAM,eAAe,IAAI,aAAa;AACtC,iBAAa,IAAI,UAAU,mCAAmC;AAC9D,iBAAa,IAAI,gBAAgB,kBAAkB;AACnD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,CAAC,CAAC,EAAG,cAAa,IAAI,KAAK,KAAK;AACrF,WAAO;AAAA,EACT;AACF;;;ADzDA,SAAS,QAAAC,aAAY;AAEd,IAAM,QAAQ,IAAIC,OAAM,UAAU,YAAY,CAAC;","names":["Axios","headers","gzip","Axios"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/axiosJsonConfig.ts","../../src/AxiosJson.ts"],"sourcesContent":["import { Axios } from 'axios'\n\nimport { axiosJsonConfig } from './axiosJsonConfig.ts'\n\nexport * from './AxiosJson.ts'\nexport { gzip } from 'pako'\n\nexport const axiosJson = new Axios(axiosJsonConfig())\n\n/** @deprecated use axiosJson instead */\nexport const axios = axiosJson\n","import type { RawAxiosRequestConfig } from 'axios'\nimport { AxiosHeaders } from 'axios'\nimport { gzip } from 'pako'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & { compressLength?: number }\n\nfunction buildHeaders(headers: RawAxiosJsonRequestConfig['headers']) {\n const axiosHeaders = new AxiosHeaders()\n axiosHeaders.set('Accept', 'application/json, text/plain, *.*')\n axiosHeaders.set('Content-Type', 'application/json')\n for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value)\n return axiosHeaders\n}\n\nexport function axiosJsonConfig({\n compressLength, headers, ...config\n}: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {\n return {\n headers: buildHeaders(headers),\n transformRequest: (data, headers) => {\n const json = JSON.stringify(data)\n if (headers !== undefined && data && json.length > (compressLength ?? 1024)) {\n headers.set('Content-Encoding', 'gzip')\n return gzip(json).buffer\n }\n return json\n },\n transformResponse: (data) => {\n try {\n return JSON.parse(data)\n } catch {\n return null\n }\n },\n ...config,\n }\n}\n","import type { Logger } from '@xylabs/logger'\nimport { Axios } from 'axios'\n\nimport type { RawAxiosJsonRequestConfig } from './axiosJsonConfig.ts'\nimport { axiosJsonConfig } from './axiosJsonConfig.ts'\n\nfunction deprecated(from: string, to: string, logger: Logger = console) {\n logger.warn(`${from} is deprecated. Please use ${to} instead.`)\n}\n\n/** @deprecated use axiosJsonConfig instead */\nexport class AxiosJson extends Axios {\n constructor(config?: RawAxiosJsonRequestConfig) {\n deprecated('AxiosJson', 'axiosJsonConfig')\n // eslint-disable-next-line sonarjs/deprecation\n super(AxiosJson.axiosConfig(config))\n }\n\n static axiosConfig(config: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {\n return axiosJsonConfig(config)\n }\n\n static create(config?: RawAxiosJsonRequestConfig) {\n return new Axios(this.axiosConfig(config))\n }\n}\n"],"mappings":";AAAA,SAAS,SAAAA,cAAa;;;ACCtB,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AAKrB,SAAS,aAAa,SAA+C;AACnE,QAAM,eAAe,IAAI,aAAa;AACtC,eAAa,IAAI,UAAU,mCAAmC;AAC9D,eAAa,IAAI,gBAAgB,kBAAkB;AACnD,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,CAAC,CAAC,EAAG,cAAa,IAAI,KAAK,KAAK;AACrF,SAAO;AACT;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EAAgB;AAAA,EAAS,GAAG;AAC9B,IAA+B,CAAC,GAA8B;AAC5D,SAAO;AAAA,IACL,SAAS,aAAa,OAAO;AAAA,IAC7B,kBAAkB,CAAC,MAAMC,aAAY;AACnC,YAAM,OAAO,KAAK,UAAU,IAAI;AAChC,UAAIA,aAAY,UAAa,QAAQ,KAAK,UAAU,kBAAkB,OAAO;AAC3E,QAAAA,SAAQ,IAAI,oBAAoB,MAAM;AACtC,eAAO,KAAK,IAAI,EAAE;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB,CAAC,SAAS;AAC3B,UAAI;AACF,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB,QAAQ;AACN,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AACF;;;ACpCA,SAAS,aAAa;AAKtB,SAAS,WAAW,MAAc,IAAY,SAAiB,SAAS;AACtE,SAAO,KAAK,GAAG,IAAI,8BAA8B,EAAE,WAAW;AAChE;AAGO,IAAM,YAAN,MAAM,mBAAkB,MAAM;AAAA,EACnC,YAAY,QAAoC;AAC9C,eAAW,aAAa,iBAAiB;AAEzC,UAAM,WAAU,YAAY,MAAM,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,YAAY,SAAoC,CAAC,GAA8B;AACpF,WAAO,gBAAgB,MAAM;AAAA,EAC/B;AAAA,EAEA,OAAO,OAAO,QAAoC;AAChD,WAAO,IAAI,MAAM,KAAK,YAAY,MAAM,CAAC;AAAA,EAC3C;AACF;;;AFpBA,SAAS,QAAAC,aAAY;AAEd,IAAM,YAAY,IAAIC,OAAM,gBAAgB,CAAC;AAG7C,IAAM,QAAQ;","names":["Axios","headers","gzip","Axios"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/axios",
3
- "version": "5.0.33",
3
+ "version": "5.0.35",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "axios",
@@ -39,14 +39,17 @@
39
39
  "types": "./dist/neutral/index.d.ts",
40
40
  "files": [
41
41
  "dist",
42
- "src"
42
+ "src",
43
+ "!**/*.bench.*",
44
+ "!**/*.spec.*",
45
+ "!**/*.test.*"
43
46
  ],
44
47
  "dependencies": {
45
- "@xylabs/logger": "~5.0.33",
46
48
  "pako": "~2.1.0"
47
49
  },
48
50
  "devDependencies": {
49
51
  "@types/pako": "~2.0.4",
52
+ "@xylabs/logger": "~5.0.35",
50
53
  "@xylabs/ts-scripts-yarn3": "~7.2.8",
51
54
  "@xylabs/tsconfig": "~7.2.8",
52
55
  "axios": "~1.13.2",
package/src/AxiosJson.ts CHANGED
@@ -1,63 +1,26 @@
1
1
  import type { Logger } from '@xylabs/logger'
2
- import type { AxiosResponse, RawAxiosRequestConfig } from 'axios'
3
- import { Axios, AxiosHeaders } from 'axios'
4
- import { gzip } from 'pako'
2
+ import { Axios } from 'axios'
5
3
 
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- export type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & { compressLength?: number }
4
+ import type { RawAxiosJsonRequestConfig } from './axiosJsonConfig.ts'
5
+ import { axiosJsonConfig } from './axiosJsonConfig.ts'
8
6
 
9
- export class AxiosJson extends Axios {
10
- static defaultLogger?: Logger
7
+ function deprecated(from: string, to: string, logger: Logger = console) {
8
+ logger.warn(`${from} is deprecated. Please use ${to} instead.`)
9
+ }
11
10
 
11
+ /** @deprecated use axiosJsonConfig instead */
12
+ export class AxiosJson extends Axios {
12
13
  constructor(config?: RawAxiosJsonRequestConfig) {
14
+ deprecated('AxiosJson', 'axiosJsonConfig')
15
+ // eslint-disable-next-line sonarjs/deprecation
13
16
  super(AxiosJson.axiosConfig(config))
14
17
  }
15
18
 
16
- static axiosConfig({
17
- compressLength, headers, ...config
18
- }: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {
19
- return {
20
- headers: this.buildHeaders(headers),
21
- transformRequest: (data, headers) => {
22
- const json = JSON.stringify(data)
23
- if (headers !== undefined && data && json.length > (compressLength ?? 1024)) {
24
- headers.set('Content-Encoding', 'gzip')
25
- return gzip(json).buffer
26
- }
27
- return json
28
- },
29
- transformResponse: (data) => {
30
- try {
31
- return JSON.parse(data)
32
- } catch {
33
- return null
34
- }
35
- },
36
- ...config,
37
- }
19
+ static axiosConfig(config: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {
20
+ return axiosJsonConfig(config)
38
21
  }
39
22
 
40
23
  static create(config?: RawAxiosJsonRequestConfig) {
41
24
  return new Axios(this.axiosConfig(config))
42
25
  }
43
-
44
- static finalPath(response: AxiosResponse) {
45
- if (response.request.path) {
46
- // nodejs
47
- return response.request.path.split('/').pop()
48
- } else if (response.request.responseURL) {
49
- // browser
50
- return response.request.responseURL.split('/').pop()
51
- } else {
52
- this.defaultLogger?.warn('Failed to get final path from response')
53
- }
54
- }
55
-
56
- private static buildHeaders(headers: RawAxiosJsonRequestConfig['headers']) {
57
- const axiosHeaders = new AxiosHeaders()
58
- axiosHeaders.set('Accept', 'application/json, text/plain, *.*')
59
- axiosHeaders.set('Content-Type', 'application/json')
60
- for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value)
61
- return axiosHeaders
62
- }
63
26
  }
@@ -0,0 +1,38 @@
1
+ import type { RawAxiosRequestConfig } from 'axios'
2
+ import { AxiosHeaders } from 'axios'
3
+ import { gzip } from 'pako'
4
+
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ export type RawAxiosJsonRequestConfig<D = any> = RawAxiosRequestConfig<D> & { compressLength?: number }
7
+
8
+ function buildHeaders(headers: RawAxiosJsonRequestConfig['headers']) {
9
+ const axiosHeaders = new AxiosHeaders()
10
+ axiosHeaders.set('Accept', 'application/json, text/plain, *.*')
11
+ axiosHeaders.set('Content-Type', 'application/json')
12
+ for (const [key, value] of Object.entries(headers ?? {})) axiosHeaders.set(key, value)
13
+ return axiosHeaders
14
+ }
15
+
16
+ export function axiosJsonConfig({
17
+ compressLength, headers, ...config
18
+ }: RawAxiosJsonRequestConfig = {}): RawAxiosJsonRequestConfig {
19
+ return {
20
+ headers: buildHeaders(headers),
21
+ transformRequest: (data, headers) => {
22
+ const json = JSON.stringify(data)
23
+ if (headers !== undefined && data && json.length > (compressLength ?? 1024)) {
24
+ headers.set('Content-Encoding', 'gzip')
25
+ return gzip(json).buffer
26
+ }
27
+ return json
28
+ },
29
+ transformResponse: (data) => {
30
+ try {
31
+ return JSON.parse(data)
32
+ } catch {
33
+ return null
34
+ }
35
+ },
36
+ ...config,
37
+ }
38
+ }
package/src/index.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import { Axios } from 'axios'
2
2
 
3
- import { AxiosJson } from './AxiosJson.ts'
3
+ import { axiosJsonConfig } from './axiosJsonConfig.ts'
4
4
 
5
5
  export * from './AxiosJson.ts'
6
6
  export { gzip } from 'pako'
7
7
 
8
- export const axios = new Axios(AxiosJson.axiosConfig())
8
+ export const axiosJson = new Axios(axiosJsonConfig())
9
+
10
+ /** @deprecated use axiosJson instead */
11
+ export const axios = axiosJson