@chzky/reqwest 0.0.1 → 0.1.1

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.
Files changed (179) hide show
  1. package/README.md +314 -0
  2. package/esm/_dnt.polyfills.d.ts +11 -0
  3. package/esm/_dnt.polyfills.d.ts.map +1 -10
  4. package/esm/_dnt.polyfills.js +24 -66
  5. package/esm/_dnt.shims.d.ts +1 -13
  6. package/esm/_dnt.shims.d.ts.map +1 -1
  7. package/esm/_dnt.shims.js +57 -1
  8. package/esm/lib/core/class.d.ts +122 -0
  9. package/esm/lib/core/class.d.ts.map +1 -0
  10. package/esm/lib/core/class.js +173 -0
  11. package/esm/lib/core/core.d.ts +11 -0
  12. package/esm/lib/core/core.d.ts.map +1 -0
  13. package/esm/lib/core/core.js +157 -0
  14. package/esm/lib/{reqwest → core}/factor.d.ts +57 -9
  15. package/esm/lib/core/factor.d.ts.map +1 -0
  16. package/esm/lib/core/factor.js +48 -0
  17. package/esm/lib/core/interface.d.ts +172 -0
  18. package/esm/lib/core/interface.d.ts.map +1 -0
  19. package/esm/lib/core/interface.js +1 -0
  20. package/esm/lib/core/mod.d.ts +5 -0
  21. package/esm/lib/core/mod.d.ts.map +1 -0
  22. package/esm/lib/core/mod.js +3 -0
  23. package/esm/lib/helper/mod.d.ts +2 -0
  24. package/esm/lib/helper/mod.d.ts.map +1 -1
  25. package/esm/lib/helper/mod.js +2 -0
  26. package/esm/lib/helper/other/mod.d.ts +2 -0
  27. package/esm/lib/helper/other/mod.d.ts.map +1 -0
  28. package/esm/lib/helper/other/mod.js +1 -0
  29. package/esm/lib/helper/other/sseParse.d.ts +34 -0
  30. package/esm/lib/helper/other/sseParse.d.ts.map +1 -0
  31. package/esm/lib/helper/other/sseParse.js +42 -0
  32. package/esm/lib/helper/request/RESTful.d.ts +43 -11
  33. package/esm/lib/helper/request/RESTful.d.ts.map +1 -1
  34. package/esm/lib/helper/request/RESTful.js +129 -1
  35. package/esm/lib/helper/request/baseConf.d.ts +11 -4
  36. package/esm/lib/helper/request/baseConf.d.ts.map +1 -1
  37. package/esm/lib/helper/request/baseConf.js +37 -1
  38. package/esm/lib/helper/request/factors.d.ts +31 -0
  39. package/esm/lib/helper/request/factors.d.ts.map +1 -0
  40. package/esm/lib/helper/request/factors.js +40 -0
  41. package/esm/lib/helper/request/input.d.ts +5 -4
  42. package/esm/lib/helper/request/input.d.ts.map +1 -1
  43. package/esm/lib/helper/request/input.js +24 -1
  44. package/esm/lib/helper/request/mod.d.ts +4 -1
  45. package/esm/lib/helper/request/mod.d.ts.map +1 -1
  46. package/esm/lib/helper/request/mod.js +6 -3
  47. package/esm/lib/helper/request/process.d.ts +16 -0
  48. package/esm/lib/helper/request/process.d.ts.map +1 -0
  49. package/esm/lib/helper/request/process.js +37 -0
  50. package/esm/lib/helper/request/wait.d.ts +9 -0
  51. package/esm/lib/helper/request/wait.d.ts.map +1 -0
  52. package/esm/lib/helper/request/wait.js +13 -0
  53. package/esm/lib/helper/response/blobToUrl.d.ts +11 -0
  54. package/esm/lib/helper/response/blobToUrl.d.ts.map +1 -0
  55. package/esm/lib/helper/response/blobToUrl.js +22 -0
  56. package/esm/lib/helper/response/mod.d.ts +3 -1
  57. package/esm/lib/helper/response/mod.d.ts.map +1 -1
  58. package/esm/lib/helper/response/mod.js +4 -2
  59. package/esm/lib/helper/response/openLink.d.ts +8 -0
  60. package/esm/lib/helper/response/openLink.d.ts.map +1 -0
  61. package/esm/lib/helper/response/openLink.js +21 -0
  62. package/esm/lib/helper/response/output.d.ts +14 -3
  63. package/esm/lib/helper/response/output.d.ts.map +1 -1
  64. package/esm/lib/helper/response/output.js +24 -1
  65. package/esm/lib/helper/response/pick.d.ts +19 -2
  66. package/esm/lib/helper/response/pick.d.ts.map +1 -1
  67. package/esm/lib/helper/response/pick.js +26 -1
  68. package/esm/lib/helper/use/mod.js +2 -2
  69. package/esm/lib/helper/use/useCancel.d.ts +32 -2
  70. package/esm/lib/helper/use/useCancel.d.ts.map +1 -1
  71. package/esm/lib/helper/use/useCancel.js +42 -1
  72. package/esm/lib/helper/use/useLoading.d.ts +27 -7
  73. package/esm/lib/helper/use/useLoading.d.ts.map +1 -1
  74. package/esm/lib/helper/use/useLoading.js +58 -1
  75. package/esm/lib/mod.d.ts +1 -1
  76. package/esm/lib/mod.d.ts.map +1 -1
  77. package/esm/lib/mod.js +1 -1
  78. package/package.json +4 -11
  79. package/script/_dnt.polyfills.d.ts +11 -0
  80. package/script/_dnt.polyfills.d.ts.map +1 -1
  81. package/script/_dnt.polyfills.js +15 -0
  82. package/script/_dnt.shims.d.ts +1 -13
  83. package/script/_dnt.shims.d.ts.map +1 -1
  84. package/script/_dnt.shims.js +2 -21
  85. package/script/lib/core/class.d.ts +122 -0
  86. package/script/lib/core/class.d.ts.map +1 -0
  87. package/script/lib/core/class.js +180 -0
  88. package/script/lib/core/core.d.ts +11 -0
  89. package/script/lib/core/core.d.ts.map +1 -0
  90. package/script/lib/core/core.js +165 -0
  91. package/script/lib/{reqwest → core}/factor.d.ts +57 -9
  92. package/script/lib/core/factor.d.ts.map +1 -0
  93. package/script/lib/{reqwest → core}/factor.js +24 -8
  94. package/script/lib/core/interface.d.ts +172 -0
  95. package/script/lib/core/interface.d.ts.map +1 -0
  96. package/script/lib/core/mod.d.ts +5 -0
  97. package/script/lib/core/mod.d.ts.map +1 -0
  98. package/script/lib/{reqwest → core}/mod.js +1 -0
  99. package/script/lib/helper/mod.d.ts +2 -0
  100. package/script/lib/helper/mod.d.ts.map +1 -1
  101. package/script/lib/helper/mod.js +2 -0
  102. package/script/lib/helper/other/mod.d.ts +2 -0
  103. package/script/lib/helper/other/mod.d.ts.map +1 -0
  104. package/script/lib/helper/other/mod.js +17 -0
  105. package/script/lib/helper/other/sseParse.d.ts +34 -0
  106. package/script/lib/helper/other/sseParse.d.ts.map +1 -0
  107. package/script/lib/helper/other/sseParse.js +45 -0
  108. package/script/lib/helper/request/RESTful.d.ts +43 -11
  109. package/script/lib/helper/request/RESTful.d.ts.map +1 -1
  110. package/script/lib/helper/request/RESTful.js +75 -21
  111. package/script/lib/helper/request/baseConf.d.ts +11 -4
  112. package/script/lib/helper/request/baseConf.d.ts.map +1 -1
  113. package/script/lib/helper/request/baseConf.js +25 -10
  114. package/script/lib/helper/request/factors.d.ts +31 -0
  115. package/script/lib/helper/request/factors.d.ts.map +1 -0
  116. package/script/lib/helper/request/factors.js +43 -0
  117. package/script/lib/helper/request/input.d.ts +5 -4
  118. package/script/lib/helper/request/input.d.ts.map +1 -1
  119. package/script/lib/helper/request/input.js +11 -11
  120. package/script/lib/helper/request/mod.d.ts +4 -1
  121. package/script/lib/helper/request/mod.d.ts.map +1 -1
  122. package/script/lib/helper/request/mod.js +6 -3
  123. package/script/lib/helper/request/process.d.ts +16 -0
  124. package/script/lib/helper/request/process.d.ts.map +1 -0
  125. package/script/lib/helper/request/process.js +41 -0
  126. package/script/lib/helper/request/wait.d.ts +9 -0
  127. package/script/lib/helper/request/wait.d.ts.map +1 -0
  128. package/script/lib/helper/request/wait.js +16 -0
  129. package/script/lib/helper/response/blobToUrl.d.ts +11 -0
  130. package/script/lib/helper/response/blobToUrl.d.ts.map +1 -0
  131. package/script/lib/helper/response/blobToUrl.js +25 -0
  132. package/script/lib/helper/response/mod.d.ts +3 -1
  133. package/script/lib/helper/response/mod.d.ts.map +1 -1
  134. package/script/lib/helper/response/mod.js +4 -2
  135. package/script/lib/helper/response/openLink.d.ts +8 -0
  136. package/script/lib/helper/response/openLink.d.ts.map +1 -0
  137. package/script/lib/helper/response/openLink.js +47 -0
  138. package/script/lib/helper/response/output.d.ts +14 -3
  139. package/script/lib/helper/response/output.d.ts.map +1 -1
  140. package/script/lib/helper/response/output.js +20 -7
  141. package/script/lib/helper/response/pick.d.ts +19 -2
  142. package/script/lib/helper/response/pick.d.ts.map +1 -1
  143. package/script/lib/helper/response/pick.js +22 -5
  144. package/script/lib/helper/use/mod.js +2 -2
  145. package/script/lib/helper/use/useCancel.d.ts +32 -2
  146. package/script/lib/helper/use/useCancel.d.ts.map +1 -1
  147. package/script/lib/helper/use/useCancel.js +37 -7
  148. package/script/lib/helper/use/useLoading.d.ts +27 -7
  149. package/script/lib/helper/use/useLoading.d.ts.map +1 -1
  150. package/script/lib/helper/use/useLoading.js +56 -46
  151. package/script/lib/mod.d.ts +1 -1
  152. package/script/lib/mod.d.ts.map +1 -1
  153. package/script/lib/mod.js +1 -1
  154. package/esm/lib/reqwest/class.d.ts +0 -84
  155. package/esm/lib/reqwest/class.d.ts.map +0 -1
  156. package/esm/lib/reqwest/class.js +0 -1
  157. package/esm/lib/reqwest/core.d.ts +0 -6
  158. package/esm/lib/reqwest/core.d.ts.map +0 -1
  159. package/esm/lib/reqwest/core.js +0 -250
  160. package/esm/lib/reqwest/factor.d.ts.map +0 -1
  161. package/esm/lib/reqwest/factor.js +0 -1
  162. package/esm/lib/reqwest/interface.d.ts +0 -48
  163. package/esm/lib/reqwest/interface.d.ts.map +0 -1
  164. package/esm/lib/reqwest/interface.js +0 -1
  165. package/esm/lib/reqwest/mod.d.ts +0 -4
  166. package/esm/lib/reqwest/mod.d.ts.map +0 -1
  167. package/esm/lib/reqwest/mod.js +0 -2
  168. package/script/lib/reqwest/class.d.ts +0 -84
  169. package/script/lib/reqwest/class.d.ts.map +0 -1
  170. package/script/lib/reqwest/class.js +0 -72
  171. package/script/lib/reqwest/core.d.ts +0 -6
  172. package/script/lib/reqwest/core.d.ts.map +0 -1
  173. package/script/lib/reqwest/core.js +0 -72
  174. package/script/lib/reqwest/factor.d.ts.map +0 -1
  175. package/script/lib/reqwest/interface.d.ts +0 -23
  176. package/script/lib/reqwest/interface.d.ts.map +0 -1
  177. package/script/lib/reqwest/mod.d.ts +0 -4
  178. package/script/lib/reqwest/mod.d.ts.map +0 -1
  179. /package/script/lib/{reqwest → core}/interface.js +0 -0
