@longzai-intelligence-transport/http-adapter-taro 0.1.3 → 0.1.5
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/dist/index.d.ts +18 -9
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ApiError, ApiResponse, ApiResponse as ApiResponse$1, AuthStrategy, CreateApiFunction, CsrfProvider, CsrfProvider as CsrfProvider$1, HttpAdapter, HttpAdapter as HttpAdapter$1, HttpClient, HttpClient as HttpClient$1, HttpClientConfig, HttpClientConfig as HttpClientConfig$1, InferRouteParams, InferRouteQuery, RequestConfig, RequestConfig as RequestConfig$1, RequestInterceptor, RequestInterceptorContext, ResponseInterceptor, ResponseInterceptorContext, RouteDefinition, StreamResponseRoute, TaroAdapterConfig, TaroAdapterConfig as TaroAdapterConfig$1, TokenProvider, TokenProvider as TokenProvider$1, createAuthStrategyInterceptor, createAuthTokenInterceptor, createCsrfInterceptor, createLoggingRequestInterceptor, createLoggingResponseInterceptor, createResponseTransformerInterceptor, createRetryInterceptor, createValidationInterceptor } from "@longzai-intelligence-transport/http-core";
|
|
2
1
|
import Taro from "@tarojs/taro";
|
|
2
|
+
import { ApiError, ApiResponse, ApiResponse as ApiResponse$1, AuthStrategy, CreateApiFunction, CsrfProvider, CsrfProvider as CsrfProvider$1, HttpAdapter, HttpAdapter as HttpAdapter$1, HttpClient, HttpClient as HttpClient$1, HttpClientConfig, HttpClientConfig as HttpClientConfig$1, InferRouteParams, InferRouteQuery, RequestConfig, RequestConfig as RequestConfig$1, RequestInterceptor, RequestInterceptorContext, ResponseInterceptor, ResponseInterceptorContext, RouteDefinition, StreamResponseRoute, TaroAdapterConfig, TaroAdapterConfig as TaroAdapterConfig$1, TokenProvider, TokenProvider as TokenProvider$1, createAuthStrategyInterceptor, createAuthTokenInterceptor, createCsrfInterceptor, createLoggingRequestInterceptor, createLoggingResponseInterceptor, createResponseTransformerInterceptor, createRetryInterceptor, createValidationInterceptor } from "@longzai-intelligence-transport/http-core";
|
|
3
3
|
|
|
4
4
|
//#region src/taro.adapter.d.ts
|
|
5
5
|
/**
|
|
@@ -10,11 +10,15 @@ import Taro from "@tarojs/taro";
|
|
|
10
10
|
* import Taro from '@tarojs/taro';
|
|
11
11
|
* import { createTaroAdapter } from '@longzai-intelligence-transport/http-adapter-taro';
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* // 生产侧单参数调用,使用顶层 import 的默认 Taro 实例
|
|
14
|
+
* const adapter = createTaroAdapter({ timeout: 30000 });
|
|
15
|
+
*
|
|
16
|
+
* // 测试侧第二参数注入 mock Taro 实例
|
|
17
|
+
* const adapterForTest = createTaroAdapter({ timeout: 30000 }, mockTaro);
|
|
14
18
|
* ```;
|
|
15
19
|
*
|
|
16
20
|
* @param config - 适配器配置
|
|
17
|
-
* @param taro - Taro
|
|
21
|
+
* @param taro - 可选 Taro 实例,默认使用顶层 import 的 Taro;用于依赖注入
|
|
18
22
|
* @returns HTTP 适配器实例
|
|
19
23
|
*/
|
|
20
24
|
declare function createTaroAdapter(config?: TaroAdapterConfig$1, taro?: typeof Taro): HttpAdapter$1;
|
|
@@ -42,9 +46,11 @@ type TaroTokenStorageConfig = {
|
|
|
42
46
|
* ```typescript
|
|
43
47
|
* import { createTaroTokenProvider } from '@longzai-intelligence-transport/http-adapter-taro';
|
|
44
48
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
49
|
+
* // 生产侧单参数调用,使用顶层 import 的默认 Taro 实例
|
|
50
|
+
* const tokenProvider = createTaroTokenProvider({ tokenKey: 'auth_token' });
|
|
51
|
+
*
|
|
52
|
+
* // 测试侧第二参数注入 mock Taro 实例
|
|
53
|
+
* const tokenProviderForTest = createTaroTokenProvider({ tokenKey: 'auth_token' }, mockTaro);
|
|
48
54
|
*
|
|
49
55
|
* // 在 createHttpClient 中使用
|
|
50
56
|
* const client = createHttpClient({
|
|
@@ -54,18 +60,20 @@ type TaroTokenStorageConfig = {
|
|
|
54
60
|
* ```;
|
|
55
61
|
*
|
|
56
62
|
* @param config - 配置选项
|
|
63
|
+
* @param taro - 可选 Taro 实例,默认使用顶层 import 的 Taro;用于依赖注入
|
|
57
64
|
* @returns Token 提供者实例
|
|
58
65
|
*/
|
|
59
|
-
declare function createTaroTokenProvider(config?: TaroTokenStorageConfig): TokenProvider$1;
|
|
66
|
+
declare function createTaroTokenProvider(config?: TaroTokenStorageConfig, taro?: typeof Taro): TokenProvider$1;
|
|
60
67
|
/**
|
|
61
68
|
* 创建 Taro Token 设置器
|
|
62
69
|
*
|
|
63
70
|
* 提供设置和删除 Token 的方法
|
|
64
71
|
*
|
|
65
72
|
* @param config - 配置选项
|
|
73
|
+
* @param taro - 可选 Taro 实例,默认使用顶层 import 的 Taro;用于依赖注入
|
|
66
74
|
* @returns Token 设置器实例
|
|
67
75
|
*/
|
|
68
|
-
declare function createTaroTokenSetter(config?: TaroTokenStorageConfig): {
|
|
76
|
+
declare function createTaroTokenSetter(config?: TaroTokenStorageConfig, taro?: typeof Taro): {
|
|
69
77
|
setToken: (token: string | null) => Promise<void>;
|
|
70
78
|
removeToken: () => Promise<void>;
|
|
71
79
|
};
|
|
@@ -159,9 +167,10 @@ type QueryParams = Record<string, string | number | boolean | undefined>;
|
|
|
159
167
|
* ```;
|
|
160
168
|
*
|
|
161
169
|
* @param config - 客户端配置
|
|
170
|
+
* @param taro - 可选 Taro 实例,默认使用底层 createTaroAdapter 的顶层 import 实例;用于依赖注入
|
|
162
171
|
* @returns HTTP 客户端实例
|
|
163
172
|
*/
|
|
164
|
-
declare function createTaroHttpClient(config: HttpClientConfig$1): TaroHttpClient;
|
|
173
|
+
declare function createTaroHttpClient(config: HttpClientConfig$1, taro?: typeof Taro): TaroHttpClient;
|
|
165
174
|
//#endregion
|
|
166
175
|
//#region src/stream-api-client.d.ts
|
|
167
176
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{buildPath as
|
|
1
|
+
import e from"@tarojs/taro";import{buildPath as t,createApiClientFactory as n,createAuthStrategyInterceptor as r,createAuthTokenInterceptor as i,createCsrfInterceptor as a,createInterceptorExecutor as o,createLoggingRequestInterceptor as s,createLoggingResponseInterceptor as c,createRequestInterceptorsFromConfig as l,createResponseInterceptorsFromConfig as u,createResponseTransformerInterceptor as d,createRetryInterceptor as f,createValidationInterceptor as p,isLegacyConfig as m,isStreamRoute as h,isType as g,warnDeprecatedConfig as _}from"@longzai-intelligence-transport/http-core";function v(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function y(e){return e!=null}const b={GET:`GET`,POST:`POST`,PUT:`PUT`,PATCH:`PATCH`,DELETE:`DELETE`,HEAD:`HEAD`,OPTIONS:`OPTIONS`};function x(e){return e in b}function S(e){if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||v(e)?e:JSON.stringify(e)}function C(t,n=e){let r=t?.timeout??3e4,i=n;return{async execute(e){let t=e.method.toUpperCase(),n=x(t)?b[t]:`GET`,a={url:e.url,method:n,header:e.headers,timeout:r,data:S(e.body)};if(e.params){let t=Object.entries(e.params).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(t))}`).join(`&`);a.url=`${a.url}?${t}`}let o=await i.request(a),s={};if(o.header)for(let[e,t]of Object.entries(o.header))s[e.toLowerCase()]=String(t);return{status:o.statusCode,headers:s,data:o.data}}}}function w(t,n=e){let r=t?.tokenKey??`access_token`,i=t?.storageType??`storage`;return{getToken:async()=>{try{return i===`asyncStorage`?(await n.getStorage({key:r})).data??null:n.getStorageSync(r)??null}catch{return null}}}}function T(t,n=e){let r=t?.tokenKey??`access_token`,i=t?.storageType??`storage`,a=async e=>{if(e===null){i===`asyncStorage`?await n.removeStorage({key:r}):n.removeStorageSync(r);return}i===`asyncStorage`?await n.setStorage({key:r,data:e}):n.setStorageSync(r,e)};return{setToken:a,removeToken:async()=>{await a(null)}}}function E(e,t){if(!t)return e;let n=new URLSearchParams;Object.entries(t).forEach(([e,t])=>{t!==void 0&&n.append(e,String(t))});let r=n.toString();return r?`${e}?${r}`:e}function D(e,t,n,r,i){return{url:`${e}${t}`,method:n,headers:i?.headers??{},body:r,config:i,metadata:{}}}function O(e,t,n){let r=e.path;if(t&&Object.entries(t).forEach(([e,t])=>{r=r.replace(`:${e}`,String(t))}),n){let e=new URLSearchParams;Object.entries(n).forEach(([t,n])=>{n!==void 0&&e.append(t,String(n))});let t=e.toString();t&&(r=`${r}?${t}`)}return r}async function k(e,t,n,r,i,a,o){let s=D(t,i,r,a,{...o,headers:{...n,...o?.headers}});return e.execute(s)}function A(e){if(y(e))return e;throw Error(`响应类型不匹配`)}function j(e,t,n){return async(r,i,a)=>A(await k(e,t,n,`GET`,E(r,i),void 0,a))}function M(e,t,n,r){return async(i,a,o)=>A(await k(e,t,n,r,i,a,o))}function N(e,t,n){return async(r,i)=>A(await k(e,t,n,`DELETE`,r,void 0,i))}function P(e,t,n){return{get:j(e,t,n),post:M(e,t,n,`POST`),put:M(e,t,n,`PUT`),patch:M(e,t,n,`PATCH`),delete:N(e,t,n)}}function F(e,t){let{baseUrl:n,timeout:r=3e4,headers:i,onUnauthorized:a}=e;m(e)&&_(e);let s=l(e),c=u(e),d=C({timeout:r},t),f=o({requestInterceptors:s,responseInterceptors:c,onUnauthorized:a},d);return{request:async e=>{let{route:t,params:r,query:a,body:o,config:s}=e,c=O(t,r,a);return A(await k(f,n,i,t.method,c,o,s))},...P(f,n,i)}}function I(e,n){let r=async(r,i)=>{let a=n.baseUrl+t(e.path,r,i),o={...n.headers};if(n.tokenProvider){let e=await n.tokenProvider.getToken();e!==null&&(o.Authorization=`Bearer ${e}`)}if(n.csrfProvider){let e=await n.csrfProvider.getToken();e!==null&&(o[`X-CSRF-Token`]=e)}let s=await n.downloadFile({url:a,header:o});if(s.statusCode>=400)throw Error(`流式下载失败:${s.statusCode} ${s.errMsg??``}`);return s.tempFilePath};if(g(r))return r;throw Error(`流式下载函数构建失败`)}function L(e,t){let r=n(e);return e=>{let n={...r(e)};for(let[r,i]of Object.entries(e))i&&h(i)&&(n[r]=I(i,t));if(g(n))return n;throw Error(`API 客户端构建失败`)}}export{r as createAuthStrategyInterceptor,i as createAuthTokenInterceptor,a as createCsrfInterceptor,s as createLoggingRequestInterceptor,c as createLoggingResponseInterceptor,d as createResponseTransformerInterceptor,f as createRetryInterceptor,I as createStreamDownloadFunction,C as createTaroAdapter,L as createTaroApiClientFactory,F as createTaroHttpClient,w as createTaroTokenProvider,T as createTaroTokenSetter,p as createValidationInterceptor};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longzai-intelligence-transport/http-adapter-taro",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"adapter",
|
|
6
6
|
"http",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"clean": "rimraf dist out .cache"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@longzai-intelligence-transport/http-core": "0.1.
|
|
40
|
+
"@longzai-intelligence-transport/http-core": "0.1.5"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@tarojs/taro": "^4.2.0",
|