Skip to content

Commit 99078d2

Browse files
committed
feat: token 缓存,不用每次都生成
1 parent 6c3250c commit 99078d2

File tree

18 files changed

+116
-21
lines changed

18 files changed

+116
-21
lines changed

dist/core/jwt.cjs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ __export(jwt_exports, {
3535
module.exports = __toCommonJS(jwt_exports);
3636
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
3737
var API_TOKEN_TTL_SECONDS = 3 * 60;
38-
var generateToken = (apiSecretKey) => {
38+
var CACHE_TTL_SECONDS = API_TOKEN_TTL_SECONDS - 30;
39+
var tokenCache = {};
40+
var generateToken = (apiSecretKey, cache = true) => {
3941
try {
42+
if (tokenCache[apiSecretKey] && Date.now() - tokenCache[apiSecretKey].createAt < CACHE_TTL_SECONDS * 1e3) {
43+
return tokenCache[apiSecretKey].token;
44+
}
4045
const [apiKey, secret] = apiSecretKey.split(".");
4146
const payload = {
4247
"api_key": apiKey,
@@ -47,6 +52,12 @@ var generateToken = (apiSecretKey) => {
4752
algorithm: "HS256",
4853
header: { alg: "HS256", sign_type: "SIGN" }
4954
});
55+
if (cache) {
56+
tokenCache[apiSecretKey] = {
57+
token: ret,
58+
createAt: Date.now()
59+
};
60+
}
5061
return ret;
5162
} catch (e) {
5263
throw "invalid api_key";

dist/core/jwt.cjs.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core/jwt.d.cts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
declare const generateToken: (apiSecretKey: string) => never;
1+
declare const generateToken: (apiSecretKey: string, cache?: boolean) => string;
22

33
export { generateToken };

dist/core/jwt.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
declare const generateToken: (apiSecretKey: string) => never;
1+
declare const generateToken: (apiSecretKey: string, cache?: boolean) => string;
22

33
export { generateToken };

dist/core/jwt.js

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core/jwt.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.cjs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,13 @@ var import_assert = __toESM(require("assert"), 1);
6969
// lib/core/jwt.ts
7070
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
7171
var API_TOKEN_TTL_SECONDS = 3 * 60;
72-
var generateToken = (apiSecretKey) => {
72+
var CACHE_TTL_SECONDS = API_TOKEN_TTL_SECONDS - 30;
73+
var tokenCache = {};
74+
var generateToken = (apiSecretKey, cache = true) => {
7375
try {
76+
if (tokenCache[apiSecretKey] && Date.now() - tokenCache[apiSecretKey].createAt < CACHE_TTL_SECONDS * 1e3) {
77+
return tokenCache[apiSecretKey].token;
78+
}
7479
const [apiKey, secret] = apiSecretKey.split(".");
7580
const payload = {
7681
"api_key": apiKey,
@@ -81,6 +86,12 @@ var generateToken = (apiSecretKey) => {
8186
algorithm: "HS256",
8287
header: { alg: "HS256", sign_type: "SIGN" }
8388
});
89+
if (cache) {
90+
tokenCache[apiSecretKey] = {
91+
token: ret,
92+
createAt: Date.now()
93+
};
94+
}
8495
return ret;
8596
} catch (e) {
8697
throw "invalid api_key";
@@ -253,13 +264,15 @@ var ZhipuAI = class {
253264
__publicField(this, "images");
254265
__publicField(this, "embeddings");
255266
__publicField(this, "files");
267+
var _a;
256268
if (!options.apiKey)
257269
options.apiKey = process.env["ZHIPUAI_API_KEY"] || "";
258270
import_assert.default.ok(options.apiKey, "\u672A\u63D0\u4F9Bapi_key\uFF0C\u8BF7\u901A\u8FC7\u53C2\u6570\u6216\u73AF\u5883\u53D8\u91CF\u63D0\u4F9B");
259271
if (!options.baseUrl)
260272
options.baseUrl = process.env["ZHIPUAI_BASE_URL"] || "";
261273
if (!options.baseUrl)
262274
options.baseUrl = "https://open.bigmodel.cn/api/paas/v4";
275+
options.cacheToken = (_a = options.cacheToken) != null ? _a : true;
263276
this.request = new Request({
264277
timeout: options.timeout,
265278
headers: options.customHeaders,
@@ -296,7 +309,7 @@ var ZhipuAI = class {
296309
});
297310
}
298311
authHeaders() {
299-
const token = generateToken(this.options.apiKey);
312+
const token = generateToken(this.options.apiKey, this.options.cacheToken);
300313
return { "Authorization": token };
301314
}
302315
};

0 commit comments

Comments
 (0)