@@ -1,26 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dntGlobalThis = exports.setTimeout = exports.setInterval = exports.prompt = exports.confirm = exports.alert = exports.Deno = void 0;
4
- const shim_deno_1 = require("@deno/shim-deno");
5
- var shim_deno_2 = require("@deno/shim-deno");
6
- Object.defineProperty(exports, "Deno", { enumerable: true, get: function () { return shim_deno_2.Deno; } });
7
- const shim_prompts_1 = require("@deno/shim-prompts");
8
- var shim_prompts_2 = require("@deno/shim-prompts");
9
- Object.defineProperty(exports, "alert", { enumerable: true, get: function () { return shim_prompts_2.alert; } });
10
- Object.defineProperty(exports, "confirm", { enumerable: true, get: function () { return shim_prompts_2.confirm; } });
11
- Object.defineProperty(exports, "prompt", { enumerable: true, get: function () { return shim_prompts_2.prompt; } });
12
- const shim_timers_1 = require("@deno/shim-timers");
13
- var shim_timers_2 = require("@deno/shim-timers");
14
- Object.defineProperty(exports, "setInterval", { enumerable: true, get: function () { return shim_timers_2.setInterval; } });
15
- Object.defineProperty(exports, "setTimeout", { enumerable: true, get: function () { return shim_timers_2.setTimeout; } });
16
- const dntGlobals = {
17
- Deno: shim_deno_1.Deno,
18
- alert: shim_prompts_1.alert,
19
- confirm: shim_prompts_1.confirm,
20
- prompt: shim_prompts_1.prompt,
21
- setInterval: shim_timers_1.setInterval,
22
- setTimeout: shim_timers_1.setTimeout,
23
- };
3
+ exports.dntGlobalThis = void 0;
4
+ const dntGlobals = {};
24
5
  exports.dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
