apifm-admin 26.6.13 → 26.6.15

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
@@ -24,6 +24,28 @@ const res = await apifmAdmin.loginAdminMobile({
24
24
  })
25
25
  ```
26
26
 
27
+ ## 动态获取 X-Token
28
+
29
+ 如果每个项目保存 token 的位置不同,不需要重写请求适配器,只注入获取 token 的方法即可:
30
+
31
+ ```js
32
+ import apifmAdmin from 'apifm-admin'
33
+
34
+ apifmAdmin.setTokenGetter(() => {
35
+ return uni.getStorageSync('tokenData')?.token || ''
36
+ })
37
+ ```
38
+
39
+ 也可以通过 `setConfig` 一起配置:
40
+
41
+ ```js
42
+ apifmAdmin.setConfig({
43
+ tokenGetter: () => uni.getStorageSync('tokenData')?.token || ''
44
+ })
45
+ ```
46
+
47
+ SDK 会在每次请求前调用 `tokenGetter`,并自动写入唯一的 `X-Token` 请求头。
48
+
27
49
  ## 跨端请求适配
28
50
 
29
51
  默认优先使用:
@@ -32,7 +54,7 @@ const res = await apifmAdmin.loginAdminMobile({
32
54
  2. `wx.request`
33
55
  3. `fetch`
34
56
 
35
- 也可以手动注入请求适配器:
57
+ 只有在需要完全接管请求行为时,才需要手动注入请求适配器:
36
58
 
37
59
  ```js
38
60
  import apifmAdmin from 'apifm-admin'
