@xfe-repo/mini-service 0.0.4 → 0.1.1
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.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +46 -4
- package/dist/index.mjs +46 -4
- package/package.json +4 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import Taro, { Chain, RequestTask } from '@tarojs/taro';
|
|
2
2
|
|
|
3
|
+
type JWT = {
|
|
4
|
+
aud: string[];
|
|
5
|
+
sys_mch_id?: string;
|
|
6
|
+
privateKey: string;
|
|
7
|
+
keyId: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
3
10
|
type TaroRequestConfig = Taro.request.Option;
|
|
4
11
|
type BffDataType<D = any> = {
|
|
5
12
|
code: number;
|
|
@@ -10,6 +17,7 @@ type BffDataType<D = any> = {
|
|
|
10
17
|
type BffRequestParams = {
|
|
11
18
|
baseURL?: string;
|
|
12
19
|
params?: any;
|
|
20
|
+
jwt?: JWT;
|
|
13
21
|
};
|
|
14
22
|
type BFFRequestConfig = Partial<TaroRequestConfig> & BffRequestParams;
|
|
15
23
|
declare const bffInterceptor: (chain: Chain) => any;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import Taro, { Chain, RequestTask } from '@tarojs/taro';
|
|
2
2
|
|
|
3
|
+
type JWT = {
|
|
4
|
+
aud: string[];
|
|
5
|
+
sys_mch_id?: string;
|
|
6
|
+
privateKey: string;
|
|
7
|
+
keyId: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
3
10
|
type TaroRequestConfig = Taro.request.Option;
|
|
4
11
|
type BffDataType<D = any> = {
|
|
5
12
|
code: number;
|
|
@@ -10,6 +17,7 @@ type BffDataType<D = any> = {
|
|
|
10
17
|
type BffRequestParams = {
|
|
11
18
|
baseURL?: string;
|
|
12
19
|
params?: any;
|
|
20
|
+
jwt?: JWT;
|
|
13
21
|
};
|
|
14
22
|
type BFFRequestConfig = Partial<TaroRequestConfig> & BffRequestParams;
|
|
15
23
|
declare const bffInterceptor: (chain: Chain) => any;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
8
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
9
|
var __getProtoOf = Object.getPrototypeOf;
|
|
@@ -19,6 +21,19 @@ var __spreadValues = (a, b) => {
|
|
|
19
21
|
}
|
|
20
22
|
return a;
|
|
21
23
|
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __objRest = (source, exclude) => {
|
|
26
|
+
var target = {};
|
|
27
|
+
for (var prop in source)
|
|
28
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
if (source != null && __getOwnPropSymbols)
|
|
31
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
32
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
33
|
+
target[prop] = source[prop];
|
|
34
|
+
}
|
|
35
|
+
return target;
|
|
36
|
+
};
|
|
22
37
|
var __export = (target, all) => {
|
|
23
38
|
for (var name in all)
|
|
24
39
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -52,14 +67,41 @@ var import_taro2 = require("@tarojs/taro");
|
|
|
52
67
|
|
|
53
68
|
// src/bff/interceptor.ts
|
|
54
69
|
var import_taro = __toESM(require("@tarojs/taro"));
|
|
70
|
+
|
|
71
|
+
// src/bff/jwt-sign.ts
|
|
72
|
+
var import_jsrsasign = require("jsrsasign");
|
|
73
|
+
var ALG = "RS256";
|
|
74
|
+
var createJwtSign = (payload, privateKeyPem, keyId) => {
|
|
75
|
+
if (!privateKeyPem) return "";
|
|
76
|
+
try {
|
|
77
|
+
const sHeader = JSON.stringify({ alg: ALG, typ: "JWT", kid: keyId });
|
|
78
|
+
const defaultPayload = {
|
|
79
|
+
sys_mch_id: "eshetang-official",
|
|
80
|
+
iss: "https://auth.eshetang.com",
|
|
81
|
+
jti: Math.random().toString(36),
|
|
82
|
+
// Expires in 60 seconds
|
|
83
|
+
exp: Math.floor(Date.now() / 1e3) + 60
|
|
84
|
+
};
|
|
85
|
+
const sPayload = JSON.stringify(__spreadValues(__spreadValues({}, defaultPayload), payload));
|
|
86
|
+
const authorization = import_jsrsasign.KJUR.jws.JWS.sign(ALG, sHeader, sPayload, privateKeyPem);
|
|
87
|
+
return `Bearer ${authorization}`;
|
|
88
|
+
} catch (error) {
|
|
89
|
+
console.error("createJwtSign error:", error);
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// src/bff/interceptor.ts
|
|
55
95
|
var bffInterceptor = (chain) => {
|
|
56
96
|
const requestParams = chain.requestParams;
|
|
57
|
-
let { url, baseURL, data, params, header } = requestParams;
|
|
97
|
+
let { url, baseURL, data, params, header, jwt } = requestParams;
|
|
58
98
|
if (url && !/^http/.test(url)) {
|
|
59
99
|
requestParams.url = baseURL + url.replace(/^\//, "");
|
|
60
100
|
}
|
|
61
101
|
const timestamp = (/* @__PURE__ */ new Date()).getTime();
|
|
62
|
-
|
|
102
|
+
const _a = jwt || {}, { privateKey, keyId } = _a, payload = __objRest(_a, ["privateKey", "keyId"]);
|
|
103
|
+
const authorization = createJwtSign(__spreadProps(__spreadValues({}, payload), { sub: header["userToken"] }), privateKey, keyId);
|
|
104
|
+
header = __spreadValues({ timestamp: `${timestamp}`, authorization }, header);
|
|
63
105
|
data = __spreadValues(__spreadValues({}, data), params);
|
|
64
106
|
for (const param in data) {
|
|
65
107
|
const isEmptyString = data[param] === "";
|
|
@@ -70,10 +112,10 @@ var bffInterceptor = (chain) => {
|
|
|
70
112
|
requestParams.data = data;
|
|
71
113
|
requestParams.header = header;
|
|
72
114
|
return chain.proceed(requestParams).then((responseData) => {
|
|
73
|
-
var
|
|
115
|
+
var _a2, _b;
|
|
74
116
|
const { data: bffData, statusCode, errMsg } = responseData;
|
|
75
117
|
if (![200, 201].includes(statusCode)) return { data: {}, msg: errMsg, code: statusCode };
|
|
76
|
-
(_b = (
|
|
118
|
+
(_b = (_a2 = import_taro.default).stopPullDownRefresh) == null ? void 0 : _b.call(_a2);
|
|
77
119
|
return bffData;
|
|
78
120
|
});
|
|
79
121
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
2
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
6
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -14,20 +16,60 @@ var __spreadValues = (a, b) => {
|
|
|
14
16
|
}
|
|
15
17
|
return a;
|
|
16
18
|
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
17
32
|
|
|
18
33
|
// src/index.ts
|
|
19
34
|
import { addInterceptor, interceptors, request } from "@tarojs/taro";
|
|
20
35
|
|
|
21
36
|
// src/bff/interceptor.ts
|
|
22
37
|
import Taro from "@tarojs/taro";
|
|
38
|
+
|
|
39
|
+
// src/bff/jwt-sign.ts
|
|
40
|
+
import { KJUR } from "jsrsasign";
|
|
41
|
+
var ALG = "RS256";
|
|
42
|
+
var createJwtSign = (payload, privateKeyPem, keyId) => {
|
|
43
|
+
if (!privateKeyPem) return "";
|
|
44
|
+
try {
|
|
45
|
+
const sHeader = JSON.stringify({ alg: ALG, typ: "JWT", kid: keyId });
|
|
46
|
+
const defaultPayload = {
|
|
47
|
+
sys_mch_id: "eshetang-official",
|
|
48
|
+
iss: "https://auth.eshetang.com",
|
|
49
|
+
jti: Math.random().toString(36),
|
|
50
|
+
// Expires in 60 seconds
|
|
51
|
+
exp: Math.floor(Date.now() / 1e3) + 60
|
|
52
|
+
};
|
|
53
|
+
const sPayload = JSON.stringify(__spreadValues(__spreadValues({}, defaultPayload), payload));
|
|
54
|
+
const authorization = KJUR.jws.JWS.sign(ALG, sHeader, sPayload, privateKeyPem);
|
|
55
|
+
return `Bearer ${authorization}`;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error("createJwtSign error:", error);
|
|
58
|
+
return "";
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// src/bff/interceptor.ts
|
|
23
63
|
var bffInterceptor = (chain) => {
|
|
24
64
|
const requestParams = chain.requestParams;
|
|
25
|
-
let { url, baseURL, data, params, header } = requestParams;
|
|
65
|
+
let { url, baseURL, data, params, header, jwt } = requestParams;
|
|
26
66
|
if (url && !/^http/.test(url)) {
|
|
27
67
|
requestParams.url = baseURL + url.replace(/^\//, "");
|
|
28
68
|
}
|
|
29
69
|
const timestamp = (/* @__PURE__ */ new Date()).getTime();
|
|
30
|
-
|
|
70
|
+
const _a = jwt || {}, { privateKey, keyId } = _a, payload = __objRest(_a, ["privateKey", "keyId"]);
|
|
71
|
+
const authorization = createJwtSign(__spreadProps(__spreadValues({}, payload), { sub: header["userToken"] }), privateKey, keyId);
|
|
72
|
+
header = __spreadValues({ timestamp: `${timestamp}`, authorization }, header);
|
|
31
73
|
data = __spreadValues(__spreadValues({}, data), params);
|
|
32
74
|
for (const param in data) {
|
|
33
75
|
const isEmptyString = data[param] === "";
|
|
@@ -38,10 +80,10 @@ var bffInterceptor = (chain) => {
|
|
|
38
80
|
requestParams.data = data;
|
|
39
81
|
requestParams.header = header;
|
|
40
82
|
return chain.proceed(requestParams).then((responseData) => {
|
|
41
|
-
var
|
|
83
|
+
var _a2, _b;
|
|
42
84
|
const { data: bffData, statusCode, errMsg } = responseData;
|
|
43
85
|
if (![200, 201].includes(statusCode)) return { data: {}, msg: errMsg, code: statusCode };
|
|
44
|
-
(_b = (
|
|
86
|
+
(_b = (_a2 = Taro).stopPullDownRefresh) == null ? void 0 : _b.call(_a2);
|
|
45
87
|
return bffData;
|
|
46
88
|
});
|
|
47
89
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xfe-repo/mini-service",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,9 +20,11 @@
|
|
|
20
20
|
"dist"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@tarojs/taro": "4.0.8"
|
|
23
|
+
"@tarojs/taro": "4.0.8",
|
|
24
|
+
"jsrsasign": "^11.1.0"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
27
|
+
"@types/jsrsasign": "^10.5.15",
|
|
26
28
|
"@types/node": "^20.16.5",
|
|
27
29
|
"@xfe-repo/eslint-config": "0.0.5",
|
|
28
30
|
"@xfe-repo/typescript-config": "0.0.6"
|