@seayoo-web/kms 3.2.0 → 3.3.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.js +66 -24
- package/package.json +3 -2
- package/types/src/dsi.d.ts +14 -4
package/dist/index.js
CHANGED
|
@@ -1,35 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
const h = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : Function("return this")();
|
|
2
|
+
function v(r) {
|
|
3
|
+
return typeof r == "function";
|
|
4
|
+
}
|
|
5
|
+
function x(r) {
|
|
6
|
+
return typeof r == "object" && r !== null;
|
|
7
|
+
}
|
|
8
|
+
function C() {
|
|
9
|
+
return "localStorage" in h && x(h.localStorage) && "getItem" in h.localStorage && v(h.localStorage.getItem);
|
|
10
|
+
}
|
|
11
|
+
function I(r, t) {
|
|
12
|
+
try {
|
|
13
|
+
const e = JSON.parse(r);
|
|
14
|
+
return t ? t(e) ? e : null : e;
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function P(r) {
|
|
20
|
+
const t = {}, { group: e, filter: n, filterLogic: o, range: i, created: a, updated: u, size: f, page: c, sort: s } = r, { sn: d, fields: l, dataFields: p, multi: S, combo: $, pure: A = "items", label: y, value: g, option: j } = r;
|
|
21
|
+
if (d && (t.sn = d), e && (t.g = Array.isArray(e) ? e.join(",") : e), n) {
|
|
22
|
+
const w = o === "or" ? "|" : "+", O = Object.keys(n);
|
|
23
|
+
t.filter = O.map((m) => {
|
|
24
|
+
const b = n[m];
|
|
25
|
+
return Array.isArray(b) ? `${m}:${b.join(",")}` : `${m}:${b}`;
|
|
26
|
+
}).join(w);
|
|
9
27
|
}
|
|
10
|
-
return
|
|
28
|
+
return i && (t.r = i), a && (t.created = a.join("-")), u && (t.updated = u.join("-")), s && (t.sort = Array.isArray(s) ? s.join(",") : s), S === !1 && (t.m = "n"), f && (t.s = `${f}`), c && (t.p = `${c}`), l && (t.f = Array.isArray(l) ? l.join(",") : l), p && (t.df = Array.isArray(p) ? p.join(",") : p), $ === !0 && (l ? t.c = "y" : console.warn("设置 combo:true 必须要同步设置 fields")), A && (t.pure = A === "items" ? "items" : "y"), y && (t.label = Array.isArray(y) ? y.join(",") : y), g && (t.value = Array.isArray(g) ? g.join(",") : g), j && (t.option = j), t._ = Math.random().toString(16).slice(-8), t;
|
|
11
29
|
}
|
|
12
|
-
function
|
|
13
|
-
return
|
|
30
|
+
function D(r) {
|
|
31
|
+
return r.replace(/(?:^https?:\/\/|\/*$)/gi, "").toLowerCase();
|
|
14
32
|
}
|
|
15
|
-
class
|
|
33
|
+
class N {
|
|
16
34
|
req;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
enabledCache;
|
|
36
|
+
cachePrefix;
|
|
37
|
+
/**
|
|
38
|
+
* 设置请求的 endpoint 和请求工具来初始化 KMS Dsi,第三个可选参数 enabledCache 来激活本地缓存数据
|
|
39
|
+
*
|
|
40
|
+
* 当启用本地缓存数据时,会将成功返回的数据缓存到本地,并在后续 dsi 接口出现问题时以缓存数据返回
|
|
41
|
+
*
|
|
42
|
+
* 本地缓存有效期最长为 24 小时
|
|
43
|
+
*/
|
|
44
|
+
constructor(t, e, n = !1) {
|
|
45
|
+
const o = `https://${D(t)}`;
|
|
46
|
+
this.enabledCache = n, this.cachePrefix = o.replace(/^https:\/\//i, "").replace(/[./]/g, "-") + ":", this.req = e({ baseURL: o, timeout: 6e3, maxRetry: 2, retryInterval: 150 });
|
|
24
47
|
}
|
|
25
48
|
/**
|
|
26
|
-
* 查询 Dsi
|
|
49
|
+
* 查询 Dsi 数据接口并返回接口响应,可设置是否启用本地缓存以应对网络错误的情况
|
|
27
50
|
*/
|
|
28
|
-
async query({ key:
|
|
29
|
-
const { data:
|
|
30
|
-
|
|
51
|
+
async query({ key: t, query: e, guard: n, cache: o }) {
|
|
52
|
+
const { data: i } = await this.req.get(t, n, { params: P(e) }), a = (o ?? this.enabledCache) && C(), u = this.cachePrefix + t + (e.page ? `:p${e.page}` : "");
|
|
53
|
+
if (i !== null)
|
|
54
|
+
return a && localStorage.setItem(u, JSON.stringify([Date.now(), e, i])), i;
|
|
55
|
+
if (!a)
|
|
56
|
+
return i;
|
|
57
|
+
const f = localStorage.getItem(`${this.cachePrefix}${t}`);
|
|
58
|
+
if (f) {
|
|
59
|
+
const c = I(f, function(s) {
|
|
60
|
+
return Array.isArray(s) && s.length === 2 && typeof s[0] == "number" && n(s[1]);
|
|
61
|
+
});
|
|
62
|
+
if (c && J(e, c[1]) && c[0] + 24 * 3600 * 1e3 > Date.now())
|
|
63
|
+
return c[2];
|
|
64
|
+
}
|
|
65
|
+
return i;
|
|
31
66
|
}
|
|
32
67
|
}
|
|
68
|
+
function J(r, t) {
|
|
69
|
+
const e = Object.keys(r);
|
|
70
|
+
return e.length === Object.keys(t).length && e.every((n) => {
|
|
71
|
+
const o = r[n], i = t[n], a = typeof o;
|
|
72
|
+
return a === "string" || a === "number" || a === "boolean" || a === "bigint" ? o === i : JSON.stringify(o) === JSON.stringify(i);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
33
75
|
export {
|
|
34
|
-
|
|
76
|
+
N as KMSDsi
|
|
35
77
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seayoo-web/kms",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "agent for seayoo.kms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "index.ts",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@seayoo-web/request": "^3.4.0",
|
|
23
|
-
"@seayoo-web/
|
|
23
|
+
"@seayoo-web/utils": "4.1.3",
|
|
24
|
+
"@seayoo-web/scripts": "^3.1.2",
|
|
24
25
|
"@seayoo-web/tsconfig": "^1.0.5"
|
|
25
26
|
},
|
|
26
27
|
"peerDependencies": {
|
package/types/src/dsi.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ type QuerySortBaseField = "start" | "end" | "created" | "order" | "updated" | `d
|
|
|
4
4
|
type QuerySortField = QuerySortBaseField | `-${QuerySortBaseField}`;
|
|
5
5
|
type QuerySortWithDefault = QuerySortField | `${QuerySortField}|${QuerySortField}`;
|
|
6
6
|
type RecordRootField = "group" | "sn" | "start" | "end" | "order" | "data" | "created" | "updated";
|
|
7
|
-
/** spell-checker:ignore Mddhh, Mddhhmm */
|
|
8
7
|
export interface DsiQueryParam {
|
|
9
8
|
/**
|
|
10
9
|
* 指定获取某个配置,设定 sn 后,所有过滤以及分页参数均失效
|
|
@@ -149,13 +148,24 @@ export interface DsiQueryOption<T> {
|
|
|
149
148
|
query: DsiQueryParam;
|
|
150
149
|
/** 响应数据守卫函数 */
|
|
151
150
|
guard: (data: unknown) => data is T;
|
|
151
|
+
/** 开启自动缓存配置,开启后将缓存 dsi 数据,并在 dsi 接口错误时以缓存数据作为返回 */
|
|
152
|
+
cache?: boolean;
|
|
152
153
|
}
|
|
153
154
|
export declare class KMSDsi {
|
|
154
155
|
req: ReturnType<NetRequestFactory>;
|
|
155
|
-
|
|
156
|
+
private enabledCache;
|
|
157
|
+
private cachePrefix;
|
|
156
158
|
/**
|
|
157
|
-
*
|
|
159
|
+
* 设置请求的 endpoint 和请求工具来初始化 KMS Dsi,第三个可选参数 enabledCache 来激活本地缓存数据
|
|
160
|
+
*
|
|
161
|
+
* 当启用本地缓存数据时,会将成功返回的数据缓存到本地,并在后续 dsi 接口出现问题时以缓存数据返回
|
|
162
|
+
*
|
|
163
|
+
* 本地缓存有效期最长为 24 小时
|
|
164
|
+
*/
|
|
165
|
+
constructor(endpoint: string, request: NetRequestFactory, enabledCache?: boolean);
|
|
166
|
+
/**
|
|
167
|
+
* 查询 Dsi 数据接口并返回接口响应,可设置是否启用本地缓存以应对网络错误的情况
|
|
158
168
|
*/
|
|
159
|
-
query<T = unknown>({ key, query, guard }: DsiQueryOption<T>): Promise<T | null>;
|
|
169
|
+
query<T = unknown>({ key, query, guard, cache }: DsiQueryOption<T>): Promise<T | null>;
|
|
160
170
|
}
|
|
161
171
|
export {};
|