@kcuf/fetcher-interceptor-login 0.2.2 → 0.2.4

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
@@ -28,14 +28,9 @@ interceptLogin(fetcher, {
28
28
  ### needLogin
29
29
 
30
30
  ```ts
31
- function needLogin(code: string): boolean;
31
+ function needLogin(code: string, error: FetcherError): boolean;
32
32
  ```
33
33
 
34
- 以下条件满足,拦截器才调用 `needLogin`:
35
-
36
- - `error.name` 判定为业务错误
37
- - `error.code` 存在(且 `@kcuf/fetcher-interceptor-biz` 会保证它一定是 `string` 类型)
38
-
39
34
  ### doLogin
40
35
 
41
36
  ```ts
@@ -16,10 +16,11 @@ function createInterceptorResponseRejected(_ref) {
16
16
  var singletonLogin = (0, _singletonPromise.default)(doLogin);
17
17
  return /*#__PURE__*/function () {
18
18
  var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(error, fetcherConfig, _, requestByInterceptor) {
19
+ var _error$code;
19
20
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
20
21
  while (1) switch (_context.prev = _context.next) {
21
22
  case 0:
22
- if (!(error.name !== _fetcher.FetcherErrorName.BIZ || !error.code || !needLogin(error.code))) {
23
+ if (needLogin((_error$code = error.code) !== null && _error$code !== void 0 ? _error$code : '', error)) {
23
24
  _context.next = 2;
24
25
  break;
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["export interface ICreateInterceptorOptions {\n needLogin(code: string): boolean;\n doLogin(): Promise<void>;\n headerKeys?: string[];\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/types/index.ts"],"sourcesContent":["import {\n FetcherError\n} from '@kcuf/fetcher';\n\nexport interface ICreateInterceptorOptions {\n needLogin(code: string, err: FetcherError): boolean;\n doLogin(): Promise<void>;\n headerKeys?: string[];\n}\n"],"mappings":"","ignoreList":[]}
@@ -9,10 +9,11 @@ export default function createInterceptorResponseRejected(_ref) {
9
9
  var singletonLogin = singletonPromise(doLogin);
10
10
  return /*#__PURE__*/function () {
11
11
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(error, fetcherConfig, _, requestByInterceptor) {
12
+ var _error$code;
12
13
  return _regeneratorRuntime().wrap(function _callee$(_context) {
13
14
  while (1) switch (_context.prev = _context.next) {
14
15
  case 0:
15
- if (!(error.name !== FetcherErrorName.BIZ || !error.code || !needLogin(error.code))) {
16
+ if (needLogin((_error$code = error.code) !== null && _error$code !== void 0 ? _error$code : '', error)) {
16
17
  _context.next = 2;
17
18
  break;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-interceptor-response-rejected.js","names":["FetcherErrorName","deleteConfigHeaders","singletonPromise","createInterceptorResponseRejected","_ref","needLogin","doLogin","headerKeys","singletonLogin","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","error","fetcherConfig","_","requestByInterceptor","wrap","_callee$","_context","prev","next","name","BIZ","code","abrupt","then","LOGIN_CANCELLED","stop","_x","_x2","_x3","_x4","apply","arguments"],"sources":["../../../src/util/create-interceptor-response-rejected.ts"],"sourcesContent":["import {\n FetcherErrorName,\n FetcherConfig,\n FetcherError,\n FetcherResponse,\n FetcherCallRequest,\n FetcherInterceptResponseRejected,\n deleteConfigHeaders\n} from '@kcuf/fetcher';\n\nimport {\n ICreateInterceptorOptions\n} from '../types';\n\nimport singletonPromise from './singleton-promise';\n\nexport default function createInterceptorResponseRejected({\n needLogin,\n doLogin,\n headerKeys\n}: ICreateInterceptorOptions): FetcherInterceptResponseRejected {\n const singletonLogin = singletonPromise(doLogin);\n \n return async (error: FetcherError, fetcherConfig: FetcherConfig, _: FetcherResponse<unknown> | undefined, requestByInterceptor: FetcherCallRequest) => {\n if (error.name !== FetcherErrorName.BIZ || !error.code || !needLogin(error.code)) {\n throw error;\n }\n \n return singletonLogin().then(() => {\n if (headerKeys) {\n deleteConfigHeaders(fetcherConfig, headerKeys);\n }\n \n return requestByInterceptor(fetcherConfig); // 登录完成,重新发起原请求\n }, () => {\n // 一般登录弹窗在登录成功之前是不应该被关闭或取消的,但若真允许取消,这里需要修改错误为「取消登录」\n error.name = FetcherErrorName.LOGIN_CANCELLED;\n \n throw error; // 以新的 name 继续抛错\n });\n };\n}\n"],"mappings":";;AAAA,SACEA,gBAAgB,EAMhBC,mBAAmB,QACd,eAAe;AAMtB,OAAOC,gBAAgB,MAAM,qBAAqB;AAElD,eAAe,SAASC,iCAAiCA,CAAAC,IAAA,EAIO;EAAA,IAH9DC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,UAAU,GAAAH,IAAA,CAAVG,UAAU;EAEV,IAAMC,cAAc,GAAGN,gBAAgB,CAACI,OAAO,CAAC;EAEhD;IAAA,IAAAG,KAAA,GAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAO,SAAAC,QAAOC,KAAmB,EAAEC,aAA4B,EAAEC,CAAuC,EAAEC,oBAAwC;MAAA,OAAAN,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,MAC5IR,KAAK,CAACS,IAAI,KAAKvB,gBAAgB,CAACwB,GAAG,IAAI,CAACV,KAAK,CAACW,IAAI,IAAI,CAACpB,SAAS,CAACS,KAAK,CAACW,IAAI,CAAC;cAAAL,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,MACxER,KAAK;UAAA;YAAA,OAAAM,QAAA,CAAAM,MAAA,WAGNlB,cAAc,CAAC,CAAC,CAACmB,IAAI,CAAC,YAAM;cACjC,IAAIpB,UAAU,EAAE;gBACdN,mBAAmB,CAACc,aAAa,EAAER,UAAU,CAAC;cAChD;cAEA,OAAOU,oBAAoB,CAACF,aAAa,CAAC,CAAC,CAAC;YAC9C,CAAC,EAAE,YAAM;cACP;cACAD,KAAK,CAACS,IAAI,GAAGvB,gBAAgB,CAAC4B,eAAe;cAE7C,MAAMd,KAAK,CAAC,CAAC;YACf,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAM,QAAA,CAAAS,IAAA;QAAA;MAAA,GAAAhB,OAAA;IAAA,CACH;IAAA,iBAAAiB,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAxB,KAAA,CAAAyB,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH","ignoreList":[]}
1
+ {"version":3,"file":"create-interceptor-response-rejected.js","names":["FetcherErrorName","deleteConfigHeaders","singletonPromise","createInterceptorResponseRejected","_ref","needLogin","doLogin","headerKeys","singletonLogin","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","error","fetcherConfig","_","requestByInterceptor","_error$code","wrap","_callee$","_context","prev","next","code","abrupt","then","name","LOGIN_CANCELLED","stop","_x","_x2","_x3","_x4","apply","arguments"],"sources":["../../../src/util/create-interceptor-response-rejected.ts"],"sourcesContent":["import {\n FetcherErrorName,\n FetcherConfig,\n FetcherError,\n FetcherResponse,\n FetcherCallRequest,\n FetcherInterceptResponseRejected,\n deleteConfigHeaders\n} from '@kcuf/fetcher';\n\nimport {\n ICreateInterceptorOptions\n} from '../types';\n\nimport singletonPromise from './singleton-promise';\n\nexport default function createInterceptorResponseRejected({\n needLogin,\n doLogin,\n headerKeys\n}: ICreateInterceptorOptions): FetcherInterceptResponseRejected {\n const singletonLogin = singletonPromise(doLogin);\n \n return async (error: FetcherError, fetcherConfig: FetcherConfig, _: FetcherResponse<unknown> | undefined, requestByInterceptor: FetcherCallRequest) => {\n if (!needLogin(error.code ?? '', error)) {\n throw error;\n }\n \n return singletonLogin().then(() => {\n if (headerKeys) {\n deleteConfigHeaders(fetcherConfig, headerKeys);\n }\n \n return requestByInterceptor(fetcherConfig); // 登录完成,重新发起原请求\n }, () => {\n // 一般登录弹窗在登录成功之前是不应该被关闭或取消的,但若真允许取消,这里需要修改错误为「取消登录」\n error.name = FetcherErrorName.LOGIN_CANCELLED;\n \n throw error; // 以新的 name 继续抛错\n });\n };\n}\n"],"mappings":";;AAAA,SACEA,gBAAgB,EAMhBC,mBAAmB,QACd,eAAe;AAMtB,OAAOC,gBAAgB,MAAM,qBAAqB;AAElD,eAAe,SAASC,iCAAiCA,CAAAC,IAAA,EAIO;EAAA,IAH9DC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,UAAU,GAAAH,IAAA,CAAVG,UAAU;EAEV,IAAMC,cAAc,GAAGN,gBAAgB,CAACI,OAAO,CAAC;EAEhD;IAAA,IAAAG,KAAA,GAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAO,SAAAC,QAAOC,KAAmB,EAAEC,aAA4B,EAAEC,CAAuC,EAAEC,oBAAwC;MAAA,IAAAC,WAAA;MAAA,OAAAP,mBAAA,GAAAQ,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,IAC3IlB,SAAS,EAAAa,WAAA,GAACJ,KAAK,CAACU,IAAI,cAAAN,WAAA,cAAAA,WAAA,GAAI,EAAE,EAAEJ,KAAK,CAAC;cAAAO,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,MAC/BT,KAAK;UAAA;YAAA,OAAAO,QAAA,CAAAI,MAAA,WAGNjB,cAAc,CAAC,CAAC,CAACkB,IAAI,CAAC,YAAM;cACjC,IAAInB,UAAU,EAAE;gBACdN,mBAAmB,CAACc,aAAa,EAAER,UAAU,CAAC;cAChD;cAEA,OAAOU,oBAAoB,CAACF,aAAa,CAAC,CAAC,CAAC;YAC9C,CAAC,EAAE,YAAM;cACP;cACAD,KAAK,CAACa,IAAI,GAAG3B,gBAAgB,CAAC4B,eAAe;cAE7C,MAAMd,KAAK,CAAC,CAAC;YACf,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAO,QAAA,CAAAQ,IAAA;QAAA;MAAA,GAAAhB,OAAA;IAAA,CACH;IAAA,iBAAAiB,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAxB,KAAA,CAAAyB,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH","ignoreList":[]}
@@ -1,5 +1,6 @@
1
+ import { FetcherError } from '@kcuf/fetcher';
1
2
  export interface ICreateInterceptorOptions {
2
- needLogin(code: string): boolean;
3
+ needLogin(code: string, err: FetcherError): boolean;
3
4
  doLogin(): Promise<void>;
4
5
  headerKeys?: string[];
5
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kcuf/fetcher-interceptor-login",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Fetcher interceptor seamless login and redo request.",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -22,24 +22,24 @@
22
22
  "access": "public"
23
23
  },
24
24
  "devDependencies": {
25
- "@babel/cli": "^7.26.4",
26
- "@babel/core": "^7.26.0",
27
- "@babel/plugin-transform-runtime": "^7.25.9",
28
- "@babel/preset-env": "^7.26.0",
29
- "@babel/preset-typescript": "^7.26.0",
30
- "@vitest/coverage-v8": "^2.1.8",
31
- "fetch-mock": "^12.2.0",
32
- "jsdom": "^25.0.1",
25
+ "@babel/cli": "^7.27.0",
26
+ "@babel/core": "^7.26.10",
27
+ "@babel/plugin-transform-runtime": "^7.26.10",
28
+ "@babel/preset-env": "^7.26.9",
29
+ "@babel/preset-typescript": "^7.27.0",
30
+ "@vitest/coverage-v8": "^3.1.1",
31
+ "fetch-mock": "^12.5.2",
32
+ "jsdom": "^26.1.0",
33
33
  "rimraf": "^6.0.1",
34
- "typescript": "^5.7.2",
35
- "vitest": "^2.1.8",
34
+ "typescript": "^5.8.3",
35
+ "vitest": "^3.1.1",
36
36
  "@kcuf/ts-config": "^0.0.1"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@babel/runtime": "^7.x"
40
40
  },
41
41
  "dependencies": {
42
- "@kcuf/fetcher": "^0.2.5"
42
+ "@kcuf/fetcher": "^0.2.6"
43
43
  },
44
44
  "scripts": {
45
45
  "build:clean": "rimraf dist",