@hkyhy/marsun-components-core 0.1.59 → 0.1.60

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.
@@ -33,5 +33,7 @@ export interface MarsunRequestClient {
33
33
  delete<T = unknown>(url: string, config?: unknown): Promise<T>;
34
34
  request<T = unknown>(config: unknown): Promise<T>;
35
35
  }
36
+ /** Marsun 信封:数字 code,且成功码 / 含 data|message / 仅信封键。避免 { code:200, results } 被当信封误判。 */
37
+ export declare function isMarsunEnvelope(data: unknown, successCode?: number): data is MarsunApiResponse;
36
38
  /** 创建带鉴权、统一错误处理的 axios 实例 */
37
39
  export declare function createMarsunRequest(options?: CreateMarsunRequestOptions): MarsunRequestClient;
@@ -1,61 +1,81 @@
1
- import { message as y } from "antd";
1
+ import { message as j } from "antd";
2
2
  import "../node_modules/axios/index.js";
3
3
  import h from "../node_modules/axios/lib/axios.js";
4
- const v = "X-Skip-Error-Handler";
5
- function m(o) {
6
- return !!(o != null && o[v]);
4
+ const k = "X-Skip-Error-Handler", w = /* @__PURE__ */ new Set(["code", "message", "data"]);
5
+ function g(r) {
6
+ return !!(r != null && r[k]);
7
7
  }
8
- function q(o = {}) {
8
+ function C(r, o = 0) {
9
+ if (!r || typeof r != "object" || Array.isArray(r)) return !1;
10
+ const n = r;
11
+ if (typeof n.code != "number") return !1;
12
+ if (n.code === o || "data" in n || "message" in n) return !0;
13
+ const c = Object.keys(n);
14
+ return c.length > 0 && c.every((f) => w.has(f));
15
+ }
16
+ function S(r) {
17
+ return typeof FormData < "u" && r instanceof FormData;
18
+ }
19
+ function T(r) {
20
+ if (!r) return;
21
+ const o = r;
22
+ if (typeof o.delete == "function") {
23
+ o.delete("Content-Type"), o.delete("content-type");
24
+ return;
25
+ }
26
+ const n = r;
27
+ delete n["Content-Type"], delete n["content-type"];
28
+ }
29
+ function H(r = {}) {
9
30
  const {
10
- baseURL: E = "/api",
11
- timeout: g = 3e4,
12
- successCode: R = 0,
13
- withCredentials: b = !1,
14
- getToken: i,
15
- onUnauthorized: c,
16
- isPublicUrl: d = () => !1,
31
+ baseURL: o = "/api",
32
+ timeout: n = 3e4,
33
+ successCode: c = 0,
34
+ withCredentials: f = !1,
35
+ getToken: a,
36
+ onUnauthorized: l,
37
+ isPublicUrl: b = () => !1,
17
38
  isOnLoginPage: P = () => !1,
18
- showError: f = (e) => y.error(e),
19
- getResponseError: l,
20
- passThroughEnvelopeError: j = !1
21
- } = o, p = (e) => {
22
- if (l) return l(e);
23
- const r = e == null ? void 0 : e.data;
24
- return (r == null ? void 0 : r.message) || (r == null ? void 0 : r.detail) || (r == null ? void 0 : r.msg) || "请求失败";
25
- }, a = h.create({
26
- baseURL: E,
27
- timeout: g,
28
- withCredentials: b,
29
- headers: {
30
- "Content-Type": "application/json"
31
- }
39
+ showError: m = (e) => j.error(e),
40
+ getResponseError: y,
41
+ passThroughEnvelopeError: R = !1
42
+ } = r, E = (e) => {
43
+ if (y) return y(e);
44
+ const t = e == null ? void 0 : e.data;
45
+ return (t == null ? void 0 : t.message) || (t == null ? void 0 : t.detail) || (t == null ? void 0 : t.msg) || "请求失败";
46
+ }, p = h.create({
47
+ baseURL: o,
48
+ timeout: n,
49
+ withCredentials: f
50
+ // 不写死 Content-Type:普通对象由 axios 自动加 JSON;FormData 需带 boundary
32
51
  });
33
- return a.interceptors.request.use(
52
+ return p.interceptors.request.use(
34
53
  (e) => {
35
- const r = i == null ? void 0 : i();
36
- return r && (e.headers.Authorization = `Bearer ${r}`), e;
54
+ const t = a == null ? void 0 : a();
55
+ return t && (e.headers.Authorization = `Bearer ${t}`), S(e.data) && T(e.headers), e;
37
56
  },
38
57
  (e) => Promise.reject(e)
39
- ), a.interceptors.response.use(
58
+ ), p.interceptors.response.use(
40
59
  (e) => {
41
- var n;
42
- const r = (n = e.config) == null ? void 0 : n.responseType;
43
- if (r === "blob" || r === "arraybuffer")
60
+ var u;
61
+ const t = (u = e.config) == null ? void 0 : u.responseType;
62
+ if (t === "blob" || t === "arraybuffer")
44
63
  return e.data;
45
- const t = e.data;
46
- if (!(t && typeof t == "object" && "code" in t))
47
- return t;
48
- const s = t;
49
- return s.code !== R ? j ? t : (m(e.config.headers) || f(s.message || "请求失败"), Promise.reject(new Error(s.message || "请求失败"))) : t;
64
+ const s = e.data;
65
+ if (!C(s, c))
66
+ return s;
67
+ const i = s;
68
+ return i.code !== c ? R ? s : (g(e.config.headers) || m(i.message || "请求失败"), Promise.reject(new Error(i.message || "请求失败"))) : s;
50
69
  },
51
70
  (e) => {
52
- var u, s, n;
53
- const r = ((u = e.config) == null ? void 0 : u.url) ?? "", t = m((s = e.config) == null ? void 0 : s.headers);
54
- return ((n = e.response) == null ? void 0 : n.status) === 401 ? !d(r) && !P() && (c == null || c()) : t || f(p(e.response)), Promise.reject(new Error(p(e.response)));
71
+ var i, u, d;
72
+ const t = ((i = e.config) == null ? void 0 : i.url) ?? "", s = g((u = e.config) == null ? void 0 : u.headers);
73
+ return ((d = e.response) == null ? void 0 : d.status) === 401 ? !b(t) && !P() && (l == null || l()) : s || m(E(e.response)), Promise.reject(new Error(E(e.response)));
55
74
  }
56
- ), a;
75
+ ), p;
57
76
  }
58
77
  export {
59
- q as createMarsunRequest
78
+ H as createMarsunRequest,
79
+ C as isMarsunEnvelope
60
80
  };
61
81
  //# sourceMappingURL=createMarsunRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createMarsunRequest.js","sources":["../../src/utils/createMarsunRequest.ts"],"sourcesContent":["import { message } from 'antd';\nimport axios from 'axios';\n\nexport interface MarsunApiResponse<T = unknown> {\n code: number;\n message?: string;\n data?: T;\n}\n\nexport interface MarsunRequestErrorResponse {\n data?: unknown;\n status?: number;\n config?: unknown;\n}\n\nexport interface CreateMarsunRequestOptions {\n baseURL?: string;\n timeout?: number;\n successCode?: number;\n /** Cookie 会话 SSO:跨域携带凭证 */\n withCredentials?: boolean;\n getToken?: () => string | null;\n onUnauthorized?: () => void;\n isPublicUrl?: (url: string) => boolean;\n isOnLoginPage?: () => boolean;\n showError?: (msg: string) => void;\n /** 自定义错误信息提取;默认按 message/detail/msg 顺序兜底 */\n getResponseError?: (response: MarsunRequestErrorResponse | undefined) => string;\n /** 信封 code != successCode 时不 reject、不 showError,原样返回信封由调用方自判(用于复用既有 unwrap 逻辑的接入方) */\n passThroughEnvelopeError?: boolean;\n}\n\n/** 与 axios 实例兼容的请求客户端(避免对外暴露 axios 类型,消除多副本 axios 的类型冲突) */\nexport interface MarsunRequestClient {\n get<T = unknown>(url: string, config?: unknown): Promise<T>;\n post<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n put<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n patch<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n delete<T = unknown>(url: string, config?: unknown): Promise<T>;\n request<T = unknown>(config: unknown): Promise<T>;\n}\n\nconst SKIP_ERROR_HEADER = 'X-Skip-Error-Handler';\n\nfunction getSkipHandler(headers: unknown): boolean {\n return Boolean((headers as Record<string, string> | undefined)?.[SKIP_ERROR_HEADER]);\n}\n\n/** 创建带鉴权、统一错误处理的 axios 实例 */\nexport function createMarsunRequest(options: CreateMarsunRequestOptions = {}): MarsunRequestClient {\n const {\n baseURL = '/api',\n timeout = 30000,\n successCode = 0,\n withCredentials = false,\n getToken,\n onUnauthorized,\n isPublicUrl = () => false,\n isOnLoginPage = () => false,\n showError = (msg) => message.error(msg),\n getResponseError,\n passThroughEnvelopeError = false,\n } = options;\n\n const extractError = (response: MarsunRequestErrorResponse | undefined): string => {\n if (getResponseError) return getResponseError(response);\n const data = response?.data as { message?: string; detail?: string; msg?: string } | undefined;\n return data?.message || data?.detail || data?.msg || '请求失败';\n };\n\n const request = axios.create({\n baseURL,\n timeout,\n withCredentials,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n request.interceptors.request.use(\n (config) => {\n const token = getToken?.();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error),\n );\n\n request.interceptors.response.use(\n (response) => {\n const responseType = (response.config as { responseType?: string } | undefined)?.responseType;\n if (responseType === 'blob' || responseType === 'arraybuffer') {\n return response.data;\n }\n const data = response.data;\n const isEnvelope = data && typeof data === 'object' && 'code' in data;\n if (!isEnvelope) {\n return data;\n }\n const envelope = data as MarsunApiResponse;\n if (envelope.code !== successCode) {\n if (passThroughEnvelopeError) {\n return data;\n }\n if (!getSkipHandler(response.config.headers)) {\n showError(envelope.message || '请求失败');\n }\n return Promise.reject(new Error(envelope.message || '请求失败'));\n }\n return data;\n },\n (error) => {\n const url = error.config?.url ?? '';\n const skipHandler = getSkipHandler(error.config?.headers);\n\n if (error.response?.status === 401) {\n if (!isPublicUrl(url) && !isOnLoginPage()) {\n onUnauthorized?.();\n }\n } else if (!skipHandler) {\n showError(extractError(error.response));\n }\n return Promise.reject(new Error(extractError(error.response)));\n },\n );\n\n return request as MarsunRequestClient;\n}\n"],"names":["SKIP_ERROR_HEADER","getSkipHandler","headers","createMarsunRequest","options","baseURL","timeout","successCode","withCredentials","getToken","onUnauthorized","isPublicUrl","isOnLoginPage","showError","msg","message","getResponseError","passThroughEnvelopeError","extractError","response","data","request","axios","config","token","error","responseType","_a","envelope","url","skipHandler","_b","_c"],"mappings":";;;AA0CA,MAAMA,IAAoB;AAE1B,SAASC,EAAeC,GAA2B;AACjD,SAAO,GAASA,KAAA,QAAAA,EAAiDF;AACnE;AAGO,SAASG,EAAoBC,IAAsC,IAAyB;AACjG,QAAM;AAAA,IACJ,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,aAAAC,IAAc;AAAA,IACd,iBAAAC,IAAkB;AAAA,IAClB,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC,IAAc,MAAM;AAAA,IACpB,eAAAC,IAAgB,MAAM;AAAA,IACtB,WAAAC,IAAY,CAACC,MAAQC,EAAQ,MAAMD,CAAG;AAAA,IACtC,kBAAAE;AAAA,IACA,0BAAAC,IAA2B;AAAA,EAAA,IACzBb,GAEEc,IAAe,CAACC,MAA6D;AACjF,QAAIH,EAAkB,QAAOA,EAAiBG,CAAQ;AACtD,UAAMC,IAAOD,KAAA,gBAAAA,EAAU;AACvB,YAAOC,KAAA,gBAAAA,EAAM,aAAWA,KAAA,gBAAAA,EAAM,YAAUA,KAAA,gBAAAA,EAAM,QAAO;AAAA,EACvD,GAEMC,IAAUC,EAAM,OAAO;AAAA,IAC3B,SAAAjB;AAAA,IACA,SAAAC;AAAA,IACA,iBAAAE;AAAA,IACA,SAAS;AAAA,MACP,gBAAgB;AAAA,IAAA;AAAA,EAClB,CACD;AAED,SAAAa,EAAQ,aAAa,QAAQ;AAAA,IAC3B,CAACE,MAAW;AACV,YAAMC,IAAQf,KAAA,gBAAAA;AACd,aAAIe,MACFD,EAAO,QAAQ,gBAAgB,UAAUC,CAAK,KAEzCD;AAAA,IACT;AAAA,IACA,CAACE,MAAU,QAAQ,OAAOA,CAAK;AAAA,EAAA,GAGjCJ,EAAQ,aAAa,SAAS;AAAA,IAC5B,CAACF,MAAa;;AACZ,YAAMO,KAAgBC,IAAAR,EAAS,WAAT,gBAAAQ,EAA2D;AACjF,UAAID,MAAiB,UAAUA,MAAiB;AAC9C,eAAOP,EAAS;AAElB,YAAMC,IAAOD,EAAS;AAEtB,UAAI,EADeC,KAAQ,OAAOA,KAAS,YAAY,UAAUA;AAE/D,eAAOA;AAET,YAAMQ,IAAWR;AACjB,aAAIQ,EAAS,SAASrB,IAChBU,IACKG,KAEJnB,EAAekB,EAAS,OAAO,OAAO,KACzCN,EAAUe,EAAS,WAAW,MAAM,GAE/B,QAAQ,OAAO,IAAI,MAAMA,EAAS,WAAW,MAAM,CAAC,KAEtDR;AAAA,IACT;AAAA,IACA,CAACK,MAAU;;AACT,YAAMI,MAAMF,IAAAF,EAAM,WAAN,gBAAAE,EAAc,QAAO,IAC3BG,IAAc7B,GAAe8B,IAAAN,EAAM,WAAN,gBAAAM,EAAc,OAAO;AAExD,eAAIC,IAAAP,EAAM,aAAN,gBAAAO,EAAgB,YAAW,MACzB,CAACrB,EAAYkB,CAAG,KAAK,CAACjB,QACxBF,KAAA,QAAAA,OAEQoB,KACVjB,EAAUK,EAAaO,EAAM,QAAQ,CAAC,GAEjC,QAAQ,OAAO,IAAI,MAAMP,EAAaO,EAAM,QAAQ,CAAC,CAAC;AAAA,IAC/D;AAAA,EAAA,GAGKJ;AACT;"}
1
+ {"version":3,"file":"createMarsunRequest.js","sources":["../../src/utils/createMarsunRequest.ts"],"sourcesContent":["import { message } from 'antd';\nimport axios from 'axios';\n\nexport interface MarsunApiResponse<T = unknown> {\n code: number;\n message?: string;\n data?: T;\n}\n\nexport interface MarsunRequestErrorResponse {\n data?: unknown;\n status?: number;\n config?: unknown;\n}\n\nexport interface CreateMarsunRequestOptions {\n baseURL?: string;\n timeout?: number;\n successCode?: number;\n /** Cookie 会话 SSO:跨域携带凭证 */\n withCredentials?: boolean;\n getToken?: () => string | null;\n onUnauthorized?: () => void;\n isPublicUrl?: (url: string) => boolean;\n isOnLoginPage?: () => boolean;\n showError?: (msg: string) => void;\n /** 自定义错误信息提取;默认按 message/detail/msg 顺序兜底 */\n getResponseError?: (response: MarsunRequestErrorResponse | undefined) => string;\n /** 信封 code != successCode 时不 reject、不 showError,原样返回信封由调用方自判(用于复用既有 unwrap 逻辑的接入方) */\n passThroughEnvelopeError?: boolean;\n}\n\n/** 与 axios 实例兼容的请求客户端(避免对外暴露 axios 类型,消除多副本 axios 的类型冲突) */\nexport interface MarsunRequestClient {\n get<T = unknown>(url: string, config?: unknown): Promise<T>;\n post<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n put<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n patch<T = unknown>(url: string, data?: unknown, config?: unknown): Promise<T>;\n delete<T = unknown>(url: string, config?: unknown): Promise<T>;\n request<T = unknown>(config: unknown): Promise<T>;\n}\n\nconst SKIP_ERROR_HEADER = 'X-Skip-Error-Handler';\nconst ENVELOPE_KEYS = new Set(['code', 'message', 'data']);\n\nfunction getSkipHandler(headers: unknown): boolean {\n return Boolean((headers as Record<string, string> | undefined)?.[SKIP_ERROR_HEADER]);\n}\n\n/** Marsun 信封:数字 code,且成功码 / 含 data|message / 仅信封键。避免 { code:200, results } 被当信封误判。 */\nexport function isMarsunEnvelope(data: unknown, successCode = 0): data is MarsunApiResponse {\n if (!data || typeof data !== 'object' || Array.isArray(data)) return false;\n const obj = data as Record<string, unknown>;\n if (typeof obj.code !== 'number') return false;\n if (obj.code === successCode) return true;\n if ('data' in obj || 'message' in obj) return true;\n const keys = Object.keys(obj);\n return keys.length > 0 && keys.every((k) => ENVELOPE_KEYS.has(k));\n}\n\nfunction isFormDataBody(data: unknown): boolean {\n return typeof FormData !== 'undefined' && data instanceof FormData;\n}\n\nfunction stripContentType(headers: unknown): void {\n if (!headers) return;\n const h = headers as { delete?: (key: string) => void };\n if (typeof h.delete === 'function') {\n h.delete('Content-Type');\n h.delete('content-type');\n return;\n }\n const rec = headers as Record<string, unknown>;\n delete rec['Content-Type'];\n delete rec['content-type'];\n}\n\n/** 创建带鉴权、统一错误处理的 axios 实例 */\nexport function createMarsunRequest(options: CreateMarsunRequestOptions = {}): MarsunRequestClient {\n const {\n baseURL = '/api',\n timeout = 30000,\n successCode = 0,\n withCredentials = false,\n getToken,\n onUnauthorized,\n isPublicUrl = () => false,\n isOnLoginPage = () => false,\n showError = (msg) => message.error(msg),\n getResponseError,\n passThroughEnvelopeError = false,\n } = options;\n\n const extractError = (response: MarsunRequestErrorResponse | undefined): string => {\n if (getResponseError) return getResponseError(response);\n const data = response?.data as { message?: string; detail?: string; msg?: string } | undefined;\n return data?.message || data?.detail || data?.msg || '请求失败';\n };\n\n const request = axios.create({\n baseURL,\n timeout,\n withCredentials,\n // 不写死 Content-Type:普通对象由 axios 自动加 JSON;FormData 需带 boundary\n });\n\n request.interceptors.request.use(\n (config) => {\n const token = getToken?.();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n if (isFormDataBody(config.data)) {\n stripContentType(config.headers);\n }\n return config;\n },\n (error) => Promise.reject(error),\n );\n\n request.interceptors.response.use(\n (response) => {\n const responseType = (response.config as { responseType?: string } | undefined)?.responseType;\n if (responseType === 'blob' || responseType === 'arraybuffer') {\n return response.data;\n }\n const data = response.data;\n if (!isMarsunEnvelope(data, successCode)) {\n return data;\n }\n const envelope = data as MarsunApiResponse;\n if (envelope.code !== successCode) {\n if (passThroughEnvelopeError) {\n return data;\n }\n if (!getSkipHandler(response.config.headers)) {\n showError(envelope.message || '请求失败');\n }\n return Promise.reject(new Error(envelope.message || '请求失败'));\n }\n return data;\n },\n (error) => {\n const url = error.config?.url ?? '';\n const skipHandler = getSkipHandler(error.config?.headers);\n\n if (error.response?.status === 401) {\n if (!isPublicUrl(url) && !isOnLoginPage()) {\n onUnauthorized?.();\n }\n } else if (!skipHandler) {\n showError(extractError(error.response));\n }\n return Promise.reject(new Error(extractError(error.response)));\n },\n );\n\n return request as MarsunRequestClient;\n}\n"],"names":["SKIP_ERROR_HEADER","ENVELOPE_KEYS","getSkipHandler","headers","isMarsunEnvelope","data","successCode","obj","keys","k","isFormDataBody","stripContentType","h","rec","createMarsunRequest","options","baseURL","timeout","withCredentials","getToken","onUnauthorized","isPublicUrl","isOnLoginPage","showError","msg","message","getResponseError","passThroughEnvelopeError","extractError","response","request","axios","config","token","error","responseType","_a","envelope","url","skipHandler","_b","_c"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hkyhy/marsun-components-core",
3
- "version": "0.1.59",
3
+ "version": "0.1.60",
4
4
  "description": "Marsun pure UI component library",
5
5
  "type": "module",
6
6
  "repository": {