@@ -57,7 +79,7 @@ apifmAdmin.setRequestAdapter(async (requestOptions) => {
57
79
  apifmAdmin.setConfig({
58
80
  token: 'xtoken',
59
81
  headers: {
60
- 'x-token': 'xtoken'
82
+ 'X-Token': 'xtoken'
61
83
  }
62
84
  })
63
85
  ```
@@ -66,6 +88,7 @@ apifmAdmin.setConfig({
66
88
 
67
89
  ```js
68
90
  apifmAdmin.setToken('xtoken')
91
+ apifmAdmin.setTokenGetter(() => uni.getStorageSync('tokenData')?.token || '')
69
92
  apifmAdmin.setHeader('tenant-id', '1001')
70
93
  apifmAdmin.setDomain('common', 'https://common.apifm.com')
71
94
  ```
package/dist/index.cjs CHANGED
@@ -38321,6 +38321,7 @@ const DEFAULT_DOMAINS = {
38321
38321
 
38322
38322
  const state = {
38323
38323
  token: '',
38324
+ tokenGetter: null,
38324
38325
  headers: {},
38325
38326
  domains: { ...DEFAULT_DOMAINS },
38326
38327
  requestAdapter: null
@@ -38361,10 +38362,17 @@ function mergeHeaders(headers) {
38361
38362
  ...state.headers,
38362
38363
  ...headers
38363
38364
  }
38364
- const token = headers?.['X-Token'] || headers?.['x-token'] || state.token
38365
+ const headerToken =
38366
+ headers?.['X-Token'] ||
38367
+ headers?.['x-token'] ||
38368
+ state.headers?.['X-Token'] ||
38369
+ state.headers?.['x-token']
38370
+ const dynamicToken = typeof state.tokenGetter === 'function' ? state.tokenGetter() : ''
38371
+ const token = headerToken || dynamicToken || state.token
38372
+ delete merged['X-Token']
38373
+ delete merged['x-token']
38365
38374
  if (token) {
38366
38375
  merged['X-Token'] = token
38367
- merged['x-token'] = token
38368
38376
  }
38369
38377
  return merged
38370
38378
  }
@@ -38466,6 +38474,7 @@ const sdk = {
38466
38474
  getConfig() {
38467
38475
  return {
38468
38476
  token: state.token,
38477
+ tokenGetter: state.tokenGetter,
38469
38478
  headers: { ...state.headers },
38470
38479
  domains: { ...state.domains }
38471
38480
  }
@@ -38474,6 +38483,9 @@ const sdk = {
38474
38483
  if (config.token !== undefined) {
38475
38484
  state.token = config.token || ''
38476
38485
  }
38486
+ if (config.tokenGetter !== undefined) {
38487
+ state.tokenGetter = typeof config.tokenGetter === 'function' ? config.tokenGetter : null
38488
+ }
38477
38489
  if (config.headers) {
38478
38490
  state.headers = { ...state.headers, ...config.headers }
38479
38491
  }
@@ -38489,6 +38501,10 @@ const sdk = {
38489
38501
  state.token = token || ''
38490
38502
  return sdk
38491
38503
  },
38504
+ setTokenGetter(tokenGetter) {
38505
+ state.tokenGetter = typeof tokenGetter === 'function' ? tokenGetter : null
38506
+ return sdk
38507
+ },
38492
38508
  setHeader(name, value) {
38493
38509
  if (isNil(value)) {
38494
38510
  delete state.headers[name]
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface RequestOptions {
4
4
 
5
5
  export interface SDKConfig {
6
6
  token?: string;
7
+ tokenGetter?: () => string;
7
8
  headers?: Record<string, string>;
8
9
  domains?: Record<string, string>;
9
10
  requestAdapter?: (options: RequestAdapterOptions) => Promise<any>;
@@ -13255,9 +13256,10 @@ export interface YuyueJoinSuccessPayload {
13255
13256
  }
13256
13257
 
13257
13258
  declare const sdk: {
13258
- getConfig(): { token: string; headers: Record<string, string>; domains: Record<string, string> };
13259
+ getConfig(): { token: string; tokenGetter: (() => string) | null; headers: Record<string, string>; domains: Record<string, string> };
13259
13260
  setConfig(config?: SDKConfig): typeof sdk;
13260
13261
  setToken(token: string): typeof sdk;
13262
+ setTokenGetter(tokenGetter?: () => string): typeof sdk;
13261
13263
  setHeader(name: string, value?: string): typeof sdk;
13262
13264
  setHeaders(headers?: Record<string, string>): typeof sdk;
13263
13265
  setDomain(domainKey: string, domainValue: string): typeof sdk;
package/dist/index.js CHANGED
@@ -38321,6 +38321,7 @@ const DEFAULT_DOMAINS = {
38321
38321
 
38322
38322
  const state = {
38323
38323
  token: '',
38324
+ tokenGetter: null,
38324
38325
  headers: {},
38325
38326
  domains: { ...DEFAULT_DOMAINS },
38326
38327
  requestAdapter: null
@@ -38361,10 +38362,17 @@ function mergeHeaders(headers) {
38361
38362
  ...state.headers,
38362
38363
  ...headers
38363
38364
  }
38364
- const token = headers?.['X-Token'] || headers?.['x-token'] || state.token
38365
+ const headerToken =
38366
+ headers?.['X-Token'] ||
38367
+ headers?.['x-token'] ||
38368
+ state.headers?.['X-Token'] ||
38369
+ state.headers?.['x-token']
38370
+ const dynamicToken = typeof state.tokenGetter === 'function' ? state.tokenGetter() : ''
38371
+ const token = headerToken || dynamicToken || state.token
38372
+ delete merged['X-Token']
38373
+ delete merged['x-token']
38365
38374
  if (token) {
38366
38375
  merged['X-Token'] = token
38367
- merged['x-token'] = token
38368
38376
  }
38369
38377
  return merged
38370
38378
  }
@@ -38466,6 +38474,7 @@ const sdk = {
38466
38474
  getConfig() {
38467
38475
  return {
38468
38476
  token: state.token,
38477
+ tokenGetter: state.tokenGetter,
38469
38478
  headers: { ...state.headers },
38470
38479
  domains: { ...state.domains }
38471
38480
  }
@@ -38474,6 +38483,9 @@ const sdk = {
38474
38483
  if (config.token !== undefined) {
38475
38484
  state.token = config.token || ''
38476
38485
  }
38486
+ if (config.tokenGetter !== undefined) {
38487
+ state.tokenGetter = typeof config.tokenGetter === 'function' ? config.tokenGetter : null
38488
+ }
38477
38489
  if (config.headers) {
38478
38490
  state.headers = { ...state.headers, ...config.headers }
38479
38491
  }
@@ -38489,6 +38501,10 @@ const sdk = {
38489
38501
  state.token = token || ''
38490
38502
  return sdk
38491
38503
  },
38504
+ setTokenGetter(tokenGetter) {
38505
+ state.tokenGetter = typeof tokenGetter === 'function' ? tokenGetter : null
38506
+ return sdk
38507
+ },
38492
38508
  setHeader(name, value) {
38493
38509
  if (isNil(value)) {
38494
38510
  delete state.headers[name]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apifm-admin",
3
- "version": "26.6.13",
3
+ "version": "26.6.15",
4
4
  "description": "API 工厂后台接口 SDK,支持 Web、uni-app、微信小程序",
5
5
  "license": "MIT",
6
6
  "author": "",