25
6
  function createMergeProxy(baseObj, extObj) {
26
7
  return new Proxy(baseObj, {
@@ -0,0 +1,122 @@
1
+ import type { AsyncResult, UnexpectedError } from '@chzky/core';
2
+ import type { AxiosResponse, CreateAxiosDefaults } from 'axios';
3
+ import type { ExtendWebSocketSubject, MergeErrors, RequestInterceptor, ReqwestInterceptor, ReqwestInterface, ReqwestSSEConfig, ReqwestWsConfig, ResponseInterceptor, ResponseResult } from './interface.js';
4
+ /** ## `Reqwest` : 基于`Axios`二次封装的请求库 */
5
+ export declare class Reqwest<O = AxiosResponse<unknown, unknown>, E = never, ER = UnexpectedError> implements ReqwestInterface<O, E, ER> {
6
+ private readonly interceptors_req;
7
+ private readonly interceptors_res;
8
+ private cof;
9
+ private readonly internal_axios;
10
+ constructor(interceptors_req?: any[], interceptors_res?: any[], cof?: CreateAxiosDefaults);
11
+ /** ### `conf` : 更新配置 */
12
+ conf(conf: CreateAxiosDefaults): ReqwestInterface<O, E, ER>;
13
+ request<I extends RequestInterceptor<unknown>[]>(...interceptors: I): ReqwestInterface<O, MergeErrors<I> | E, ER>;
14
+ response<T extends ResponseInterceptor<unknown, unknown, unknown>[]>(...interceptor: T): ResponseResult<O, E, ER, T>;
15
+ use<OO, EC, EE>(interceptor: ReqwestInterceptor<O, EC, OO, EE>): ReqwestInterface<OO, EC | E, EE | ER>;
16
+ dispatch(): AsyncResult<O, E | ER>;
17
+ clone(): ReqwestInterface<O, E, ER>;
18
+ /** ### `new`
19
+ 实现{@link NewAble}接口 */
20
+ static new(): ReqwestInterface;
21
+ /** ### `default`
22
+ 实现{@link Default}接口 : 以默认配置生成一个`Reqwest`
23
+ #### 默认配置
24
+ + `timeout` : `6000`ms
25
+ */
26
+ static default(): ReqwestInterface;
27
+ /** ## `sse` : 进行[SSE](https://developer.mozilla.org/zh-CN/docs/Web/API/Server-sent_events/Using_server-sent_events)请求
28
+ api使用见[rxjs-webSocket](https://rxjs.dev/api/webSocket/webSocket)
29
+ + 实际请求只有在第一次`gen.next()`时才会发出请求
30
+ + 由于请求带来的错误不会抛出,而是返回`{done:true,value:underfine}`
31
+ @example for await to take
32
+ ```ts
33
+ const sse_url = 'https://stream.wikimedia.org/v2/stream/recentchange'
34
+
35
+ const abort = new AbortController()
36
+
37
+ const gen = Reqwest.sse({
38
+ abort,
39
+ url: sse_url,
40
+ })
41
+
42
+ let index = 0
43
+ // 开始循环时才会调用接口获取数据
44
+ for await (const item of gen) {
45
+ if (index === 10) abort.abort() //主动终止数据获取
46
+ index++
47
+ const message = parse_sse_data(item)
48
+ assert(typeof message.data === 'string')
49
+ }
50
+
51
+ const { done, value } = await gen.next()
52
+ assert(done)
53
+ assert.equal(value, undefined)
54
+ ```
55
+ @example AsyncVector to take
56
+ ```ts
57
+ const sse_url = 'https://stream.wikimedia.org/v2/stream/recentchange'
58
+
59
+ const abort = new AbortController()
60
+
61
+ const gen = Reqwest.sse({
62
+ abort,
63
+ url: sse_url,
64
+ })
65
+
66
+ const vec = AsyncVec(gen, false)
67
+
68
+ const result = await vec
69
+ .map(item => parse_sse_data(item))
70
+ .filter(i => Boolean(i.data))
71
+ .take(10)
72
+ .collect()
73
+
74
+ const { done, value } = await gen.next()
75
+
76
+ assert(done)
77
+ assert.equal(value, undefined)
78
+ assert.equal(result.length, 10)
79
+ assert(result.every(i => i.data.length > 1))
80
+ ```
81
+ */
82
+ static sse(conf: ReqwestSSEConfig): AsyncGenerator<Uint8Array, undefined, void>;
83
+ /** ## `sse` : 进行[WebSocket](https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket)请求
84
+ @example Usage
85
+ ```ts
86
+ const MOCK_URL = 'wss://echo.websocket.org'
87
+
88
+ const { promise, resolve } = Promise.withResolvers<void>()
89
+
90
+ const abort = new AbortController()
91
+
92
+ type TansShape = { type: 'event' | 'message'; data: JsonX }
93
+
94
+ const wss = Reqwest.ws({
95
+ url: MOCK_URL,
96
+ abort: abort.signal,
97
+ deserialize: data => result(() => JSON.parse(data.data) as TansShape).unwrap_or(data.data),
98
+ serialize: (data: TansShape) => JSON.stringify(data),
99
+ })
100
+
101
+ wss.subscribe({
102
+ complete: resolve,
103
+ next: data => {
104
+ if (typeof data === 'string') return
105
+ const rdata = data as TansShape
106
+ if (!rdata.data) return
107
+
108
+ abort.abort() // 触发complete函数,执行complete回调
109
+ assert(rdata.data)
110
+ assert.equal(rdata.type, 'message')
111
+ },
112
+ })
113
+
114
+ wss.next({ type: 'event', data: false })
115
+ wss.next({ type: 'message', data: true })
116
+
117
+ await promise
118
+ ```
119
+ */
120
+ static ws<A, B>(conf: ReqwestWsConfig<A, B>): ExtendWebSocketSubject<A, B>;
121
+ }
122
+ //# sourceMappingURL=class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/lib/core/class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,KAAK,EACX,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,MAAM,gBAAgB,CAAA;AAKvB,uCAAuC;AACvC,qBAAa,OAAO,CACnB,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EACnC,CAAC,GAAG,KAAK,EACT,EAAE,GAAG,eAAe,CACnB,YAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAMrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,GAAG;IAPZ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;gBAIhC,gBAAgB,GAAE,GAAG,EAAO,EAE5B,gBAAgB,GAAE,GAAG,EAAO,EACrC,GAAG,GAAE,mBAAwB;IAKtC,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAW3D,OAAO,CAAC,CAAC,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC9C,GAAG,YAAY,EAAE,CAAC,GAChB,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAQ9C,QAAQ,CAAC,CAAC,SAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAClE,GAAG,WAAW,EAAE,CAAC,GACf,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAQ9B,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EACb,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAC5C,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IAQxC,QAAQ,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAIlC,KAAK,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAQnC;0BACsB;IACtB,MAAM,CAAC,GAAG,IAAI,gBAAgB;IAI9B;;;;OAIG;IACH,MAAM,CAAC,OAAO,IAAI,gBAAgB;IAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC;IAI/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;CAG1E"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Reqwest = void 0;
7
+ const core_js_1 = require("./core.js");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ /** ## `Reqwest` : 基于`Axios`二次封装的请求库 */
10
+ class Reqwest {
11
+ constructor(
12
+ // biome-ignore lint/suspicious/noExplicitAny: <>
13
+ interceptors_req = [],
14
+ // biome-ignore lint/suspicious/noExplicitAny: <>
15
+ interceptors_res = [], cof = {}) {
16
+ Object.defineProperty(this, "interceptors_req", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: interceptors_req
21
+ });
22
+ Object.defineProperty(this, "interceptors_res", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: interceptors_res
27
+ });
28
+ Object.defineProperty(this, "cof", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: cof
33
+ });
34
+ Object.defineProperty(this, "internal_axios", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: axios_1.default.create({})
39
+ });
40
+ cof && this.conf(cof);
41
+ }
42
+ /** ### `conf` : 更新配置 */
43
+ conf(conf) {
44
+ for (const key in conf) {
45
+ if (Object.hasOwn(conf, key)) {
46
+ this.internal_axios.defaults[key] =
47
+ conf[key];
48
+ }
49
+ }
50
+ this.cof = this.internal_axios.defaults;
51
+ return this;
52
+ }
53
+ request(...interceptors) {
54
+ return new Reqwest([...this.interceptors_req, ...interceptors], this.interceptors_res, this.cof);
55
+ }
56
+ response(...interceptor) {
57
+ return new Reqwest(this.interceptors_req, [...this.interceptors_res, ...interceptor], this.cof);
58
+ }
59
+ use(interceptor) {
60
+ return new Reqwest([...this.interceptors_req, interceptor.request], [...this.interceptors_res, interceptor.response], this.cof);
61
+ }
62
+ dispatch() {
63
+ return core_js_1.normal_dispatch.call(this);
64
+ }
65
+ clone() {
66
+ return new Reqwest(this.interceptors_req, this.interceptors_res, this.cof);
67
+ }
68
+ /** ### `new`
69
+ 实现{@link NewAble}接口 */
70
+ static new() {
71
+ return new Reqwest();
72
+ }
73
+ /** ### `default`
74
+ 实现{@link Default}接口 : 以默认配置生成一个`Reqwest`
75
+ #### 默认配置
76
+ + `timeout` : `6000`ms
77
+ */
78
+ static default() {
79
+ return new Reqwest().conf({ timeout: 6000 });
80
+ }
81
+ /** ## `sse` : 进行[SSE](https://developer.mozilla.org/zh-CN/docs/Web/API/Server-sent_events/Using_server-sent_events)请求
82
+ api使用见[rxjs-webSocket](https://rxjs.dev/api/webSocket/webSocket)
83
+ + 实际请求只有在第一次`gen.next()`时才会发出请求
84
+ + 由于请求带来的错误不会抛出,而是返回`{done:true,value:underfine}`
85
+ @example for await to take
86
+ ```ts
87
+ const sse_url = 'https://stream.wikimedia.org/v2/stream/recentchange'
88
+
89
+ const abort = new AbortController()
90
+
91
+ const gen = Reqwest.sse({
92
+ abort,
93
+ url: sse_url,
94
+ })
95
+
96
+ let index = 0
97
+ // 开始循环时才会调用接口获取数据
98
+ for await (const item of gen) {
99
+ if (index === 10) abort.abort() //主动终止数据获取
100
+ index++
101
+ const message = parse_sse_data(item)
102
+ assert(typeof message.data === 'string')
103
+ }
104
+
105
+ const { done, value } = await gen.next()
106
+ assert(done)
107
+ assert.equal(value, undefined)
108
+ ```
109
+ @example AsyncVector to take
110
+ ```ts
111
+ const sse_url = 'https://stream.wikimedia.org/v2/stream/recentchange'
112
+
113
+ const abort = new AbortController()
114
+
115
+ const gen = Reqwest.sse({
116
+ abort,
117
+ url: sse_url,
118
+ })
119
+
120
+ const vec = AsyncVec(gen, false)
121
+
122
+ const result = await vec
123
+ .map(item => parse_sse_data(item))
124
+ .filter(i => Boolean(i.data))
125
+ .take(10)
126
+ .collect()
127
+
128
+ const { done, value } = await gen.next()
129
+
130
+ assert(done)
131
+ assert.equal(value, undefined)
132
+ assert.equal(result.length, 10)
133
+ assert(result.every(i => i.data.length > 1))
134
+ ```
135
+ */
136
+ static sse(conf) {
137
+ return (0, core_js_1.see_reqwest)(conf);
138
+ }
139
+ /** ## `sse` : 进行[WebSocket](https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket)请求
140
+ @example Usage
141
+ ```ts
142
+ const MOCK_URL = 'wss://echo.websocket.org'
143
+
144
+ const { promise, resolve } = Promise.withResolvers<void>()
145
+
146
+ const abort = new AbortController()
147
+
148
+ type TansShape = { type: 'event' | 'message'; data: JsonX }
149
+
150
+ const wss = Reqwest.ws({
151
+ url: MOCK_URL,
152
+ abort: abort.signal,
153
+ deserialize: data => result(() => JSON.parse(data.data) as TansShape).unwrap_or(data.data),
154
+ serialize: (data: TansShape) => JSON.stringify(data),
155
+ })
156
+
157
+ wss.subscribe({
158
+ complete: resolve,
159
+ next: data => {
160
+ if (typeof data === 'string') return
161
+ const rdata = data as TansShape
162
+ if (!rdata.data) return
163
+
164
+ abort.abort() // 触发complete函数,执行complete回调
165
+ assert(rdata.data)
166
+ assert.equal(rdata.type, 'message')
167
+ },
168
+ })
169
+
170
+ wss.next({ type: 'event', data: false })
171
+ wss.next({ type: 'message', data: true })
172
+
173
+ await promise
174
+ ```
175
+ */
176
+ static ws(conf) {
177
+ return (0, core_js_1.ws_reqwest)(conf);
178
+ }
179
+ }
180
+ exports.Reqwest = Reqwest;
@@ -0,0 +1,11 @@
1
+ import { ExtendWebSocketSubject, ReqwestSSEConfig, ReqwestWsConfig } from './interface.js';
2
+ /** 正常的dispatch */
3
+ export declare function normal_dispatch(this: any): Promise<any>;
4
+ /** 请求拦截器运行核心 */
5
+ export declare function request_interceptor_run(conf: any, arrs: any[]): Promise<void>;
6
+ /** 响应拦截器运行核心 */
7
+ export declare function response_interceptor_run(res: any, arrs: any[], wrap?: boolean): Promise<any>;
8
+ /** sse请求转Generator */
9
+ export declare const see_reqwest: (conf: ReqwestSSEConfig) => AsyncGenerator<Uint8Array, undefined, void>;
10
+ export declare const ws_reqwest: <A, B>(conf: ReqwestWsConfig<A, B>) => ExtendWebSocketSubject<A, B>;
11
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/core/core.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAG1F,kBAAkB;AAClB,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAuCvD;AAED,gBAAgB;AAChB,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;AAED,gBAAgB;AAChB,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAQhG;AAiBD,sBAAsB;AACtB,eAAO,MAAM,WAAW,SAAU,gBAAgB,gDAwCjD,CAAA;AAMD,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,QAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAWzC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAC7C,CAAA"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
12
+ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
13
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
14
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
15
+ return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
16
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
17
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
18
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
19
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
20
+ function fulfill(value) { resume("next", value); }
21
+ function reject(value) { resume("throw", value); }
22
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ws_reqwest = exports.see_reqwest = void 0;
26
+ exports.normal_dispatch = normal_dispatch;
27
+ exports.request_interceptor_run = request_interceptor_run;
28
+ exports.response_interceptor_run = response_interceptor_run;
29
+ /** biome-ignore-all lint/suspicious/noExplicitAny: < core file should ignore any type > */
30
+ const core_1 = require("@chzky/core");
31
+ const axios_1 = require("axios");
32
+ /** 正常的dispatch */
33
+ function normal_dispatch() {
34
+ const { resolve, promise } = Promise.withResolvers();
35
+ /** request_interceptor */
36
+ this.internal_axios.interceptors.request.use((conf) => __awaiter(this, void 0, void 0, function* () {
37
+ yield request_interceptor_run(conf, this.interceptors_req);
38
+ return conf;
39
+ }));
40
+ /** response_interceptor */
41
+ this.internal_axios.interceptors.response.use((r) => r /* 2xx 范围内的状态码都会触发该函数。 */, core_1.throwing /* 超出 2xx 范围的状态码都会触发该函数。 */);
42
+ this.internal_axios({})
43
+ .then((res) => __awaiter(this, void 0, void 0, function* () {
44
+ const result = yield response_interceptor_run(res, this.interceptors_res);
45
+ return (0, core_1.Ok)(result);
46
+ }))
47
+ .then(resolve, (e) => {
48
+ /* 异常的可能情况
49
+ 1. interceptors.request的异常
50
+ 1.1 CanceledError - 请求终止错误
51
+ 2. interceptors.response超出200~300的code
52
+ 3. interceptors.response执行过程中的异常:<返回Err类型,或是执行过程中直接throw>
53
+ */
54
+ resolve(e instanceof core_1.AnyError
55
+ ? (0, core_1.Err)(e)
56
+ : e instanceof axios_1.CanceledError
57
+ ? core_1.AbortedError.err(e.message || 'Request has been canceled')
58
+ : e instanceof axios_1.AxiosError
59
+ ? core_1.AnyHowError.err(e.message)
60
+ : core_1.UnexpectedError.err(e));
61
+ });
62
+ return promise;
63
+ }
64
+ /** 请求拦截器运行核心 */
65
+ function request_interceptor_run(conf, arrs) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ for (const fn of arrs) {
68
+ const res = yield Promise.resolve(fn(conf));
69
+ if ((0, core_1.is_err)(res) || (0, core_1.is_ok)(res))
70
+ res.unwrap(); /* 解包 */
71
+ else
72
+ throw core_1.CheckingError.new('RequestInterceptor must return Err<E> or Ok<void>');
73
+ }
74
+ });
75
+ }
76
+ /** 响应拦截器运行核心 */
77
+ function response_interceptor_run(res_1, arrs_1) {
78
+ return __awaiter(this, arguments, void 0, function* (res, arrs, wrap = false) {
79
+ let result = res;
80
+ for (const fn of arrs) {
81
+ result = yield Promise.resolve(fn(result));
82
+ if ((0, core_1.is_err)(result) || (0, core_1.is_ok)(result))
83
+ result = result.unwrap(); /* 解包 */
84
+ else
85
+ throw core_1.CheckingError.new('ResponseInterceptor must return Err<E> or Ok<O>');
86
+ }
87
+ return wrap ? (0, core_1.Ok)(result) : result;
88
+ });
89
+ }
90
+ const is_aborteder = (err) => err instanceof DOMException && err.name === 'AbortError';
91
+ const cleanup_reader = (readerr) => __awaiter(void 0, void 0, void 0, function* () {
92
+ /**
93
+ 1. 数据读取完毕
94
+ 2. gen被关闭读取
95
+ 3. aborted
96
+ */
97
+ try {
98
+ yield (readerr === null || readerr === void 0 ? void 0 : readerr.cancel());
99
+ }
100
+ catch (_) {
101
+ // ignore exception
102
+ }
103
+ });
104
+ /** sse请求转Generator */
105
+ const see_reqwest = (conf) => {
106
+ const { url, abort, method = 'GET' } = conf;
107
+ let response;
108
+ let reader;
109
+ const init_reader = () => __awaiter(void 0, void 0, void 0, function* () {
110
+ var _a;
111
+ if (reader !== undefined)
112
+ return;
113
+ response = yield fetch(url, {
114
+ method,
115
+ headers: { Accept: 'text/event-stream', 'Cache-Control': 'no-cache' },
116
+ signal: abort ? (abort instanceof AbortController ? abort.signal : abort) : undefined,
117
+ });
118
+ const lreader = (_a = response.body) === null || _a === void 0 ? void 0 : _a.getReader();
119
+ if (lreader === undefined)
120
+ throw core_1.None;
121
+ reader = lreader;
122
+ });
123
+ function start_sse() {
124
+ return __asyncGenerator(this, arguments, function* start_sse_1() {
125
+ try {
126
+ yield __await(init_reader());
127
+ }
128
+ catch (_) {
129
+ return yield __await(void 0);
130
+ }
131
+ try {
132
+ while (true) {
133
+ const { done, value } = yield __await(reader.read());
134
+ if (done)
135
+ break;
136
+ yield yield __await(value);
137
+ }
138
+ return yield __await(void 0);
139
+ }
140
+ catch (error) {
141
+ if (!is_aborteder(error))
142
+ throw error;
143
+ }
144
+ finally {
145
+ yield __await(cleanup_reader(reader));
146
+ }
147
+ });
148
+ }
149
+ return start_sse();
150
+ };
151
+ exports.see_reqwest = see_reqwest;
152
+ const default_deserialize = (data) => JSON.parse(data.data);
153
+ const default_serialize = (data) => JSON.stringify(data);
154
+ const ws_reqwest = (conf) => {
155
+ const { url, abort, deserialize = default_deserialize, serialize = default_serialize } = conf;
156
+ const subject = core_1.rjx_ws.webSocket({ url, serializer: serialize, deserializer: deserialize });
157
+ if (abort instanceof AbortController) {
158
+ abort === null || abort === void 0 ? void 0 : abort.signal.addEventListener('abort', subject.complete.bind(subject));
159
+ }
160
+ else {
161
+ abort === null || abort === void 0 ? void 0 : abort.addEventListener('abort', subject.complete.bind(subject));
162
+ }
163
+ return subject;
164
+ };
165
+ exports.ws_reqwest = ws_reqwest;
@@ -1,11 +1,59 @@
1
1
  /** 工厂函数,省去类型声明的步骤 */
