/** * http + IP(보안 문맥 아님)에서 비는 crypto.randomUUID 대체 검증 — CAD · 앱 본체 두 벌. * 실행: node --experimental-strip-types resources/tester/cad/random-uuid-polyfill.test.ts */ import assert from 'node:assert/strict'; const V4 = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/; const native = crypto.randomUUID; for (const path of [ '../../../B07_DesignDetail/openwebcad/src/random-uuid-polyfill.ts', '../../../A00_Common/random_uuid_polyfill.ts', ]) { // biome-ignore lint: 시험 — 보안 문맥 아닌 브라우저처럼 비움 (crypto as any).randomUUID = undefined; await import(`${path}?${Math.random()}`); const ids = Array.from({ length: 200 }, () => crypto.randomUUID()); assert.ok(ids.every((id) => V4.test(id)), `${path}: v4 모양`); assert.equal(new Set(ids).size, ids.length, `${path}: 안 겹침`); } // 이미 있으면 그대로 crypto.randomUUID = native; await import(`../../../A00_Common/random_uuid_polyfill.ts?${Math.random()}`); assert.equal(crypto.randomUUID, native, '원래 것 유지'); console.log('random-uuid 대체 시험 통과');