fix: Task2 质量修复(TS2774/降级分支测试/跨平台checksize/显式lib)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-15 11:39:34 +08:00
parent 15853f20b3
commit cda80b1605
4 changed files with 13 additions and 3 deletions
+2 -1
View File
@@ -6,7 +6,8 @@
"scripts": {
"build": "node build.mjs",
"test": "vitest run",
"checksize": "node build.mjs && gzip -c dist/v1.js | wc -c"
"typecheck": "tsc --noEmit",
"checksize": "node build.mjs && node -e \"const z=require('zlib'),f=require('fs');console.log('gzip bytes:',z.gzipSync(f.readFileSync('dist/v1.js')).length)\""
},
"devDependencies": {
"esbuild": "^0.24.0",
+2 -1
View File
@@ -1,5 +1,6 @@
export function uuid(): string {
if (globalThis.crypto?.randomUUID) return crypto.randomUUID();
const c = globalThis.crypto as Crypto | undefined;
if (c?.randomUUID) return c.randomUUID();
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
const r = (Math.random() * 16) | 0;
return (c === "x" ? r : (r & 0x3) | 0x8).toString(16);
+8 -1
View File
@@ -1,4 +1,4 @@
import { describe, it, expect } from "vitest";
import { describe, it, expect, vi } from "vitest";
import { uuid } from "../src/util";
describe("uuid", () => {
it("生成 36 位且不重复", () => {
@@ -6,4 +6,11 @@ describe("uuid", () => {
expect(a).toMatch(/^[0-9a-f-]{36}$/);
expect(a).not.toBe(b);
});
it("Math.random 降级分支:格式正确且唯一", () => {
vi.stubGlobal("crypto", {});
const a = uuid(), b = uuid();
expect(a).toMatch(/^[0-9a-f-]{36}$/);
expect(a).not.toBe(b);
vi.unstubAllGlobals();
});
});
+1
View File
@@ -1,6 +1,7 @@
{
"compilerOptions": {
"target": "ES2018",
"lib": ["ES2018", "DOM"],
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,