2
- import type { RequestInterceptor, MergeErrors, ResponseInterceptor, ReqwestInterceptor } from './interface.js';
3
- /** ### `merge_request` : 工厂函数 of `Reqwest-request`
4
- + 将多个request拦截器合并成一个拦截器
2
+ import type { MergeErrors, RequestInterceptor, ReqwestInterceptor, ResponseInterceptor } from './interface.js';
3
+ /** ### `merge_request` : `request`拦截器合并
4
+ @example Usage
5
+ ```ts
6
+ const reqs = merge_request(
7
+ get('/1/', { id: 1 }),
8
+ input_validate(zod.object({ id: zod.number() })), // 输出判断类型
9
+ response_type('arraybuffer') // 改变接受的响应类型
10
+ )
11
+
12
+ const res = await mock_reqwest.clone().request(reqs).dispatch()
13
+
14
+ const RR = res.unwrap().data as Uint8Array
15
+ const json_text = new TextDecoder('utf-8').decode(RR)
16
+ assert.equal(JSON.parse(json_text).id, 1)
17
+
18
+ mock_reqwest.conf({ timeout: 6000 })
19
+ ```
20
+ @Category Factory
5
21
  */
6
- export declare function merge_request<Interceptors extends RequestInterceptor<any>[]>(...interceptors: Interceptors): RequestInterceptor<MergeErrors<Interceptors>>;
7
- /** ### `merge_response` : 工厂函数 of `Reqwest-response`
8
- + 将多个response拦截器合并成一个拦截器
22
+ export declare function merge_request<Interceptors extends RequestInterceptor<unknown>[]>(...interceptors: Interceptors): RequestInterceptor<MergeErrors<Interceptors>>;
23
+ /** ### `merge_response` : `response`拦截器合并
24
+ @example
25
+ ```ts
26
+ const reqwest = Reqwest.new().conf({ baseURL: 'https://jsonplaceholder.typicode.com/posts/' })
27
+
28
+ const reps = merge_response(
29
+ // 返回值映射
30
+ response_map((data: AxiosResponse<unknown, unknown, object>) => {
31
+ if (data.status !== 200) return AnyHowError.err(data.statusText)
32
+ const rdata = data.data as { userId: number; id: number; title: string; body: string }
33
+ return Ok({ data: rdata, msg: 'success' })
34
+ }),
35
+ // 数据校验
36
+ output_validate(
37
+ zod.object({
38
+ data: zod
39
+ .object({
40
+ userId: zod.exchange.string(), // number --> string
41
+ title: zod.string(),
42
+ })
43
+ .passthrough(), //允许溢出数据
44
+ })
45
+ )
46
+ )
47
+
48
+ const result = await reqwest.request(append_url('/1')).response(reps).dispatch()
49
+
50
+ const {
51
+ data: { userId },
52
+ } = result.unwrap()
53
+
54
+ assert.strict_equal(userId, '1')
55
+ ```
56
+ @Category Factory
9
57
  */
