@edgenets/utils 0.0.24 → 0.0.26
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/types/order.d.ts +6 -1
- package/dist/types/order.d.ts.map +1 -1
- package/dist/types/order.js.map +1 -1
- package/dist/utils/signature.util.d.ts +12 -0
- package/dist/utils/signature.util.d.ts.map +1 -0
- package/dist/utils/signature.util.js +56 -0
- package/dist/utils/signature.util.js.map +1 -0
- package/package.json +4 -1
package/dist/types/order.d.ts
CHANGED
@@ -28,7 +28,12 @@ export interface OrderCustomer {
|
|
28
28
|
name: string;
|
29
29
|
phone?: string;
|
30
30
|
email?: string;
|
31
|
-
metadata?:
|
31
|
+
metadata?: {
|
32
|
+
telegram?: {
|
33
|
+
id: number;
|
34
|
+
};
|
35
|
+
[key: string]: unknown;
|
36
|
+
};
|
32
37
|
}
|
33
38
|
export interface OrderItem {
|
34
39
|
id: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":"AACA,UAAU,SAAS;IACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IAEpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IAEtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,oBAAY,WAAW;IACrB,OAAO,YAAY,CAAE,YAAY;IACjC,SAAS,cAAc,CAAE,aAAa;IACtC,SAAS,cAAc,CAAE,aAAa;IACtC,QAAQ,aAAa,CAAE,QAAQ;IAC/B,QAAQ,aAAa;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,
|
1
|
+
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":"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"}
|
package/dist/types/order.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":"AAwBA,SAAS;AACT,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":"AAwBA,SAAS;AACT,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAkCD,SAAS;AACT,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAoBD,SAAS;AACT,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,4CAA0B,CAAA;IAC1B,qCAAmB,CAAA;IACnB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
export declare class SignatureManager {
|
2
|
+
static generateSignature(data: Record<string, unknown>, secretKey: string): string;
|
3
|
+
static validateSignature(data: Record<string, unknown>, receivedSignature: string, secretKey: string): boolean;
|
4
|
+
private static safeCompare;
|
5
|
+
private static sortObjectKeys;
|
6
|
+
static signWithTimestampAndNonce(data: Record<string, unknown>, secretKey: string, timestamp?: number, nonce?: string): {
|
7
|
+
signature: string;
|
8
|
+
timestamp: number;
|
9
|
+
nonce: string;
|
10
|
+
};
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=signature.util.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"signature.util.d.ts","sourceRoot":"","sources":["../../src/utils/signature.util.ts"],"names":[],"mappings":"AAEA,qBAAa,gBAAgB;WAEb,iBAAiB,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,MAAM,GAChB,MAAM;WAqBK,iBAAiB,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO;IAMV,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,CAAC,MAAM,CAAC,cAAc;WAmBf,yBAAyB,CACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAmB,EAC9B,KAAK,GAAE,MAAoD,GAC1D;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAK3D"}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { createHmac } from "crypto";
|
2
|
+
export class SignatureManager {
|
3
|
+
// 生成签名的方法
|
4
|
+
static generateSignature(data, secretKey) {
|
5
|
+
const sortedData = Object.keys(data)
|
6
|
+
.sort() // 按字母顺序排序字段
|
7
|
+
.map((key) => {
|
8
|
+
const value = data[key];
|
9
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
10
|
+
const serializedValue = JSON.stringify(this.sortObjectKeys(value));
|
11
|
+
return `${key}=${serializedValue}`;
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
const serializedValue = JSON.stringify(value); // 确保值被正确序列化
|
15
|
+
return `${key}=${serializedValue}`;
|
16
|
+
}
|
17
|
+
})
|
18
|
+
.join("&");
|
19
|
+
return createHmac("sha256", secretKey).update(sortedData).digest("hex");
|
20
|
+
}
|
21
|
+
// 验证签名的方法
|
22
|
+
static validateSignature(data, receivedSignature, secretKey) {
|
23
|
+
const calculatedSignature = this.generateSignature(data, secretKey);
|
24
|
+
return this.safeCompare(calculatedSignature, receivedSignature);
|
25
|
+
}
|
26
|
+
// 安全比较函数,防止时间攻击
|
27
|
+
static safeCompare(a, b) {
|
28
|
+
if (a.length !== b.length)
|
29
|
+
return false;
|
30
|
+
let result = 0;
|
31
|
+
for (let i = 0; i < a.length; i++) {
|
32
|
+
result |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
33
|
+
}
|
34
|
+
return result === 0;
|
35
|
+
}
|
36
|
+
// 对对象的键进行递归排序
|
37
|
+
static sortObjectKeys(obj) {
|
38
|
+
return Object.keys(obj)
|
39
|
+
.sort()
|
40
|
+
.reduce((acc, key) => {
|
41
|
+
const value = obj[key];
|
42
|
+
acc[key] =
|
43
|
+
value && typeof value === "object" && !Array.isArray(value)
|
44
|
+
? this.sortObjectKeys(value)
|
45
|
+
: value;
|
46
|
+
return acc;
|
47
|
+
}, {});
|
48
|
+
}
|
49
|
+
// 增加时间戳和 nonce 并生成签名
|
50
|
+
static signWithTimestampAndNonce(data, secretKey, timestamp = Date.now(), nonce = Math.random().toString(36).substring(2, 15)) {
|
51
|
+
const extendedData = { ...data, timestamp, nonce };
|
52
|
+
const signature = this.generateSignature(extendedData, secretKey);
|
53
|
+
return { signature, timestamp, nonce };
|
54
|
+
}
|
55
|
+
}
|
56
|
+
//# sourceMappingURL=signature.util.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"signature.util.js","sourceRoot":"","sources":["../../src/utils/signature.util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@edgenets/utils",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.26",
|
4
4
|
"description": "Edgenets utilities package containing common types and utilities.",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -16,5 +16,8 @@
|
|
16
16
|
"build": "eslint --fix && tsc -p tsconfig.json",
|
17
17
|
"test": "echo 'Skip Tests'",
|
18
18
|
"public": "pnpm build && npm version patch && npm publish --access public"
|
19
|
+
},
|
20
|
+
"devDependencies": {
|
21
|
+
"@types/node": "~20.16.15"
|
19
22
|
}
|
20
23
|
}
|