{"_id":"@ah-monica/browser","_rev":"6-478fdd48112ca4b37111b046174409a2","name":"@ah-monica/browser","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@ah-monica/browser","version":"0.1.0","license":"Apache-2.0","_id":"@ah-monica/browser@0.1.0","maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"}],"homepage":"https://github.com/Accel-Hack/monica#readme","bugs":{"url":"https://github.com/Accel-Hack/monica/issues"},"dist":{"shasum":"79e5de66326b33596160d306b234b7c3d016d17c","tarball":"https://registry.npmjs.org/@ah-monica/browser/-/browser-0.1.0.tgz","fileCount":14,"integrity":"sha512-1yuIcc30KtbPffife2HKuxEnxHf0qTuMGJW8r0FVy1C82I+BB2pTHW2hFkQmzwwrIYJgHueIQmj9Q9afEdIXbA==","signatures":[{"sig":"MEUCIQDrZgxUBRIV+cgwo+hmixmvGQ68deRXNcOXfbw32x05jwIgIPBFnNXK3+qSFFC8zs98JGvFEfc88/P4iP3I4avpVTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50743},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/monica.min.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./monica.min.js":"./dist/monica.min.js"},"scripts":{"test":"bun run build:core && bun test","build":"bun run build:core && tsc -p tsconfig.build.json && bun build ./dist/iife.js --outfile ./dist/monica.min.js --format=iife --minify","typecheck":"bun run build:core && tsc --noEmit","build:core":"bun run --filter @ah-monica/core build","pack:check":"bun run build && bun pm pack --dry-run","test:runtime":"bun run build && node test/runtime-smoke.mjs"},"_npmUser":{"name":"kkyosuke","email":"kawamura@accelhack.com"},"jsdelivr":"./dist/monica.min.js","repository":{"url":"git+https://github.com/Accel-Hack/monica.git","type":"git","directory":"sdk/typescript/browser"},"_npmVersion":"11.19.1","description":"Browser SDK for sending JavaScript errors to MONICA","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"@ah-monica/core":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.21","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/browser_0.1.0_1788089410890_0.01708101903985093","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ah-monica/browser","version":"0.2.0","license":"Apache-2.0","_id":"@ah-monica/browser@0.2.0","maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"},{"name":"namnam34","email":"namba_ryota@accelhack.com"}],"homepage":"https://github.com/Accel-Hack/monica-sdk-browser#readme","bugs":{"url":"https://github.com/Accel-Hack/monica-sdk-browser/issues"},"dist":{"shasum":"53c7a343a70092b8913fc55f5eca13835c723e2c","tarball":"https://registry.npmjs.org/@ah-monica/browser/-/browser-0.2.0.tgz","fileCount":14,"integrity":"sha512-pKDkk+WYB5RqI1OCuikXZxtCQeL/CDG6ekU2yl0f2WedhGSGQo98akeHf5vq9l3xv+qSvsSk2dzrRIg7tEXHmA==","signatures":[{"sig":"MEUCIEGZ08Vf7/OeE/DmmWVTz7UmEx3baoaQX5/gpURejmr3AiEAvln4TBDp5WlOgavydYhBkHB48OQFt6bvG1QiYIjEwwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCe5t+bAPz1G7G77FfNAHb7BGB/Wbt0Kht8N8tyRE3xLgIhAPfmEKpwbS+gbf+J3Dbk4QBOcPkukgcNkJhdsUHXJNZ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ah-monica%2fbrowser@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/monica.min.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./monica.min.js":"./dist/monica.min.js"},"gitHead":"77db1a7c0b5d3e5a4757f1b272423c04ab87fd87","scripts":{"test":"bun test","build":"bun run clean && tsc -p tsconfig.build.json && bun build ./dist/iife.js --outfile ./dist/monica.min.js --format=iife --minify","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","test:ts48":"bun run build && node node_modules/typescript-4-8/bin/tsc -p test/ts48/tsconfig.json","typecheck":"tsc --noEmit","pack:check":"bun run build && bun pm pack --dry-run","test:runtime":"bun run build && node test/runtime-smoke.mjs && webpack --config test/webpack/webpack.config.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a9e687c-5611-4414-b6e1-02bb74468d4c"}},"jsdelivr":"./dist/monica.min.js","repository":{"url":"git+https://github.com/Accel-Hack/monica-sdk-browser.git","type":"git","directory":"browser"},"_npmVersion":"11.19.1","description":"Browser SDK for sending JavaScript errors to MONICA","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ah-monica/core":"^0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","webpack":"^5.101.3","@types/bun":"^1.2.21","typescript":"^5.9.2","webpack-cli":"^6.0.1","typescript-4-8":"npm:typescript@4.8.4"},"_npmOperationalInternal":{"tmp":"tmp/browser_0.2.0_1789102881420_0.9876535592839937","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ah-monica/browser","version":"0.2.1","license":"Apache-2.0","_id":"@ah-monica/browser@0.2.1","maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"},{"name":"namnam34","email":"namba_ryota@accelhack.com"}],"homepage":"https://github.com/Accel-Hack/monica-sdk-browser#readme","bugs":{"url":"https://github.com/Accel-Hack/monica-sdk-browser/issues"},"dist":{"shasum":"857f8f1d6fee022ce678d9efff4c9fa3de14a67f","tarball":"https://registry.npmjs.org/@ah-monica/browser/-/browser-0.2.1.tgz","fileCount":14,"integrity":"sha512-r7NeCmkFP0XwaEK+Bll+dikLZZuMv/G53E4y1uYKgqrMyPqzYMZDI1YdOrSMLWgUz+GQw4nWKA70AeMgPFGz3g==","signatures":[{"sig":"MEYCIQDz4LS7IL/DlaarqE5yIweyOcLViiq/c1AfdZBQXX4HsQIhAP0b/IjIHLx9LM5Kl2/d+INuHpfcWXn2EQpWl4bEr8oA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBP9+ZlsCLi/1D43yCaNKYo/kJeN286+J4s2ugckBRb8AiEAsUZR5v12tNdNDPphi+42cbAUpWe9ig44WKRZfw9nvtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ah-monica%2fbrowser@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73781},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/monica.min.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./monica.min.js":"./dist/monica.min.js"},"gitHead":"1e3a5dfe6dd02de708946300b44d40ce5cf68c3a","scripts":{"test":"bun test","build":"bun run clean && tsc -p tsconfig.build.json && bun build ./dist/iife.js --outfile ./dist/monica.min.js --format=iife --minify","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","test:ts48":"bun run build && node node_modules/typescript-4-8/bin/tsc -p test/ts48/tsconfig.json","typecheck":"tsc --noEmit","pack:check":"bun run build && bun pm pack --dry-run","test:runtime":"bun run build && node test/runtime-smoke.mjs && webpack --config test/webpack/webpack.config.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a9e687c-5611-4414-b6e1-02bb74468d4c"}},"jsdelivr":"./dist/monica.min.js","repository":{"url":"git+https://github.com/Accel-Hack/monica-sdk-browser.git","type":"git","directory":"browser"},"_npmVersion":"11.19.1","description":"Browser SDK for sending JavaScript errors to MONICA","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ah-monica/core":"^0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","webpack":"^5.101.3","@types/bun":"^1.2.21","typescript":"^5.9.2","webpack-cli":"^6.0.1","typescript-4-8":"npm:typescript@4.8.4"},"_npmOperationalInternal":{"tmp":"tmp/browser_0.2.1_1789371162626_0.8062147176854066","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ah-monica/browser","version":"0.3.0","license":"Apache-2.0","_id":"@ah-monica/browser@0.3.0","maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"},{"name":"namnam34","email":"namba_ryota@accelhack.com"}],"homepage":"https://github.com/Accel-Hack/monica-sdk-browser#readme","bugs":{"url":"https://github.com/Accel-Hack/monica-sdk-browser/issues"},"dist":{"shasum":"59aa82efaae492bf7aee6f9f4938c54c09c53240","tarball":"https://registry.npmjs.org/@ah-monica/browser/-/browser-0.3.0.tgz","fileCount":14,"integrity":"sha512-w/YNiXJhx5LYcwKmLwPMWjW9xgd1qdnToYibrflFcRORBVm+mIoLRuiZWuksgyDsX8HYoYAaHfQzktbWA8X2IA==","signatures":[{"sig":"MEQCIB3+RJApjrm1jRmoUVDQlTs0bGWr/moAsA4o/lonRnxkAiAi6oleFCW7AzvKmfc9mbByjd7VNeuresT0cTk1ZQdZ9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFq1EiTOF9EWcFZhHI6bDNj4FIx6RwaTv3XcbnqwaXPZAiB+pbgZdAbnjJ5nB28x+tncfBeW+HdliEXh01ES6fJLxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ah-monica%2fbrowser@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75289},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/monica.min.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./monica.min.js":"./dist/monica.min.js"},"gitHead":"1519e14eafe52fbfd4d416934431a6f1f273267c","scripts":{"test":"bun test","build":"bun run clean && tsc -p tsconfig.build.json && bun build ./dist/iife.js --outfile ./dist/monica.min.js --format=iife --minify","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","test:ts48":"bun run build && node node_modules/typescript-4-8/bin/tsc -p test/ts48/tsconfig.json","typecheck":"tsc --noEmit","pack:check":"bun run build && bun pm pack --dry-run","test:runtime":"bun run build && node test/runtime-smoke.mjs && webpack --config test/webpack/webpack.config.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1a9e687c-5611-4414-b6e1-02bb74468d4c"}},"jsdelivr":"./dist/monica.min.js","repository":{"url":"git+https://github.com/Accel-Hack/monica-sdk-browser.git","type":"git","directory":"browser"},"_npmVersion":"11.19.1","description":"Browser SDK for sending JavaScript errors to MONICA","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ah-monica/core":"^0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","webpack":"^5.101.3","@types/bun":"^1.2.21","typescript":"^5.9.2","webpack-cli":"^6.0.1","typescript-4-8":"npm:typescript@4.8.4"},"_npmOperationalInternal":{"tmp":"tmp/browser_0.3.0_1790227468758_0.3383229178526743","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@ah-monica/browser@0.4.0","bugs":{"url":"https://github.com/Accel-Hack/monica-sdk-browser/issues"},"dist":{"shasum":"63e7b11754fec385ee0b81d08eb19d53dca3340b","tarball":"https://registry.npmjs.org/@ah-monica/browser/-/browser-0.4.0.tgz","fileCount":14,"integrity":"sha512-5tqFnzXHhkomm8tPTeznYdCchriTzIJEaD0kddbjsO2VdbyPBterpFLD12wts8JRI3V4KDolNtUTxNzw+AiGag==","signatures":[{"sig":"MEQCIFR8qag0kuDQT9nYK2xTBSor5ydj46/lgHb0RUB5DP/DAiB2790nxqyzBS7g8Dr6X2CxJDFUV7ZlgauMCJ0IUf/x2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDb77dk6MZW7l71hTHFpLnyK5W6Dy8BKBqUD6rvUTbghwIgEC+Ld079OEFK/yeOr4B4JGPOTcxfEUKNjAadpltc8so="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ah-monica%2fbrowser@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82774},"main":"./dist/index.js","name":"@ah-monica/browser","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/monica.min.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./monica.min.js":"./dist/monica.min.js"},"gitHead":"71c2ac0105a094bd4b5430669a76dc197125df13","license":"Apache-2.0","scripts":{"test":"bun test","build":"bun run clean && tsc -p tsconfig.build.json && bun build ./dist/iife.js --outfile ./dist/monica.min.js --format=iife --minify","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","test:ts48":"bun run build && node node_modules/typescript-4-8/bin/tsc -p test/ts48/tsconfig.json","typecheck":"tsc --noEmit","pack:check":"bun run build && bun pm pack --dry-run","test:runtime":"bun run build && node test/runtime-smoke.mjs && webpack --config test/webpack/webpack.config.mjs"},"version":"0.4.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"1a9e687c-5611-4414-b6e1-02bb74468d4c"}},"homepage":"https://github.com/Accel-Hack/monica-sdk-browser#readme","jsdelivr":"./dist/monica.min.js","repository":{"url":"git+https://github.com/Accel-Hack/monica-sdk-browser.git","type":"git","directory":"browser"},"_npmVersion":"11.19.1","description":"Browser SDK for sending JavaScript errors to MONICA","directories":{},"maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"},{"name":"namnam34","email":"namba_ryota@accelhack.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"@ah-monica/core":"^0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","webpack":"^5.101.3","@types/bun":"^1.2.21","typescript":"^5.9.2","webpack-cli":"^6.0.1","typescript-4-8":"npm:typescript@4.8.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser_0.4.0_1790671865746_0.36916950138343796"}}},"time":{"created":"2026-08-30T11:30:10.714Z","modified":"2026-09-29T08:51:06.207Z","0.1.0":"2026-08-30T11:30:11.028Z","0.2.0":"2026-09-11T05:01:21.509Z","0.2.1":"2026-09-14T07:32:42.716Z","0.3.0":"2026-09-24T05:24:28.853Z","0.4.0":"2026-09-29T08:51:05.842Z"},"bugs":{"url":"https://github.com/Accel-Hack/monica-sdk-browser/issues"},"license":"Apache-2.0","homepage":"https://github.com/Accel-Hack/monica-sdk-browser#readme","repository":{"url":"git+https://github.com/Accel-Hack/monica-sdk-browser.git","type":"git","directory":"browser"},"description":"Browser SDK for sending JavaScript errors to MONICA","maintainers":[{"name":"kkyosuke","email":"kawamura@accelhack.com"},{"name":"namnam34","email":"namba_ryota@accelhack.com"}],"readme":"# @ah-monica/browser\n\n素の JavaScript を含む browser アプリ向けの MONICA SDK。npm 向けの ESM と、\n`<script>` で読める IIFE 版を同じ package で配布する。\n\n## 対応環境\n\n`fetch` / `CompressionStream` / `AbortController` / `crypto.randomUUID` のある\nbrowser。型定義は TypeScript 4.8 以降で解決できる。\n\n## インストール\n\n```sh\nnpm install @ah-monica/browser\n```\n\nbundler を使わない場合は package 内の `dist/monica.min.js` を配信するか、CDN から\nversion を固定して読む。読み込むとグローバルに `Monica` が生える。\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@ah-monica/browser@0.2.0/dist/monica.min.js\"></script>\n```\n\n## 初期化\n\n```js\nimport * as Monica from \"@ah-monica/browser\";\n\nMonica.init({\n  dsn: window.MONICA_DSN,\n  environment: \"production\",\n  release: window.APP_RELEASE,\n  screenId: \"admin-users\",\n  route: \"/admin/users/{id}\", // 実 pathname ではなく、安全な template だけを明示\n  beforeSend(event) {\n    delete event.user;\n    if (event.request) delete event.request.headers;\n    return event;\n  },\n});\n```\n\nDSN の key には browser へ公開してよい public key（`mpk_` 始まり）だけを指定する。\nsecret key（`msk_` 始まり）、key の無い DSN、`https` 以外の DSN（`localhost` と\n`127.0.0.1` の `http` だけ例外）は `init()` が `TypeError` を投げる。\n\n`dsn` が未指定・`null`・空文字（空白だけも含む）なら、例外を出さずに何も送らない\nclient を返す。自動収集も仕掛けず、`captureException()` などは `null` を返す。\n\n`<script>` 版も同じ options を取る。\n\n```html\n<script>\n  Monica.init({\n    dsn: window.MONICA_DSN,\n    environment: \"production\",\n    screenId: \"checkout\",\n  });\n</script>\n```\n\n## 使い方\n\n```js\nMonica.captureException(error);\nMonica.captureMessage(\"checkout retried\", \"warning\");\n\nMonica.setUser({ id: \"opaque-user-id\" }); // null で解除\nMonica.addBreadcrumb({ category: \"ui\", message: \"submit clicked\" });\n\nMonica.withScope((scope) => {\n  scope.setTag(\"feature\", \"checkout\");\n  scope.setContext(\"cart\", { items: 3 });\n  Monica.captureException(error);\n});\n\nawait Monica.flush();  // 既定 2000 ms 待つ\nawait Monica.close();  // 自動収集を外して送り切る\n```\n\n`captureException()` / `captureMessage()` は event id を Promise で返す（送らなかった\n場合は `null`）。`captureException(error, context)` の第 2 引数と\n`captureMessage(message, level, context)` の第 3 引数で `user` / `tags` / `contexts` /\n`breadcrumbs` / `request` / `fingerprint` を 1 件だけ上書きできる（`captureException()`\nは `level` も。`captureMessage()` の `level` は第 2 引数）。\n\nmodule の関数は `init()` が作った client を使う。`init()` を呼ぶ前に呼ぶと例外になり、\n`init()` を呼び直すと前の client は閉じる。client を自分で持つ場合は\n`createBrowserClient()` を使う（`init()` と同じ options を取り、グローバルの client は\n置き換えない）。React 統合はこの client を [`@ah-monica/react`](https://github.com/Accel-Hack/monica-sdk-browser/tree/main/react) に渡す。\n\n```js\nimport { createBrowserClient } from \"@ah-monica/browser\";\n\nconst monica = createBrowserClient({ dsn: window.MONICA_DSN, environment: \"production\" });\n```\n\nqueue は `flushIntervalMs` ごとに送るが、`level` が `fatal` の event と、queue が\n`batchSize` に達したときはすぐ送る。tab が隠れたときも自動で flush する。\n\n## オプション\n\n`init()` / `createBrowserClient()` に渡す `BrowserClientOptions`。\n\n| option | 型 | default | 説明 |\n| --- | --- | --- | --- |\n| `dsn` | `string \\| null` | なし | `https://<mpk_ key>@<host>/...`。送信先は origin + `/v1/envelope`。未指定・空なら何も送らない |\n| `environment` | `string` | （必須） | 空文字不可、128 文字以内 |\n| `release` | `string` | なし | event の release。build 時に git の commit SHA を埋め込み（Vite の `define` や env など）、server 側 SDK と同じ値にすると両方の event が揃う |\n| `screenId` | `string` | なし | 全 event に `screen.id` tag として付く |\n| `route` | `string` | なし | `/form/follow/{token}` のような path template。`/` 始まりで `//` 始まりや `?` `#` を含まないこと。`request.url` が origin + この値になる |\n| `sampleRate` | `number` | `1` | 0〜1。event 単位のサンプリング |\n| `maxBreadcrumbs` | `number` | `50` | 保持する breadcrumb の上限 |\n| `maxQueueSize` | `number` | `100` | 送信待ち queue の上限。溢れると古い方から捨てて discarded に勘定する |\n| `batchSize` | `number` | `30` | 1 envelope に載せる item 数。`maxQueueSize` と 100 のうち小さい方に丸める |\n| `flushIntervalMs` | `number` | `5000` | queue を自動で送る間隔 |\n| `requestTimeoutMs` | `number` | `2000` | 1 リクエストの timeout。tab が隠れたときの自動 flush の待ち時間にも使う |\n| `maxRetries` | `number` | `2` | 429 / 5xx / 通信エラーの再試行回数 |\n| `dedupeWindowMs` | `number` | `1000` | 同じエラーを捨てる窓。`0` で無効 |\n| `autoCapture` | `boolean` | `true` | `window.onerror` / `unhandledrejection` / XHR breadcrumb / 自動 flush を仕掛けるか |\n| `captureConsoleErrors` | `boolean` | `false` | `console.error` を event にするか |\n| `beforeSend` | `(item, hint) => item \\| null \\| Promise<…>` | なし | capture のたびに、queue へ積む前に item を書き換える。`null` を返すと捨てる |\n| `onDiagnostic` | `(diagnostic) => void \\| null \\| false` | なし（= `console.warn`） | 拒否された送信の通知先。`null` / `false` で無効化 |\n| `fetch` | `FetchLike` | `window.fetch` | 送信に使う fetch |\n| `window` | `Window` | グローバルの `window` | 自動収集を仕掛ける window |\n| `now` | `() => Date` | `() => new Date()` | 時刻の取得 |\n\n## 自動で収集するもの\n\n- `window.onerror` と `unhandledrejection`（`autoCapture: true` のとき）\n- 手動の `captureException()` / `captureMessage()`\n- status が 0 または 400 以上の `XMLHttpRequest` を breadcrumb に記録する。URL は\n  origin だけ、あわせて method・status・所要時間を残す\n- page URL は origin のみ（`route` を指定したときだけ template を足す）、`screen.id`\n  tag、`release`、stack frame（`node_modules` と拡張機能由来は `in_app: false`）\n- 同じエラーは `dedupeWindowMs` の窓で 1 回だけ送る\n- error の送信中に起きたエラーと、送信そのものの失敗は自動収集へ戻さない\n\n`console.error` の収集は既定 OFF で、`captureConsoleErrors: true` のときだけ拾う。\nuser は自動検出せず、`setUser()` を呼んだ場合だけ event に入る。request body、\nCookie、`Authorization` は収集しない。stack frame の URL からは user info・query・\nfragment を落とす。現在の pathname は token や個人識別子を含み得るので収集しない。\n診断に route が必要なら、`route: '/form/follow/{token}'` のように実値を含まない\ntemplate を明示する。アプリ固有の個人情報は `beforeSend` で allowlist 方式に落とす。\n\n## 稼働確認\n\nerror が無い期間も MONICA が「この環境の SDK は動いている」と分かるように、稼働確認を送る。\n\n- 送るもの: `client_report` item 1 件だけの envelope（`trigger: \"start\"`）。endpoint・\n  認証・再試行（`maxRetries`）は error と同じ\n- 送る時: `createBrowserClient()` / `init()` を呼んだとき（= ページ読み込み時）と、tab や\n  WebView が再び可視になったとき（`visibilitychange` で `visible`）に判定する。タイマーは\n  持たず、SPA の画面遷移では判定しない。`autoCapture: false` でも送る。`dsn` が無い client は\n  送らない\n- 送らない時: 直近 1 日に `202` を受けた envelope があるとき。error の envelope の `202`\n  でも期限が伸びる。判定した時点から次の 1 日を数えるので、送信に失敗しても次の判定まで\n  送り直さない\n- 状態の置き場所: `localStorage` のキー `monica.presence.<DSN の API key>` に JSON\n  （`intervalStartedAt` と、MONICA から届いた `intervalMs` / `sampleRate`）で持つ。\n  同じ origin の tab 同士は状態を共有し、DSN の API key が違う client 同士は共有しない\n- `localStorage` が使えない環境（private mode、site data のブロックなど）では\n  `sessionStorage`、それも使えなければメモリに持つ。`sessionStorage` なら tab ごと、\n  メモリならページ読み込みのたびに送る\n- WebView に埋め込む場合: 読み込みが 1 回きりの SPA でも、アプリが前面に戻って WebView が\n  可視になるたびに判定する。DOM storage が無効（Android の `setDomStorageEnabled(false)` など）\n  だとメモリに持つので、読み込みのたびに送る\n- MONICA 側の設定: `202` の応答 header `X-Monica-Presence-Interval-Ms`（間隔）と\n  `X-Monica-Presence-Sample-Rate`（送る端末の割合）を保存し、次の判定から使う。既定は\n  1 日、間引かない。SDK に設定項目は無く、MONICA の project 設定で変わる\n\n## 送信結果と診断\n\ningest が envelope を拒否すると、既定では `422`（envelope の形が契約と違う）、\n`401`（key が不正・失効。以後の送信を止める）、`413`（経路上のサイズ上限）を\n`console.warn` に 1 行で出す。`onDiagnostic` を渡すと警告の代わりにその関数へ渡り、\n`null` / `false` で無効になる。\n\n`flush()` / `close()` の戻り値には `accepted` / `discarded` / `remaining` に加えて、\n拒否があったときだけ `status` / `issues` / `error` / `stopped` と、その flush で\n拒否された全件の `diagnostics` が載る。\n\n警告の読み方、status ごとの扱い、field の詳細は\n[TROUBLESHOOTING.md](https://github.com/Accel-Hack/monica-sdk-browser/blob/main/TROUBLESHOOTING.md)。\n\n## 制約\n\n- DSN に public key（`mpk_`）以外を渡すと `init()` が失敗する\n- client の生成には `window` と `fetch` が要る。SSR では初期化しない\n- breadcrumb を取るのは `XMLHttpRequest` だけ。`fetch()` は hook しない\n- envelope は gzip 後 1 MiB、展開後 8 MiB、item 100 件、stack frame 200 件が上限。\n  SDK は送信前に JSON を 1,000,000 byte 未満に抑えて分割する\n- 例外の `cause` chain は 10 件までたどる\n\n## ライセンス\n\nApache-2.0\n","readmeFilename":"README.md"}