10
58
  export declare function merge_response<I, O, E>(...interceptor: [ResponseInterceptor<I, O, E>]): ResponseInterceptor<I, O, E>;
11
59
  export declare function merge_response<I, O, E, O2, E2>(...interceptor: [ResponseInterceptor<I, O, E>, ResponseInterceptor<O, O2, E2>]): ResponseInterceptor<I, O2, E | E2>;
@@ -65,8 +113,8 @@ export declare function merge_response<I, O, E, O2, E2, O3, E3, O4, E4, O5, E5,
65
113
  ResponseInterceptor<O7, O8, E8>,
66
114
  ResponseInterceptor<O8, O9, E9>
67
115
  ]): ResponseInterceptor<I, O9, E | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9>;
68
- /** ### `merge_response` : 工厂函数 of `Reqwest-use`
69
- + 快捷生成`ReqwestInterceptor`供`use`使用
70
- */
116
+ /** ### `merge_response` : 合并生成`ReqwestInterceptor`
117
+ @Category Factory
118
+ */
71
119
  export declare function merge_reqwest<O, E, OO, EE>(request: RequestInterceptor<E>, response: ResponseInterceptor<O, OO, EE>): ReqwestInterceptor<O, E, OO, EE>;
72
120
  //# sourceMappingURL=factor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factor.d.ts","sourceRoot":"","sources":["../../../src/lib/core/factor.ts"],"names":[],"mappings":"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"}
