opencode-lobster-auth 0.1.1 → 0.1.2
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/README.md +181 -175
- package/README.zh-CN.md +156 -151
- package/index.mjs +210 -191
- package/lib/auth-login.mjs +154 -131
- package/lib/constants.mjs +41 -41
- package/lib/jwt.mjs +34 -34
- package/lib/sse.mjs +67 -67
- package/lib/usage.mjs +41 -41
- package/package.json +1 -1
package/lib/usage.mjs
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
// magpie 的 auth.usage 返回形状。数据来自两个端点:
|
|
2
|
-
// GET /api/user/quota 免费额度与订阅状态
|
|
3
|
-
// GET /api/user/profile-summary 昵称、剩余积分明细
|
|
4
|
-
|
|
5
|
-
const round = (n, d = 2) => {
|
|
6
|
-
const p = 10 ** d
|
|
7
|
-
return Math.round(Number(n) * p) / p
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export function usageFrom(quota, profile, signIn) {
|
|
11
|
-
const q = quota ?? {}
|
|
12
|
-
const p = profile ?? {}
|
|
13
|
-
const out = { windows: [] }
|
|
14
|
-
|
|
15
|
-
if (q.planName) out.plan = String(q.planName)
|
|
16
|
-
if (p.nickname) out.user = String(p.nickname)
|
|
17
|
-
|
|
18
|
-
const left = Number(p.totalCreditsRemaining)
|
|
19
|
-
out.balance = Number.isFinite(left) && left > 0 ? `${round(left)} 点数` : ""
|
|
20
|
-
|
|
21
|
-
const total = Number(q.freeCreditsTotal)
|
|
22
|
-
const used = Number(q.freeCreditsUsed)
|
|
23
|
-
if (Number.isFinite(total) && total > 0) {
|
|
24
|
-
const u = Number.isFinite(used) ? used : 0
|
|
25
|
-
out.windows.push({
|
|
26
|
-
name: "免费额度",
|
|
27
|
-
used: round((u / total) * 100),
|
|
28
|
-
display: `${round(u, 1)} / ${round(total, 1)} 免费积分`,
|
|
29
|
-
aside: !!q.freeCreditsExpired,
|
|
30
|
-
})
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const dates = (Array.isArray(p.creditItems) ? p.creditItems : [])
|
|
34
|
-
.map((c) => c?.expiresAt)
|
|
35
|
-
.filter((d) => typeof d === "string" && d !== "")
|
|
36
|
-
.sort()
|
|
37
|
-
if (dates.length > 0) out.until = dates[0]
|
|
38
|
-
|
|
39
|
-
if (signIn) out.signIn = signIn
|
|
40
|
-
return out
|
|
41
|
-
}
|
|
1
|
+
// magpie 的 auth.usage 返回形状。数据来自两个端点:
|
|
2
|
+
// GET /api/user/quota 免费额度与订阅状态
|
|
3
|
+
// GET /api/user/profile-summary 昵称、剩余积分明细
|
|
4
|
+
|
|
5
|
+
const round = (n, d = 2) => {
|
|
6
|
+
const p = 10 ** d
|
|
7
|
+
return Math.round(Number(n) * p) / p
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function usageFrom(quota, profile, signIn) {
|
|
11
|
+
const q = quota ?? {}
|
|
12
|
+
const p = profile ?? {}
|
|
13
|
+
const out = { windows: [] }
|
|
14
|
+
|
|
15
|
+
if (q.planName) out.plan = String(q.planName)
|
|
16
|
+
if (p.nickname) out.user = String(p.nickname)
|
|
17
|
+
|
|
18
|
+
const left = Number(p.totalCreditsRemaining)
|
|
19
|
+
out.balance = Number.isFinite(left) && left > 0 ? `${round(left)} 点数` : ""
|
|
20
|
+
|
|
21
|
+
const total = Number(q.freeCreditsTotal)
|
|
22
|
+
const used = Number(q.freeCreditsUsed)
|
|
23
|
+
if (Number.isFinite(total) && total > 0) {
|
|
24
|
+
const u = Number.isFinite(used) ? used : 0
|
|
25
|
+
out.windows.push({
|
|
26
|
+
name: "免费额度",
|
|
27
|
+
used: round((u / total) * 100),
|
|
28
|
+
display: `${round(u, 1)} / ${round(total, 1)} 免费积分`,
|
|
29
|
+
aside: !!q.freeCreditsExpired,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const dates = (Array.isArray(p.creditItems) ? p.creditItems : [])
|
|
34
|
+
.map((c) => c?.expiresAt)
|
|
35
|
+
.filter((d) => typeof d === "string" && d !== "")
|
|
36
|
+
.sort()
|
|
37
|
+
if (dates.length > 0) out.until = dates[0]
|
|
38
|
+
|
|
39
|
+
if (signIn) out.signIn = signIn
|
|
40
|
+
return out
|
|
41
|
+
}
|