docs: define键改点链形式(esbuild成员表达式替换实测约束)+spec同步slug安全线32口径

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-18 09:55:29 +08:00
parent 1f39fe9e1b
commit 73af568c3f
2 changed files with 9 additions and 7 deletions
@@ -80,8 +80,8 @@ Expected: FAIL(`SANITIZE_RULE_VERSION` 不存在 / userinfo 未剥离)
```python
SANITIZE_RULE_VERSION = "v2"
# 三轨制(spec §2.4):①参数名黑名单整键删;②归因白名单提取保留;
# ③其余参数按值判别:安全模式(纯数字≤10位 / slug≤64)保留,其余删。
# 三轨制(spec §2.4,slug 安全线以本计划为准=32):①参数名黑名单整键删;
# ②归因白名单提取保留;③其余按值判别:纯数字≤10位或 slug≤32 保留,其余删。
URL_PARAM_DROP_PATTERNS = ("email", "phone", "mobile", "tel", "name", "user",
"token", "key", "password", "verif", "passwd", "idcard")
ATTRIBUTION_PARAM_WHITELIST = {"gclid", "gbraid", "wbraid", "fbclid", "msclkid",
@@ -363,16 +363,18 @@ import { execSync } from "node:child_process";
const buildId = execSync("git log -1 --format=%h-%cd --date=format:%Y%m%d%H%M").toString().trim();
await build({ entryPoints: ["src/index.ts"], bundle: true, minify: true, format: "iife",
outfile: "dist/v1.js", target: ["es2020"],
define: { __BUILD_ID__: JSON.stringify(buildId) } });
// define 键必须用点链:esbuild 只做精确表达式匹配,裸键 __BUILD_ID__
// 不会替换 globalThis.__BUILD_ID__ 成员访问(实测 0.24.2),build_id 将恒为 "unknown"
define: { "globalThis.__BUILD_ID__": JSON.stringify(buildId) } });
```
(fallback:git 失败时用 `"dev-" + Date.now()`,try/catch 包裹——构建环境无 git 不得挂。)
vitest.config.ts 同步注入(否则 index.ts 引用 BUILD_ID 在测试环境 undefined——有 ?? 兜底不炸,但注入后可断言真实值):
vitest.config.ts 同步注入(键同样用点链):
```ts
export default defineConfig({
define: { __BUILD_ID__: JSON.stringify("vitest") },
define: { "globalThis.__BUILD_ID__": JSON.stringify("vitest") },
test: { environment: "happy-dom" },
});
```
@@ -504,7 +506,7 @@ test("v1 兼容形态不再产生(新 SDK 恒 schema_version:2 信封 + 事件
```ts
import vectors from "../../server/tracker/tests/fixtures/sanitize_vectors.json";
test.each(vectors.vectors)("sanitizeUrl($input) → $expected", (v) => {
test.each(vectors.vectors)("sanitizeUrl vector", (v) => {
expect(sanitizeUrl(v.in)).toBe(v.out);
});
```