@wapri/ghermes 2.0.10 → 3.0.0-beta.0

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/base.d.ts CHANGED
@@ -10,6 +10,8 @@ import { Env } from '@wapri/gbase';
10
10
  export default class HermesBase {
11
11
  readonly env: Env;
12
12
  private readonly baseUrl;
13
+ /** 网关前缀,业务中心地址为 `${servicePrefix}${SERVICE_PATHS[key]}` */
14
+ readonly servicePrefix: string;
13
15
  /** axios实例 */
14
16
  readonly instance: AxiosInstance;
15
17
  /** 拦截器配置 */
package/dist/base.js CHANGED
@@ -19,13 +19,15 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
19
19
 
20
20
  import axios from 'axios';
21
21
  import { isEmpty, Env, getToken as _getToken } from '@wapri/gbase';
22
- import { serverDomains } from "./constants/domain";
22
+ import { createServerDomains, DEFAULT_SERVICE_PREFIX } from "./constants/domain";
23
23
  import { axiosTransformSafeLong } from "./utils/snowflake";
24
24
  var HermesBase = /*#__PURE__*/function () {
25
25
  function HermesBase(config) {
26
26
  _classCallCheck(this, HermesBase);
27
27
  _defineProperty(this, "env", void 0);
28
28
  _defineProperty(this, "baseUrl", '');
29
+ /** 网关前缀,业务中心地址为 `${servicePrefix}${SERVICE_PATHS[key]}` */
30
+ _defineProperty(this, "servicePrefix", void 0);
29
31
  /** axios实例 */
30
32
  _defineProperty(this, "instance", void 0);
31
33
  /** 拦截器配置 */
@@ -60,8 +62,10 @@ var HermesBase = /*#__PURE__*/function () {
60
62
  removeToken = config.removeToken,
61
63
  unwrapResponse = config.unwrapResponse,
62
64
  onError = config.onError,
63
- onUnauthorized = config.onUnauthorized;
65
+ onUnauthorized = config.onUnauthorized,
66
+ servicePrefix = config.servicePrefix;
64
67
  this.env = env;
68
+ this.servicePrefix = servicePrefix || DEFAULT_SERVICE_PREFIX;
65
69
  this.baseUrl = this.initialBaseUrl(config);
66
70
  this.interceptor = interceptor;
67
71
  this.retry = this.initialRetry(retry);
@@ -84,13 +88,14 @@ var HermesBase = /*#__PURE__*/function () {
84
88
  _createClass(HermesBase, [{
85
89
  key: "initialBaseUrl",
86
90
  value: function initialBaseUrl(config) {
87
- var _serverDomains$module;
91
+ var _createServerDomains$;
88
92
  var _config$env2 = config.env,
89
93
  env = _config$env2 === void 0 ? Env.PROD : _config$env2,
90
94
  baseUrl = config.baseUrl,
91
95
  _config$module = config.module,
92
96
  module = _config$module === void 0 ? 'store' : _config$module;
93
- return baseUrl || ((_serverDomains$module = serverDomains[module]) === null || _serverDomains$module === void 0 ? void 0 : _serverDomains$module[env]);
97
+ if (baseUrl) return baseUrl;
98
+ return (_createServerDomains$ = createServerDomains(this.servicePrefix)[module]) === null || _createServerDomains$ === void 0 ? void 0 : _createServerDomains$[env];
94
99
  }
95
100
 
96
101
  /** 设置重试配置 */
@@ -1,34 +1,44 @@
1
1
  import { Env } from '@wapri/gbase';
2
2
  /**
3
3
  * 服务端模块(域名维度):
4
- * - store / admin 为终端维度(门店端 / 平台端),直接挂到网关根
5
- * - 其余为业务中心维度,走「网关根 + 服务前缀」
6
- * - gateway 为网关管控台独立实例(不经过业务网关根)
4
+ * - store / admin 为终端维度(门店端 / 平台端),直接使用网关前缀
5
+ * - 其余为业务中心维度,走「网关前缀 + 服务路径」
6
+ * - gateway 为网关管控台独立实例
7
+ *
8
+ * 网关前缀属于业务侧部署信息,通过 `HermesBaseConfig.servicePrefix` 传入;
9
+ * 库里只保留路径段(`/permission-center` 等)与默认前缀 `/api`。
7
10
  */
8
11
  export type ServerDomainKey = 'store' | 'admin' | 'permission' | 'merchant' | 'goods' | 'marketing' | 'pay' | 'order' | 'express' | 'file' | 'capability' | 'message' | 'cart' | 'gateway' | 'aftersale' | 'invoice' | 'auth';
9
- /** 各业务中心的网关注册前缀(固定值,不随环境变化) */
10
- export declare const SERVICE_PREFIX: Record<Exclude<ServerDomainKey, 'store' | 'admin' | 'gateway'>, string>;
11
- export declare const serverDomains: {
12
- store: Record<Env, string>;
13
- admin: Record<Env, string>;
14
- permission: Record<Env, string>;
15
- merchant: Record<Env, string>;
16
- goods: Record<Env, string>;
17
- marketing: Record<Env, string>;
18
- pay: Record<Env, string>;
19
- order: Record<Env, string>;
20
- express: Record<Env, string>;
21
- file: Record<Env, string>;
22
- capability: Record<Env, string>;
23
- message: Record<Env, string>;
24
- cart: Record<Env, string>;
25
- gateway: {
26
- dev: string;
27
- test: string;
28
- pre: string;
29
- prod: string;
30
- };
31
- aftersale: Record<Env, string>;
32
- invoice: Record<Env, string>;
33
- auth: Record<Env, string>;
12
+ /** 默认网关前缀,业务可通过 `HermesBaseConfig.servicePrefix` 覆盖 */
13
+ export declare const DEFAULT_SERVICE_PREFIX = "/api";
14
+ /** 各业务中心相对网关前缀的路径段 */
15
+ export declare const SERVICE_PATHS: {
16
+ readonly permission: "/permission-center";
17
+ readonly merchant: "/merchant";
18
+ readonly goods: "/goods-center";
19
+ readonly marketing: "/marketing-center";
20
+ readonly pay: "/pay-center";
21
+ readonly order: "/order-center";
22
+ readonly express: "/express-center";
23
+ readonly file: "/file";
24
+ readonly capability: "/capability";
25
+ readonly message: "/message";
26
+ readonly cart: "/cart-center";
27
+ readonly aftersale: "/after-sale-center";
28
+ readonly invoice: "/invoice/v1";
29
+ readonly auth: "/auth";
30
+ readonly gateway: "/gateway/admin";
34
31
  };
32
+ /** 业务中心模块 */
33
+ export type ServiceDomainKey = keyof typeof SERVICE_PATHS;
34
+ /**
35
+ * 按网关前缀推导各模块地址。
36
+ *
37
+ * 业务中心地址统一是 `${servicePrefix}${SERVICE_PATHS[key]}`,
38
+ * 如 `servicePrefix = '/api'` 时商品中心为 `/api/goods-center`。
39
+ *
40
+ * @param servicePrefix 网关前缀
41
+ */
42
+ export declare const createServerDomains: (servicePrefix?: string) => Record<ServerDomainKey, Record<Env, string>>;
43
+ /** 默认地址表(不传配置时使用) */
44
+ export declare const serverDomains: Record<ServerDomainKey, Record<Env, string>>;
@@ -4,53 +4,77 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
4
4
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
5
  import { Env } from '@wapri/gbase';
6
6
 
7
- /**
8
- * 服务端模块(域名维度):
9
- * - store / admin 为终端维度(门店端 / 平台端),直接挂到网关根
10
- * - 其余为业务中心维度,走「网关根 + 服务前缀」
11
- * - gateway 为网关管控台独立实例(不经过业务网关根)
7
+ /**
8
+ * 服务端模块(域名维度):
9
+ * - store / admin 为终端维度(门店端 / 平台端),直接使用网关前缀
10
+ * - 其余为业务中心维度,走「网关前缀 + 服务路径」
11
+ * - gateway 为网关管控台独立实例
12
+ *
13
+ * 网关前缀属于业务侧部署信息,通过 `HermesBaseConfig.servicePrefix` 传入;
14
+ * 库里只保留路径段(`/permission-center` 等)与默认前缀 `/api`。
12
15
  */
13
16
 
14
- /** 网关根路径(终端维度直接使用) */
15
- var GATEWAY_ROOT = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Env.DEV, '/api'), Env.TEST, '/api'), Env.PRE, '/api'), Env.PROD, '/api');
17
+ /** 默认网关前缀,业务可通过 `HermesBaseConfig.servicePrefix` 覆盖 */
18
+ export var DEFAULT_SERVICE_PREFIX = '/api';
16
19
 
17
- /** 各业务中心的网关注册前缀(固定值,不随环境变化) */
18
- export var SERVICE_PREFIX = {
19
- permission: '/kaimai-permission-center',
20
- merchant: '/kaimai-merchant',
21
- goods: '/kaimai-goods-center',
22
- marketing: '/kaimai-marketing-center',
23
- pay: '/kaimai-pay-center',
24
- order: '/kaimai-order-center',
25
- express: '/kaimai-express-center',
26
- file: '/kaimai-file',
27
- capability: '/kaimai-capability',
28
- message: '/kaimai-message',
29
- cart: '/kaimai-cart-center',
30
- aftersale: '/kaimai-after-sale-center',
20
+ /** 各业务中心相对网关前缀的路径段 */
21
+ export var SERVICE_PATHS = {
22
+ permission: '/permission-center',
23
+ merchant: '/merchant',
24
+ goods: '/goods-center',
25
+ marketing: '/marketing-center',
26
+ pay: '/pay-center',
27
+ order: '/order-center',
28
+ express: '/express-center',
29
+ file: '/file',
30
+ capability: '/capability',
31
+ message: '/message',
32
+ cart: '/cart-center',
33
+ aftersale: '/after-sale-center',
31
34
  invoice: '/invoice/v1',
32
- auth: '/auth'
35
+ auth: '/auth',
36
+ gateway: '/gateway/admin'
33
37
  };
34
- function buildServiceDomains(prefix) {
35
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Env.DEV, "".concat(GATEWAY_ROOT[Env.DEV]).concat(prefix)), Env.TEST, "".concat(GATEWAY_ROOT[Env.TEST]).concat(prefix)), Env.PRE, "".concat(GATEWAY_ROOT[Env.PRE]).concat(prefix)), Env.PROD, "".concat(GATEWAY_ROOT[Env.PROD]).concat(prefix));
36
- }
37
- export var serverDomains = {
38
- store: GATEWAY_ROOT,
39
- admin: GATEWAY_ROOT,
40
- permission: buildServiceDomains(SERVICE_PREFIX.permission),
41
- merchant: buildServiceDomains(SERVICE_PREFIX.merchant),
42
- goods: buildServiceDomains(SERVICE_PREFIX.goods),
43
- marketing: buildServiceDomains(SERVICE_PREFIX.marketing),
44
- pay: buildServiceDomains(SERVICE_PREFIX.pay),
45
- order: buildServiceDomains(SERVICE_PREFIX.order),
46
- express: buildServiceDomains(SERVICE_PREFIX.express),
47
- file: buildServiceDomains(SERVICE_PREFIX.file),
48
- capability: buildServiceDomains(SERVICE_PREFIX.capability),
49
- message: buildServiceDomains(SERVICE_PREFIX.message),
50
- cart: buildServiceDomains(SERVICE_PREFIX.cart),
51
- // 网关管控台独立实例,各环境同路径;聚合文档可 new Hermes({ baseUrl: '/docs' }) 覆盖
52
- gateway: _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Env.DEV, '/gateway/admin'), Env.TEST, '/gateway/admin'), Env.PRE, '/gateway/admin'), Env.PROD, '/gateway/admin'),
53
- aftersale: buildServiceDomains(SERVICE_PREFIX.aftersale),
54
- invoice: buildServiceDomains(SERVICE_PREFIX.invoice),
55
- auth: buildServiceDomains(SERVICE_PREFIX.auth)
56
- };
38
+
39
+ /** 业务中心模块 */
40
+
41
+ var buildEnvPaths = function buildEnvPaths(path) {
42
+ return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Env.DEV, path), Env.TEST, path), Env.PRE, path), Env.PROD, path);
43
+ };
44
+
45
+ /**
46
+ * 按网关前缀推导各模块地址。
47
+ *
48
+ * 业务中心地址统一是 `${servicePrefix}${SERVICE_PATHS[key]}`,
49
+ * 如 `servicePrefix = '/api'` 时商品中心为 `/api/goods-center`。
50
+ *
51
+ * @param servicePrefix 网关前缀
52
+ */
53
+ export var createServerDomains = function createServerDomains() {
54
+ var servicePrefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_SERVICE_PREFIX;
55
+ var resolve = function resolve(key) {
56
+ return buildEnvPaths("".concat(servicePrefix).concat(SERVICE_PATHS[key]));
57
+ };
58
+ return {
59
+ store: buildEnvPaths(servicePrefix),
60
+ admin: buildEnvPaths(servicePrefix),
61
+ permission: resolve('permission'),
62
+ merchant: resolve('merchant'),
63
+ goods: resolve('goods'),
64
+ marketing: resolve('marketing'),
65
+ pay: resolve('pay'),
66
+ order: resolve('order'),
67
+ express: resolve('express'),
68
+ file: resolve('file'),
69
+ capability: resolve('capability'),
70
+ message: resolve('message'),
71
+ cart: resolve('cart'),
72
+ gateway: resolve('gateway'),
73
+ aftersale: resolve('aftersale'),
74
+ invoice: resolve('invoice'),
75
+ auth: resolve('auth')
76
+ };
77
+ };
78
+
79
+ /** 默认地址表(不传配置时使用) */
80
+ export var serverDomains = createServerDomains();
@@ -12,7 +12,8 @@ import { Hermes } from "./..";
12
12
  var hermes = new Hermes({
13
13
  env: Env.DEV,
14
14
  module: 'merchant',
15
- baseUrl: 'http://admin-test.kaimaitong.com/api',
15
+ // 网关根地址:业务按自身部署传入,仓库内不写死环境域名
16
+ baseUrl: '/api',
16
17
  interceptor: {
17
18
  plugin: ['trace'],
18
19
  // 自定义请求拦截器:内置拦截器执行后追加,可继续修改 config
@@ -36,7 +37,7 @@ var Demo = function Demo() {
36
37
  _context.next = 3;
37
38
  return hermes.instance.request({
38
39
  method: 'get',
39
- url: '/kaimai-permission-center/system/menu/list'
40
+ url: '/permission-center/system/menu/list'
40
41
  });
41
42
  case 3:
42
43
  res = _context.sent;
@@ -14,7 +14,7 @@ export declare class HermesModuleAuth {
14
14
  oauthCallback(params: AccountOAuthCallbackRequest): Promise<AccountLoginResponse> | undefined;
15
15
  /** 退出登录。 */
16
16
  logout(): Promise<unknown> | undefined;
17
- /** 签发短时一次性票据。 */
17
+ /** 签发短时一次性票据(scene / clientType 由业务按认证中心约定传入)。 */
18
18
  getTicket(data?: TicketIssueRequest): Promise<TicketIssueDto> | undefined;
19
19
  /** 用票据兑换登录态。 */
20
20
  ticketGetToken(data: {
@@ -7,14 +7,14 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
7
7
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
9
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
- import { SERVICE_PREFIX } from "../../constants";
10
+ import { SERVICE_PATHS } from "../../constants";
11
11
  export var HermesModuleAuth = /*#__PURE__*/function () {
12
12
  function HermesModuleAuth(hermes) {
13
13
  _classCallCheck(this, HermesModuleAuth);
14
14
  _defineProperty(this, "hermes", void 0);
15
15
  _defineProperty(this, "baseUrl", '');
16
16
  this.hermes = hermes;
17
- this.baseUrl = SERVICE_PREFIX.auth;
17
+ this.baseUrl = "".concat(hermes.servicePrefix).concat(SERVICE_PATHS.auth);
18
18
  }
19
19
 
20
20
  /** 认证中心统一登录。 */
@@ -90,7 +90,7 @@ export var HermesModuleAuth = /*#__PURE__*/function () {
90
90
  });
91
91
  }
92
92
 
93
- /** 签发短时一次性票据。 */
93
+ /** 签发短时一次性票据(scene / clientType 由业务按认证中心约定传入)。 */
94
94
  }, {
95
95
  key: "getTicket",
96
96
  value: function getTicket(data) {
@@ -98,10 +98,7 @@ export var HermesModuleAuth = /*#__PURE__*/function () {
98
98
  return (_this$hermes6 = this.hermes) === null || _this$hermes6 === void 0 ? void 0 : _this$hermes6.instance.request({
99
99
  method: 'post',
100
100
  url: "".concat(this.baseUrl, "/ticket/issue"),
101
- data: _objectSpread({
102
- scene: 'LOGISTICS_TRACKING',
103
- clientType: 'H5'
104
- }, data || {})
101
+ data: _objectSpread({}, data || {})
105
102
  });
106
103
  }
107
104
 
@@ -113,9 +110,7 @@ export var HermesModuleAuth = /*#__PURE__*/function () {
113
110
  return (_this$hermes7 = this.hermes) === null || _this$hermes7 === void 0 ? void 0 : _this$hermes7.instance.request({
114
111
  method: 'post',
115
112
  url: "".concat(this.baseUrl, "/ticket/exchange"),
116
- data: _objectSpread({
117
- deviceId: 'H5 Session'
118
- }, data || {}),
113
+ data: _objectSpread({}, data || {}),
119
114
  headers: {
120
115
  isToken: false
121
116
  }
@@ -5,14 +5,14 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
- import { SERVICE_PREFIX } from "../../constants";
8
+ import { SERVICE_PATHS } from "../../constants";
9
9
  export var HermesModuleFile = /*#__PURE__*/function () {
10
10
  function HermesModuleFile(hermes) {
11
11
  _classCallCheck(this, HermesModuleFile);
12
12
  _defineProperty(this, "hermes", void 0);
13
13
  _defineProperty(this, "baseUrl", '');
14
14
  this.hermes = hermes;
15
- this.baseUrl = SERVICE_PREFIX.file;
15
+ this.baseUrl = "".concat(hermes.servicePrefix).concat(SERVICE_PATHS.file);
16
16
  }
17
17
  _createClass(HermesModuleFile, [{
18
18
  key: "tosGetSts",
@@ -26,6 +26,11 @@ export type RequestCommon = {
26
26
  * @default usedCar
27
27
  * */
28
28
  module?: ServerDomainKey;
29
+ /**
30
+ * 网关前缀,业务中心地址统一是 `${servicePrefix}${SERVICE_PATHS[key]}`。
31
+ * @default '/api'
32
+ */
33
+ servicePrefix?: string;
29
34
  };
30
35
  /**
31
36
  * 业务自定义请求拦截器:在内置拦截器(token + plugin)执行后追加调用,可继续修改 config
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wapri/ghermes",
3
- "version": "2.0.10",
3
+ "version": "3.0.0-beta.0",
4
4
  "description": "公共请求库,维护了统一请求与不同模块的请求",
5
5
  "keywords": [],
6
6
  "license": "UNLICENSED",
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "dependencies": {
16
16
  "axios": "^1.16.1",
17
- "@wapri/gbase": "^1.0.0"
17
+ "@wapri/gbase": "^1.0.1-beta.0"
18
18
  },
19
19
  "publishConfig": {
20
20
  "access": "public",