@varlet/axle 0.0.2 → 0.0.3

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.
package/README.md CHANGED
@@ -45,8 +45,8 @@ export interface AxleHelpers {
45
45
  getDocument: FetchHelper
46
46
  // get text
47
47
  getText: FetchHelper
48
- // get Arraybuffer, which can be used for segmented download
49
- getArraybuffer: FetchHelper
48
+ // get ArrayBuffer, which can be used for segmented download
49
+ getArrayBuffer: FetchHelper
50
50
  // get a readable stream, which can be used for browser caching
51
51
  getStream: FetchHelper
52
52
 
@@ -54,14 +54,14 @@ export interface AxleHelpers {
54
54
  headBlob: FetchHelper
55
55
  headDocument: FetchHelper
56
56
  headText: FetchHelper
57
- headArraybuffer: FetchHelper
57
+ headArrayBuffer: FetchHelper
58
58
  headStream: FetchHelper
59
59
 
60
60
  options: FetchHelper
61
61
  optionsBlob: FetchHelper
62
62
  optionsDocument: FetchHelper
63
63
  optionsText: FetchHelper
64
- optionsArraybuffer: FetchHelper
64
+ optionsArrayBuffer: FetchHelper
65
65
  optionsStream: FetchHelper
66
66
 
67
67
  delete: FetchHelper
package/es/index.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, ResponseType } from "axios";
2
+ export declare type AxleRequestConfig = AxiosRequestConfig & {
3
+ exceptionMessage?: any;
4
+ };
5
+ export declare type FetchHelper = <T = any, R = AxiosResponse<T>>(url: string, params?: any, config?: AxleRequestConfig) => Promise<R>;
6
+ export declare type ModifyHelper = <T = any, R = AxiosResponse<T>>(url: string, data?: any, config?: AxleRequestConfig) => Promise<R>;
7
+ export interface AxiosHelpers {
8
+ get: FetchHelper;
9
+ getBlob: FetchHelper;
10
+ getDocument: FetchHelper;
11
+ getText: FetchHelper;
12
+ getArrayBuffer: FetchHelper;
13
+ getStream: FetchHelper;
14
+ head: FetchHelper;
15
+ headBlob: FetchHelper;
16
+ headDocument: FetchHelper;
17
+ headText: FetchHelper;
18
+ headArrayBuffer: FetchHelper;
19
+ headStream: FetchHelper;
20
+ options: FetchHelper;
21
+ optionsBlob: FetchHelper;
22
+ optionsDocument: FetchHelper;
23
+ optionsText: FetchHelper;
24
+ optionsArrayBuffer: FetchHelper;
25
+ optionsStream: FetchHelper;
26
+ delete: FetchHelper;
27
+ deleteBlob: FetchHelper;
28
+ deleteDocument: FetchHelper;
29
+ deleteText: FetchHelper;
30
+ deleteArrayBuffer: FetchHelper;
31
+ deleteStream: FetchHelper;
32
+ post: ModifyHelper;
33
+ postJSON: ModifyHelper;
34
+ postMultipart: ModifyHelper;
35
+ put: ModifyHelper;
36
+ putJSON: ModifyHelper;
37
+ putMultipart: ModifyHelper;
38
+ patch: ModifyHelper;
39
+ patchJSON: ModifyHelper;
40
+ patchMultipart: ModifyHelper;
41
+ download(blob: string | Blob, filename: string): void;
42
+ setHeader(key: string, value: string): void;
43
+ removeHeader(key: string | string[]): void;
44
+ }
45
+ export declare type FetchMethods = "get" | "delete" | "options" | "head";
46
+ export declare type ModifyMethods = "post" | "put" | "patch";
47
+ export declare type AxleInstance = AxiosInstance & {
48
+ helpers: AxiosHelpers;
49
+ };
50
+ export declare function createFetchHelper(service: AxleInstance, method: FetchMethods, responseType: ResponseType): <T, R = AxiosResponse<T, any>>(url: string, params?: any, config?: AxleRequestConfig) => Promise<R>;
51
+ export declare function createModifyHelper(service: AxleInstance, method: ModifyMethods, contentType: "application/json" | "multipart/form-data" | "application/x-www-form-urlencoded"): <T, R = AxiosResponse<T, any>>(url: string, data?: any, config?: AxleRequestConfig) => Promise<R>;
52
+ export declare function download(url: string | Blob, filename: string): void;
53
+ export declare function createAxle(config: AxiosRequestConfig): AxleInstance;
package/es/index.js ADDED
@@ -0,0 +1,84 @@
1
+ import axios from "axios";
2
+ import qs from "qs";
3
+ export function createFetchHelper(service, method, responseType) {
4
+ return function (url, params, config) {
5
+ return service[method](url, Object.assign({ params: Object.assign({ _t: Date.now() }, params), responseType }, config));
6
+ };
7
+ }
8
+ export function createModifyHelper(service, method, contentType) {
9
+ return function (url, data, config) {
10
+ if (contentType === "application/x-www-form-urlencoded") {
11
+ data = qs.stringify(data);
12
+ }
13
+ if (contentType === "multipart/form-data") {
14
+ const formData = new FormData();
15
+ Object.keys(data).forEach((key) => formData.append(key, data[key]));
16
+ data = formData;
17
+ }
18
+ return service[method](url, data, Object.assign({ headers: {
19
+ "Content-Type": contentType,
20
+ } }, config));
21
+ };
22
+ }
23
+ export function download(url, filename) {
24
+ const a = document.createElement("a");
25
+ a.download = filename;
26
+ a.style.display = "none";
27
+ a.href = typeof url === "string" ? url : URL.createObjectURL(url);
28
+ document.body.appendChild(a);
29
+ a.click();
30
+ URL.revokeObjectURL(a.href);
31
+ document.body.removeChild(a);
32
+ }
33
+ export function createAxle(config) {
34
+ const service = axios.create(config);
35
+ function setHeader(key, value) {
36
+ service.defaults.headers["common"][key] = value;
37
+ }
38
+ function removeHeader(key) {
39
+ if (typeof key === "string") {
40
+ Reflect.deleteProperty(service.defaults.headers["common"], key);
41
+ return;
42
+ }
43
+ key.forEach((k) => Reflect.deleteProperty(service.defaults.headers["common"], k));
44
+ }
45
+ service.helpers = {
46
+ get: createFetchHelper(service, "get", "json"),
47
+ getBlob: createFetchHelper(service, "get", "blob"),
48
+ getDocument: createFetchHelper(service, "get", "document"),
49
+ getArrayBuffer: createFetchHelper(service, "get", "arraybuffer"),
50
+ getText: createFetchHelper(service, "get", "text"),
51
+ getStream: createFetchHelper(service, "get", "stream"),
52
+ head: createFetchHelper(service, "head", "json"),
53
+ headBlob: createFetchHelper(service, "head", "blob"),
54
+ headDocument: createFetchHelper(service, "head", "document"),
55
+ headArrayBuffer: createFetchHelper(service, "head", "arraybuffer"),
56
+ headText: createFetchHelper(service, "head", "text"),
57
+ headStream: createFetchHelper(service, "head", "stream"),
58
+ options: createFetchHelper(service, "options", "json"),
59
+ optionsBlob: createFetchHelper(service, "options", "blob"),
60
+ optionsDocument: createFetchHelper(service, "options", "document"),
61
+ optionsArrayBuffer: createFetchHelper(service, "options", "arraybuffer"),
62
+ optionsText: createFetchHelper(service, "options", "text"),
63
+ optionsStream: createFetchHelper(service, "options", "stream"),
64
+ delete: createFetchHelper(service, "delete", "json"),
65
+ deleteBlob: createFetchHelper(service, "delete", "blob"),
66
+ deleteDocument: createFetchHelper(service, "delete", "document"),
67
+ deleteArrayBuffer: createFetchHelper(service, "delete", "arraybuffer"),
68
+ deleteText: createFetchHelper(service, "delete", "text"),
69
+ deleteStream: createFetchHelper(service, "delete", "stream"),
70
+ post: createModifyHelper(service, "post", "application/x-www-form-urlencoded"),
71
+ postJSON: createModifyHelper(service, "post", "application/json"),
72
+ postMultipart: createModifyHelper(service, "post", "multipart/form-data"),
73
+ put: createModifyHelper(service, "put", "application/x-www-form-urlencoded"),
74
+ putJSON: createModifyHelper(service, "put", "application/json"),
75
+ putMultipart: createModifyHelper(service, "put", "multipart/form-data"),
76
+ patch: createModifyHelper(service, "patch", "application/x-www-form-urlencoded"),
77
+ patchJSON: createModifyHelper(service, "patch", "application/json"),
78
+ patchMultipart: createModifyHelper(service, "patch", "multipart/form-data"),
79
+ download,
80
+ setHeader,
81
+ removeHeader,
82
+ };
83
+ return service;
84
+ }
package/lib/index.d.ts CHANGED
@@ -9,19 +9,19 @@ export interface AxiosHelpers {
9
9
  getBlob: FetchHelper;
10
10
  getDocument: FetchHelper;
11
11
  getText: FetchHelper;
12
- getArraybuffer: FetchHelper;
12
+ getArrayBuffer: FetchHelper;
13
13
  getStream: FetchHelper;
14
14
  head: FetchHelper;
15
15
  headBlob: FetchHelper;
16
16
  headDocument: FetchHelper;
17
17
  headText: FetchHelper;
18
- headArraybuffer: FetchHelper;
18
+ headArrayBuffer: FetchHelper;
19
19
  headStream: FetchHelper;
20
20
  options: FetchHelper;
21
21
  optionsBlob: FetchHelper;
22
22
  optionsDocument: FetchHelper;
23
23
  optionsText: FetchHelper;
24
- optionsArraybuffer: FetchHelper;
24
+ optionsArrayBuffer: FetchHelper;
25
25
  optionsStream: FetchHelper;
26
26
  delete: FetchHelper;
27
27
  deleteBlob: FetchHelper;
@@ -47,7 +47,7 @@ export declare type ModifyMethods = "post" | "put" | "patch";
47
47
  export declare type AxleInstance = AxiosInstance & {
48
48
  helpers: AxiosHelpers;
49
49
  };
50
- export declare function createFetchHelper(service: AxleInstance, method: FetchMethods, responseType: ResponseType): <T, R = AxiosResponse<T, any>>(url: string, params?: any, config?: AxleRequestConfig | undefined) => Promise<R>;
51
- export declare function createModifyHelper(service: AxleInstance, method: ModifyMethods, contentType: "application/json" | "multipart/form-data" | "application/x-www-form-urlencoded"): <T, R = AxiosResponse<T, any>>(url: string, data?: any, config?: AxleRequestConfig | undefined) => Promise<R>;
50
+ export declare function createFetchHelper(service: AxleInstance, method: FetchMethods, responseType: ResponseType): <T, R = AxiosResponse<T, any>>(url: string, params?: any, config?: AxleRequestConfig) => Promise<R>;
51
+ export declare function createModifyHelper(service: AxleInstance, method: ModifyMethods, contentType: "application/json" | "multipart/form-data" | "application/x-www-form-urlencoded"): <T, R = AxiosResponse<T, any>>(url: string, data?: any, config?: AxleRequestConfig) => Promise<R>;
52
52
  export declare function download(url: string | Blob, filename: string): void;
53
53
  export declare function createAxle(config: AxiosRequestConfig): AxleInstance;
package/lib/index.js CHANGED
@@ -55,19 +55,19 @@ function createAxle(config) {
55
55
  get: createFetchHelper(service, "get", "json"),
56
56
  getBlob: createFetchHelper(service, "get", "blob"),
57
57
  getDocument: createFetchHelper(service, "get", "document"),
58
- getArraybuffer: createFetchHelper(service, "get", "arraybuffer"),
58
+ getArrayBuffer: createFetchHelper(service, "get", "arraybuffer"),
59
59
  getText: createFetchHelper(service, "get", "text"),
60
60
  getStream: createFetchHelper(service, "get", "stream"),
61
61
  head: createFetchHelper(service, "head", "json"),
62
62
  headBlob: createFetchHelper(service, "head", "blob"),
63
63
  headDocument: createFetchHelper(service, "head", "document"),
64
- headArraybuffer: createFetchHelper(service, "head", "arraybuffer"),
64
+ headArrayBuffer: createFetchHelper(service, "head", "arraybuffer"),
65
65
  headText: createFetchHelper(service, "head", "text"),
66
66
  headStream: createFetchHelper(service, "head", "stream"),
67
67
  options: createFetchHelper(service, "options", "json"),
68
68
  optionsBlob: createFetchHelper(service, "options", "blob"),
69
69
  optionsDocument: createFetchHelper(service, "options", "document"),
70
- optionsArraybuffer: createFetchHelper(service, "options", "arraybuffer"),
70
+ optionsArrayBuffer: createFetchHelper(service, "options", "arraybuffer"),
71
71
  optionsText: createFetchHelper(service, "options", "text"),
72
72
  optionsStream: createFetchHelper(service, "options", "stream"),
73
73
  delete: createFetchHelper(service, "delete", "json"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/axle",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "A useful axios helper",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -12,15 +12,15 @@
12
12
  "license": "MIT",
13
13
  "devDependencies": {
14
14
  "@types/qs": "^6.9.7",
15
- "@varlet/cli": "^1.26.7",
16
- "@varlet/icons": "^1.26.7",
17
- "@varlet/touch-emulator": "^1.26.7",
15
+ "@varlet/cli": "latest",
16
+ "@varlet/icons": "latest",
17
+ "@varlet/touch-emulator": "latest",
18
18
  "clipboard": "^2.0.6",
19
19
  "live-server": "^1.2.1",
20
20
  "lodash-es": "^4.17.21",
21
21
  "typescript": "^4.4.4",
22
- "vue": "3.2.16",
23
- "vue-router": "4.0.12"
22
+ "vue": "^3.2.37",
23
+ "vue-router": "^4.0.16"
24
24
  },
25
25
  "homepage": "https://varlet.gitee.io/axle/",
26
26
  "repository": {
@@ -36,12 +36,13 @@
36
36
  ],
37
37
  "packageManager": "pnpm@6.24.3",
38
38
  "files": [
39
- "lib"
39
+ "lib",
40
+ "es"
40
41
  ],
41
42
  "author": "Joker <13255238145@163.com>",
42
43
  "dependencies": {
43
- "axios": "^0.26.1",
44
- "qs": "^6.10.3"
44
+ "axios": "^0.27.2",
45
+ "qs": "^6.11.0"
45
46
  },
46
47
  "scripts": {
47
48
  "bootstrap:ci": "pnpm i",
@@ -52,5 +53,5 @@
52
53
  "compile": "rm -rf lib es && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json",
53
54
  "release": "pnpm compile && varlet-cli release"
54
55
  },
55
- "readme": "<div>\n <a href=\"https://github.com/varletjs/axle\">\n <img src=\"https://github.com/varletjs/axle/blob/main/public/logo.svg\" width=\"400\">\n </a>\n <h2>A tool library based on axios to simplify the development process</h2>\n</div>\n\n### Quickstart\n\n```shell\n# use npm or yarn or pnpm\n\n# npm\nnpm i @varlet/axle -S\n\n# yarn\nyarn add @varlet/axle\n\n# pnpm\npnpm add @varlet/axle\n```\n\n### Function Signature\n\n```typescript\n// 'get' | 'head' | 'options' | 'delete'\nexport type FetchHelper = <T = any, R = AxiosResponse<T>>(\n url: string,\n params?: any,\n config?: AxiosRequestConfig\n) => Promise<R>\n// 'post' | 'put' | 'patch'\nexport type ModifyHelper = <T = any, R = AxiosResponse<T>>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n) => Promise<R>\n\nexport interface AxleHelpers {\n // get data in json format\n get: FetchHelper\n // get data in blob format, which can be used to construct URL download under browser\n getBlob: FetchHelper\n // get the html document, return a dom node, can directly embed the document\n getDocument: FetchHelper\n // get text\n getText: FetchHelper\n // get Arraybuffer, which can be used for segmented download\n getArraybuffer: FetchHelper\n // get a readable stream, which can be used for browser caching\n getStream: FetchHelper\n\n head: FetchHelper\n headBlob: FetchHelper\n headDocument: FetchHelper\n headText: FetchHelper\n headArraybuffer: FetchHelper\n headStream: FetchHelper\n\n options: FetchHelper\n optionsBlob: FetchHelper\n optionsDocument: FetchHelper\n optionsText: FetchHelper\n optionsArraybuffer: FetchHelper\n optionsStream: FetchHelper\n\n delete: FetchHelper\n deleteBlob: FetchHelper\n deleteDocument: FetchHelper\n deleteText: FetchHelper\n deleteArrayBuffer: FetchHelper\n deleteStream: FetchHelper\n\n // submit application/x-www-form-urlencoded encoded data\n post: ModifyHelper\n // submit application/json encoded data\n postJSON: ModifyHelper\n // submit multipart/form-data encoded data\n postMultipart: ModifyHelper\n\n put: ModifyHelper\n putJSON: ModifyHelper\n putMultipart: ModifyHelper\n\n patch: ModifyHelper\n patchJSON: ModifyHelper\n patchMultipart: ModifyHelper\n\n // browser download file\n download(blob: string | Blob, filename: string): void\n\n // set global header\n setHeader(key: string, value: string): void\n // remove global header\n removeHeader(key: string | string[]): void\n}\n```\n\n### Normalize Api Arguments\n\n```js\n// axios\nimport { createAxios } from 'axios'\n\nconst axios = createAxios({})\n\nfunction getUser() {\n return axios.get('/user', {\n params: {\n id: 1,\n },\n })\n}\n\nfunction uploadFile() {\n const formData = new FormData()\n formData.append('name', 'axios')\n formData.append('file', new File())\n \n return axios.post('/user', formData, {\n headers: {\n 'Ccontent-Type': 'multipart/form-data',\n },\n })\n}\n```\n\n```js\n// axle\nimport { createAxle } from '@varlet/axle'\n\n// create axle instance , axle has the same abilities as axios\nconst axle = createAxle(/** @see http://www.axios-js.com/zh-cn/docs/#axios-create-config **/)\n\n// Some helper functions of axle\nconst axleHelpers = axle.helpers\n\nfunction getUser() {\n return axleHelpers.get('/user', { id: 1 })\n}\n\nfunction addUser() {\n return axleHelpers.postMultipart('/user', { name: 'axle', file: new File() })\n}\n```\n"
56
+ "readme": "<div>\n <a href=\"https://github.com/varletjs/axle\">\n <img src=\"https://github.com/varletjs/axle/blob/main/public/logo.svg\" width=\"400\">\n </a>\n <h2>A tool library based on axios to simplify the development process</h2>\n</div>\n\n### Quickstart\n\n```shell\n# use npm or yarn or pnpm\n\n# npm\nnpm i @varlet/axle -S\n\n# yarn\nyarn add @varlet/axle\n\n# pnpm\npnpm add @varlet/axle\n```\n\n### Function Signature\n\n```typescript\n// 'get' | 'head' | 'options' | 'delete'\nexport type FetchHelper = <T = any, R = AxiosResponse<T>>(\n url: string,\n params?: any,\n config?: AxiosRequestConfig\n) => Promise<R>\n// 'post' | 'put' | 'patch'\nexport type ModifyHelper = <T = any, R = AxiosResponse<T>>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n) => Promise<R>\n\nexport interface AxleHelpers {\n // get data in json format\n get: FetchHelper\n // get data in blob format, which can be used to construct URL download under browser\n getBlob: FetchHelper\n // get the html document, return a dom node, can directly embed the document\n getDocument: FetchHelper\n // get text\n getText: FetchHelper\n // get ArrayBuffer, which can be used for segmented download\n getArrayBuffer: FetchHelper\n // get a readable stream, which can be used for browser caching\n getStream: FetchHelper\n\n head: FetchHelper\n headBlob: FetchHelper\n headDocument: FetchHelper\n headText: FetchHelper\n headArrayBuffer: FetchHelper\n headStream: FetchHelper\n\n options: FetchHelper\n optionsBlob: FetchHelper\n optionsDocument: FetchHelper\n optionsText: FetchHelper\n optionsArrayBuffer: FetchHelper\n optionsStream: FetchHelper\n\n delete: FetchHelper\n deleteBlob: FetchHelper\n deleteDocument: FetchHelper\n deleteText: FetchHelper\n deleteArrayBuffer: FetchHelper\n deleteStream: FetchHelper\n\n // submit application/x-www-form-urlencoded encoded data\n post: ModifyHelper\n // submit application/json encoded data\n postJSON: ModifyHelper\n // submit multipart/form-data encoded data\n postMultipart: ModifyHelper\n\n put: ModifyHelper\n putJSON: ModifyHelper\n putMultipart: ModifyHelper\n\n patch: ModifyHelper\n patchJSON: ModifyHelper\n patchMultipart: ModifyHelper\n\n // browser download file\n download(blob: string | Blob, filename: string): void\n\n // set global header\n setHeader(key: string, value: string): void\n // remove global header\n removeHeader(key: string | string[]): void\n}\n```\n\n### Normalize Api Arguments\n\n```js\n// axios\nimport { createAxios } from 'axios'\n\nconst axios = createAxios({})\n\nfunction getUser() {\n return axios.get('/user', {\n params: {\n id: 1,\n },\n })\n}\n\nfunction uploadFile() {\n const formData = new FormData()\n formData.append('name', 'axios')\n formData.append('file', new File())\n \n return axios.post('/user', formData, {\n headers: {\n 'Ccontent-Type': 'multipart/form-data',\n },\n })\n}\n```\n\n```js\n// axle\nimport { createAxle } from '@varlet/axle'\n\n// create axle instance , axle has the same abilities as axios\nconst axle = createAxle(/** @see http://www.axios-js.com/zh-cn/docs/#axios-create-config **/)\n\n// Some helper functions of axle\nconst axleHelpers = axle.helpers\n\nfunction getUser() {\n return axleHelpers.get('/user', { id: 1 })\n}\n\nfunction addUser() {\n return axleHelpers.postMultipart('/user', { name: 'axle', file: new File() })\n}\n```\n"
56
57
  }