@@ -13,25 +13,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.merge_request = merge_request;
14
14
  exports.merge_response = merge_response;
15
15
  exports.merge_reqwest = merge_reqwest;
16
- const fp_1 = require("@chzky/fp");
16
+ const core_1 = require("@chzky/core");
17
17
  const core_js_1 = require("./core.js");
18
- /** ### `merge_request` : 工厂函数 of `Reqwest-request`
19
- + 将多个request拦截器合并成一个拦截器
18
+ /** ### `merge_request` : `request`拦截器合并
19
+ @example Usage
20
+ ```ts
21
+ const reqs = merge_request(
22
+ get('/1/', { id: 1 }),
23
+ input_validate(zod.object({ id: zod.number() })), // 输出判断类型
24
+ response_type('arraybuffer') // 改变接受的响应类型
25
+ )
26
+
27
+ const res = await mock_reqwest.clone().request(reqs).dispatch()
28
+
29
+ const RR = res.unwrap().data as Uint8Array
30
+ const json_text = new TextDecoder('utf-8').decode(RR)
31
+ assert.equal(JSON.parse(json_text).id, 1)
32
+
33
+ mock_reqwest.conf({ timeout: 6000 })
34
+ ```
35
+ @Category Factory
20
36
  */
21
37
  function merge_request(...interceptors) {
22
38
  return (conf) => __awaiter(this, void 0, void 0, function* () {
23
39
  yield (0, core_js_1.request_interceptor_run)(conf, interceptors);
24
- return (0, fp_1.Ok)();
40
+ return (0, core_1.Ok)();
25
41
  });
26
42
  }
27
43
  function merge_response(...interceptor) {
28
44
  return (res) => __awaiter(this, void 0, void 0, function* () {
29
- return yield (0, core_js_1.response_interceptor_run)(res, interceptor);
45
+ return yield (0, core_js_1.response_interceptor_run)(res, interceptor, true);
30
46
  });
31
47
  }
32
- /** ### `merge_response` : 工厂函数 of `Reqwest-use`
33
- + 快捷生成`ReqwestInterceptor`供`use`使用
34
- */
48
+ /** ### `merge_response` : 合并生成`ReqwestInterceptor`
49
+ @Category Factory
50
+ */
35
51
  function merge_reqwest(request, response) {
36
52
  return { request, response };
37
53
  }