@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 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
- * const adapter = createTaroAdapter({ timeout: 30000 }, Taro);
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
- * const tokenProvider = createTaroTokenProvider({
46
- * tokenKey: 'auth_token',
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 e,createApiClientFactory as t,createAuthStrategyInterceptor as n,createAuthTokenInterceptor as r,createCsrfInterceptor as i,createInterceptorExecutor as a,createLoggingRequestInterceptor as o,createLoggingResponseInterceptor as s,createRequestInterceptorsFromConfig as c,createResponseInterceptorsFromConfig as l,createResponseTransformerInterceptor as u,createRetryInterceptor as d,createValidationInterceptor as f,isLegacyConfig as p,isStreamRoute as m,isType as h,warnDeprecatedConfig as g}from"@longzai-intelligence-transport/http-core";function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function v(e){return e!=null}const y={GET:`GET`,POST:`POST`,PUT:`PUT`,PATCH:`PATCH`,DELETE:`DELETE`,HEAD:`HEAD`,OPTIONS:`OPTIONS`};function b(e){return e in y}function x(e){if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||_(e)?e:JSON.stringify(e)}function S(e){if(e)return e;let t=globalThis;if(_(t)&&`Taro`in t){let e=t.Taro;if(v(e))return e}throw Error(`Taro 实例未找到,请确保已安装 @tarojs/taro 或通过参数传入 Taro 实例`)}function C(e,t){let n=e?.timeout??3e4,r=S(t);return{async execute(e){let t=e.method.toUpperCase(),i=b(t)?y[t]:`GET`,a={url:e.url,method:i,header:e.headers,timeout:n,data:x(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 r.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(){let e=globalThis;if(_(e)&&`Taro`in e){let t=e.Taro;if(v(t))return t}throw Error(`Taro 未找到,请确保已安装 @tarojs/taro 或通过全局注入 Taro 实例`)}function T(e){let t=e?.tokenKey??`access_token`,n=e?.storageType??`storage`;return{getToken:async()=>{try{let e=w();return n===`asyncStorage`?(await e.getStorage({key:t})).data??null:e.getStorageSync(t)??null}catch{return null}}}}function E(e){let t=e?.tokenKey??`access_token`,n=e?.storageType??`storage`,r=async e=>{let r=w();if(e===null){n===`asyncStorage`?await r.removeStorage({key:t}):r.removeStorageSync(t);return}n===`asyncStorage`?await r.setStorage({key:t,data:e}):r.setStorageSync(t,e)};return{setToken:r,removeToken:async()=>{await r(null)}}}function D(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 O(e,t,n,r,i){return{url:`${e}${t}`,method:n,headers:i?.headers??{},body:r,config:i,metadata:{}}}function k(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 A(e,t,n,r,i,a,o){let s=O(t,i,r,a,{...o,headers:{...n,...o?.headers}});return e.execute(s)}function j(e){if(v(e))return e;throw Error(`响应类型不匹配`)}function M(e,t,n){return async(r,i,a)=>j(await A(e,t,n,`GET`,D(r,i),void 0,a))}function N(e,t,n,r){return async(i,a,o)=>j(await A(e,t,n,r,i,a,o))}function P(e,t,n){return async(r,i)=>j(await A(e,t,n,`DELETE`,r,void 0,i))}function F(e,t,n){return{get:M(e,t,n),post:N(e,t,n,`POST`),put:N(e,t,n,`PUT`),patch:N(e,t,n,`PATCH`),delete:P(e,t,n)}}function I(e){let{baseUrl:t,timeout:n=3e4,headers:r,onUnauthorized:i}=e;p(e)&&g(e);let o=c(e),s=l(e),u=C({timeout:n}),d=a({requestInterceptors:o,responseInterceptors:s,onUnauthorized:i},u);return{request:async e=>{let{route:n,params:i,query:a,body:o,config:s}=e,c=k(n,i,a);return j(await A(d,t,r,n.method,c,o,s))},...F(d,t,r)}}function L(t,n){let r=async(r,i)=>{let a=n.baseUrl+e(t.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(h(r))return r;throw Error(`流式下载函数构建失败`)}function R(e,n){let r=t(e);return e=>{let t={...r(e)};for(let[r,i]of Object.entries(e))i&&m(i)&&(t[r]=L(i,n));if(h(t))return t;throw Error(`API 客户端构建失败`)}}export{n as createAuthStrategyInterceptor,r as createAuthTokenInterceptor,i as createCsrfInterceptor,o as createLoggingRequestInterceptor,s as createLoggingResponseInterceptor,u as createResponseTransformerInterceptor,d as createRetryInterceptor,L as createStreamDownloadFunction,C as createTaroAdapter,R as createTaroApiClientFactory,I as createTaroHttpClient,T as createTaroTokenProvider,E as createTaroTokenSetter,f as createValidationInterceptor};
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",
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.3"
40
+ "@longzai-intelligence-transport/http-core": "0.1.5"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@tarojs/taro": "^4.2.0",