{"_id":"@ab-test-sdk/sdk","_rev":"2-91ec8b80a9b0bb24a0544efdd786feba","name":"@ab-test-sdk/sdk","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ab-test-sdk/sdk","version":"0.1.0","_id":"@ab-test-sdk/sdk@0.1.0","maintainers":[{"name":"hogan_kai","email":"ooss87968863@gmail.com"}],"dist":{"shasum":"aa3e4f873af5ee0288df3006e73223de4a67dcc3","tarball":"https://registry.npmjs.org/@ab-test-sdk/sdk/-/sdk-0.1.0.tgz","fileCount":8,"integrity":"sha512-sqGJSF1LzxrnX98Lpg7gKU1CPgh3BGpoAc/EtgVkK1cO69EDNTCHMZd5pzkWjn/v0/O8vwJKQxLvNZIvABlVwQ==","signatures":[{"sig":"MEUCIQD5y734EcaMDzcYaF87FtS0k2VyGgXDLdzQQman72D6eAIgU92/7OFHEty33thoZftm54MjHtEkUvIRgMCxiEE1CGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68726},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"216ad5b202b280836226554157f08bf1ca5c970a","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest"},"_npmUser":{"name":"hogan_kai","email":"ooss87968863@gmail.com"},"_npmVersion":"11.9.0","description":"A/B Test SDK — codemod-based stable identity system","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@supabase/supabase-js":"^2.49.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","dotenv":"^17.4.2","vitest":"^3.2.1","typescript":"^5.8.3","@types/node":"^25.9.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1780579482170_0.4355239584364947","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ab-test-sdk/sdk","version":"0.1.1","description":"A/B Test SDK — codemod-based stable identity system","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest"},"dependencies":{"@supabase/supabase-js":"^2.49.8"},"devDependencies":{"@types/node":"^25.9.1","dotenv":"^17.4.2","jsdom":"^29.1.1","tsup":"^8.4.0","typescript":"^5.8.3","vitest":"^3.2.1"},"gitHead":"46852c71b524cbac7b99bd63d5cb3b97e6314ce3","_id":"@ab-test-sdk/sdk@0.1.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-mnntWT6JJ38vTVVQarBOtJotAaEz4G6oFuTW7HSuNZDMqQHYLddQvexp8ilnwJ5jYTnbjMntaj6/LUDruznuRw==","shasum":"2793e6a8436a42adc3e9e6f9a3c930ee600f5e8a","tarball":"https://registry.npmjs.org/@ab-test-sdk/sdk/-/sdk-0.1.1.tgz","fileCount":8,"unpackedSize":69427,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDirY1ehXCgEShC84XJJhgHzscE6DFWDCVkNCDrTRr5jwIhAP6Y/Shd4LCISlq7cHkkPdGZrM1Vmlg3lQFyzlCYncSQ"}]},"_npmUser":{"name":"hogan_kai","email":"ooss87968863@gmail.com"},"directories":{},"maintainers":[{"name":"hogan_kai","email":"ooss87968863@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.1_1780887301465_0.460820520606263"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T13:24:42.043Z","modified":"2026-06-08T02:55:01.741Z","0.1.0":"2026-06-04T13:24:42.310Z","0.1.1":"2026-06-08T02:55:01.630Z"},"description":"A/B Test SDK — codemod-based stable identity system","maintainers":[{"name":"hogan_kai","email":"ooss87968863@gmail.com"}],"readme":"# @ab-test-sdk/sdk\n\nA/B Test SDK —— 在你的 Vue 3 網站上重現實驗變更、追蹤成效。\n\n採 **Codemod-based 穩定身份系統**：實驗以元素上的 `data-ab` id 定位，id 由 codemod 一次性寫進 source code、跨 build 不變，因此網站改版後實驗不會靜默失效（這正是傳統 CSS selector 方案的痛點）。\n\n> 完整架構與設計說明見 [專案 README](https://github.com/Hogan-K/A-B-Test)。\n\n## 安裝\n\n```bash\npnpm add @ab-test-sdk/sdk\n```\n\n## 使用\n\n```ts\nimport { init } from '@ab-test-sdk/sdk'\n\ninit({ apiKey: 'your-site-api-key' })\n```\n\n`apiKey` 是你在後台為該網站申請的識別碼。SDK 啟動後會：驗證網站 → 依目前路徑比對實驗 → 依權重分配 variant（localStorage sticky，同一使用者固定看同一版）→ 套用變更 → 追蹤事件（頁面停留 / 元素點擊）。\n\n路由偵測用 History API hook（`pushState` / `replaceState` / `popstate` / `hashchange`），**不綁定特定 router**。\n\n## 前置：元素要有 `data-ab` 才能被實驗定位\n\nSDK 靠元素上的 `data-ab` id 來套用變更與追蹤——**只要元素掛上 `data-ab`，就能對它做實驗**。\n\n手動加也行，但建議用伴隨的 CLI [`@ab-test-sdk/codemod`](https://www.npmjs.com/package/@ab-test-sdk/codemod) 掃描 `.vue` 一次自動掛上：\n\n```bash\npnpm add -D @ab-test-sdk/codemod\npnpm exec ab-codemod inject src\n```\n\n注入規則與限制見 codemod 說明。\n\n## 限制\n\n- 元素需先有 `data-ab`，未注入的元素無法被定位。\n- 含動態文字（`{{ }}` / `v-text`）的元素會被標記 `data-ab-text-locked`，不可套用改文字的變更。\n- 純前端 SDK：頁面載入時原始版本可能短暫閃現（anti-flicker 為本質限制）。\n- 內含 `@supabase/supabase-js`，會增加最終 bundle 體積，請評估。\n\n## 相關\n\n- CLI：[`@ab-test-sdk/codemod`](https://www.npmjs.com/package/@ab-test-sdk/codemod)\n- 原始碼 / 架構：[github.com/Hogan-K/A-B-Test](https://github.com/Hogan-K/A-B-Test)\n","readmeFilename":"README.md"}