{"_id":"@edv4h/usketch-plugin-session","_rev":"6-20cbf2b24ef09b2ccba27e535921e25a","name":"@edv4h/usketch-plugin-session","dist-tags":{"latest":"0.2.5"},"versions":{"0.2.0":{"name":"@edv4h/usketch-plugin-session","version":"0.2.0","license":"MIT","_id":"@edv4h/usketch-plugin-session@0.2.0","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"homepage":"https://github.com/EdV4H/usketch#readme","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"4fd96cf2206993b63cec22ef6f07be7546efc455","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.0.tgz","fileCount":22,"integrity":"sha512-vX+ex3xfP100qK4QzbmmqekeNLzo2nsC7uOTYzgsTBGN0ciJPDqBuNxAr+3nLmT4kGIwsf3R6StOLFcn1q9xVA==","signatures":[{"sig":"MEUCIBhdIXCg28q42IGF5admlYZwe0pFhALV1iYs1ppF7kYzAiEA+w/K0SV+clHfESh5zAUC7ZEqiJwCW/GdO1th7Kz+W78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29155},"main":"./dist/index.js","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"myuske","email":"circlemountain.ym@gmail.com"},"_resolved":"/tmp/041ea9e465aef0e7086e86f1970a02a0/edv4h-usketch-plugin-session-0.2.0.tgz","_integrity":"sha512-vX+ex3xfP100qK4QzbmmqekeNLzo2nsC7uOTYzgsTBGN0ciJPDqBuNxAr+3nLmT4kGIwsf3R6StOLFcn1q9xVA==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"11.16.0","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@edv4h/usketch-sync":"1.2.0","@edv4h/usketch-shared":"4.10.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"tmp":"tmp/usketch-plugin-session_0.2.0_1786365374806_0.12701413590942212","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@edv4h/usketch-plugin-session","version":"0.2.1","license":"MIT","_id":"@edv4h/usketch-plugin-session@0.2.1","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"homepage":"https://github.com/EdV4H/usketch#readme","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"716a7e698d86477625fc751dd635cff507da8c2f","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.1.tgz","fileCount":23,"integrity":"sha512-zw751G2+Xx6hP0dvFEs+IvNuhqaf4oVb2utqfH4AR2GqZY8S9tEA+Asi4S7UgGPW5HIlKCF7JrnEYVO4etXqWA==","signatures":[{"sig":"MEUCICeN20PXjmyTrTrhmZ8wwoDrbu+8Ug36NrkhvdeOJLHqAiEA1F5PlAE43VN1aVeJqTuJFPLgrmVqsVu7WU7iviC5FfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33173},"main":"./dist/index.js","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"myuske","email":"circlemountain.ym@gmail.com"},"_resolved":"/tmp/69931c2e9638b3a59ffe9e0d5b5f1c36/edv4h-usketch-plugin-session-0.2.1.tgz","_integrity":"sha512-zw751G2+Xx6hP0dvFEs+IvNuhqaf4oVb2utqfH4AR2GqZY8S9tEA+Asi4S7UgGPW5HIlKCF7JrnEYVO4etXqWA==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"11.16.0","description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@edv4h/usketch-sync":"1.2.0","@edv4h/usketch-shared":"4.11.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"tmp":"tmp/usketch-plugin-session_0.2.1_1786535633332_0.8032653973164807","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@edv4h/usketch-plugin-session","version":"0.2.2","license":"MIT","_id":"@edv4h/usketch-plugin-session@0.2.2","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"homepage":"https://github.com/EdV4H/usketch#readme","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"d78bfb2d633e229113bbc4dd21bd08bae7d8c397","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.2.tgz","fileCount":23,"integrity":"sha512-soq6vi6SfF6rdq+TQd01zH11l5RmGpguejJlG0wDaCzIaS/xlBWlDihAl0zwIlZ5M28xG9vMNQq/uG1n4/oLNg==","signatures":[{"sig":"MEQCIGFuAKpeJ6pD14hzilfI0c29n/JEzZkQW20nsW9LmAOYAiB8XhxyrVHUX/VgoTYxMrDt5LDWgvDUeTXGIQLLq+2ESg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33173},"main":"./dist/index.js","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"myuske","email":"circlemountain.ym@gmail.com"},"_resolved":"/tmp/8060de57c15daa8243e572d61d0d56c4/edv4h-usketch-plugin-session-0.2.2.tgz","_integrity":"sha512-soq6vi6SfF6rdq+TQd01zH11l5RmGpguejJlG0wDaCzIaS/xlBWlDihAl0zwIlZ5M28xG9vMNQq/uG1n4/oLNg==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"11.17.0","description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@edv4h/usketch-sync":"1.3.0","@edv4h/usketch-shared":"4.11.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"tmp":"tmp/usketch-plugin-session_0.2.2_1786687720498_0.5865702262581332","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@edv4h/usketch-plugin-session","version":"0.2.3","license":"MIT","_id":"@edv4h/usketch-plugin-session@0.2.3","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"homepage":"https://github.com/EdV4H/usketch#readme","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"cf8787b3d0e987fba8f46dcd77b7bd3e3ea3a073","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.3.tgz","fileCount":23,"integrity":"sha512-LjsucwANppIIWkwdflfUaKTCTzakmc28lTACFAcePFAYbzgrqip6CW7TAAseH2Dmo5/VaprX0CNlifnuj2196w==","signatures":[{"sig":"MEUCIAr8eU4oiBwwRDR3D4rAd5g2UQZGAHR4mtqhNmGS7p6LAiEAlFu1l63vDeolGn3B2px50Y5zDsQ9FP6g7e1Ger7NBdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33173},"main":"./dist/index.js","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"myuske","email":"circlemountain.ym@gmail.com"},"_resolved":"/tmp/9f290e6c24c6011f450d8b1f0d7a437f/edv4h-usketch-plugin-session-0.2.3.tgz","_integrity":"sha512-LjsucwANppIIWkwdflfUaKTCTzakmc28lTACFAcePFAYbzgrqip6CW7TAAseH2Dmo5/VaprX0CNlifnuj2196w==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"11.17.0","description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@edv4h/usketch-sync":"1.3.0","@edv4h/usketch-shared":"4.12.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"tmp":"tmp/usketch-plugin-session_0.2.3_1787292662485_0.5969356147887444","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@edv4h/usketch-plugin-session","version":"0.2.4","license":"MIT","_id":"@edv4h/usketch-plugin-session@0.2.4","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"homepage":"https://github.com/EdV4H/usketch#readme","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"128e23e71d52d17fa7ea65e443c420410a3c8b0f","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.4.tgz","fileCount":23,"integrity":"sha512-VS3pjaRroQRcvYQ45CgufgdEOu0dLUkzSXSvWHoCYLbwfEr5fNpp/FTsIVq89huZaK38NZu3m2INi1EQyd1J+A==","signatures":[{"sig":"MEUCIBGCL5TKDo6giUgZnfIYc7l8zIlvi0cYv+iWTSk7KkxBAiEAwTna6t/+uP6WdlWNtB7pA+4rjXFgr2bLhpO/2odfgbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@edv4h%2fusketch-plugin-session@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33173},"main":"./dist/index.js","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b082a1b5-9f0e-4040-a4b4-6ef2654b132b"}},"_resolved":"/tmp/8ebf6dba0eb204bf4a061b69b0cd6367/edv4h-usketch-plugin-session-0.2.4.tgz","_integrity":"sha512-VS3pjaRroQRcvYQ45CgufgdEOu0dLUkzSXSvWHoCYLbwfEr5fNpp/FTsIVq89huZaK38NZu3m2INi1EQyd1J+A==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"12.0.2","description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@edv4h/usketch-sync":"1.3.0","@edv4h/usketch-shared":"4.13.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"tmp":"tmp/usketch-plugin-session_0.2.4_1788762612677_0.3051573536952479","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"_id":"@edv4h/usketch-plugin-session@0.2.5","bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"dist":{"shasum":"0d8360b02416a4170be10cde3e4cb8cffe2305a7","tarball":"https://registry.npmjs.org/@edv4h/usketch-plugin-session/-/usketch-plugin-session-0.2.5.tgz","fileCount":23,"integrity":"sha512-Krvbn2Vkkt7xMbBSeIJZfbzP0nR6xyBUfp3Ta3F4eZN2PSBZsmVZ2Fx2EcJ6axeCk6+2LJDSra82IEMn0epjhg==","signatures":[{"sig":"MEQCIAGssOH4sX/x1tQfB/A5aNDvV6O/m7tPRQ7wM5FArNPnAiBuwDXP4r2FvFnDHhSI9Qv6Qu/mmREr/X1aUHVHRX6BJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAj8SP7jriPftyR3sQfk+4YONX3n1EDQlsYqpjrZQustAiAFmcoehdmi2i7mZl9fQPxb2F04ZQyJmn0z0A3abJ03Jw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@edv4h%2fusketch-plugin-session@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33173},"main":"./dist/index.js","name":"@edv4h/usketch-plugin-session","type":"module","_from":"file:edv4h-usketch-plugin-session-0.2.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts"}},"license":"MIT","scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"version":"0.2.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b082a1b5-9f0e-4040-a4b4-6ef2654b132b"}},"homepage":"https://github.com/EdV4H/usketch#readme","_resolved":"/tmp/b70b824d18808de79909be2d6e7121fc/edv4h-usketch-plugin-session-0.2.5.tgz","_integrity":"sha512-Krvbn2Vkkt7xMbBSeIJZfbzP0nR6xyBUfp3Ta3F4eZN2PSBZsmVZ2Fx2EcJ6axeCk6+2LJDSra82IEMn0epjhg==","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"_npmVersion":"12.1.0","description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","directories":{},"maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@edv4h/usketch-sync":"1.3.0","@edv4h/usketch-shared":"4.14.0","@edv4h/usketch-session-protocol":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.11","typescript":"7.0.2","@types/react":"19.2.18"},"peerDependencies":{"react":">=19"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/usketch-plugin-session_0.2.5_1790238020242_0.8457050792082828"}}},"time":{"created":"2026-08-10T12:36:14.679Z","modified":"2026-09-24T08:20:20.676Z","0.2.0":"2026-08-10T12:36:14.940Z","0.2.1":"2026-08-12T11:53:53.473Z","0.2.2":"2026-08-14T06:08:40.636Z","0.2.3":"2026-08-21T06:11:02.636Z","0.2.4":"2026-09-07T06:30:12.803Z","0.2.5":"2026-09-24T08:20:20.347Z"},"bugs":{"url":"https://github.com/EdV4H/usketch/issues"},"license":"MIT","homepage":"https://github.com/EdV4H/usketch#readme","repository":{"url":"git+https://github.com/EdV4H/usketch.git","type":"git","directory":"plugins/usketch-plugin-session"},"description":"Canvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の **フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の イベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。","maintainers":[{"name":"myuske","email":"circlemountain.ym@gmail.com"}],"readme":"# @edv4h/usketch-plugin-session\n\nCanvas 上で他ユーザーに「イベント」を発生させる**ライブ・インタラクティブ・セッション**の\n**フレームワーク**。特定の活動は焼き込まず、投票・チュートリアル・カードゲーム等を**外部の\nイベント型**として足せる。最初のイベント型は [`@edv4h/usketch-session-voting`](../../packages/usketch-session-voting)。\n\n**サーバー権限モデル**: Durable Object（`BoardRoom`）がセッションの真実を持ち、公開状態は全員へ、\n秘匿状態（誰が何に投票したか / 伏せ札）は本人だけへ配る。だから重複投票・秘密投票・伏せ札が成立する。\n\n## 特徴\n\n- **途中参加**: 接続時にサーバーが現状態を送る（遅参者も即座に参加・操作可能）。\n- **途中離脱→再接続**: userId 単位の猶予（DO alarm）で席/状態を保持。同 userId 復帰で自動復元。\n- **ホスト移譲**: ホスト離脱＆猶予切れで最古参の接続ユーザーへ移譲。\n- **HUD 一本化**: UI は Control HUD パネルに登録（独自ツールバーは作らない）。\n- **型を足すだけで拡張**: 新イベント型は `ServerSessionType`（サーバー）＋ `ClientSessionType`\n  （クライアント）のペアを1つ作って登録するだけ。\n\n## アーキテクチャ\n\n- **プロトコル**: [`@edv4h/usketch-session-protocol`](../../packages/usketch-session-protocol) の型非依存な封筒\n  （`create/join/action/leave/close/end/sync` ↔ `state/private/ended/error`）を\n  [`@edv4h/usketch-sync`](../../packages/sync) の `MSG_SESSION` フレームで送受信。\n- **サーバー**: `SessionManager`（DO 内）が型レジストリへ委譲。各セッションを `type` で解決し、\n  `init/reduce/privateFor/close` を呼ぶ。状態は `ctx.storage` に永続、猶予は DO alarm。\n- **クライアント**: 汎用 `session-client` が `SessionView` と自分の private state をローカルミラー、\n  接続/再接続時に自動 `sync`。HUD パネルは各 `ClientSessionType` の `renderCard` / `renderCreateForm`\n  へ描画委譲。**基盤は voting を知らない**。\n\n## 使い方\n\n```ts\nimport { createSessionPlugin } from \"@edv4h/usketch-plugin-session\";\nimport { votingClientType } from \"@edv4h/usketch-session-voting/client\";\n\n// クライアント（web）— types に使うイベント型を渡す\ncreateSessionPlugin({\n  wsProvider,                 // 未指定（ローカルボード）なら no-op\n  userId,                     // WS 接続の識別子と一致させる（host 判定）\n  boardId,\n  types: [votingClientType],  // 追加のイベント型はここに足す\n});\n```\n\n```ts\n// サーバー（apps/server）— 対応する ServerSessionType を SessionManager に登録\nimport { votingServerType } from \"@edv4h/usketch-session-voting/server\";\n\nnew SessionManager({ /* deps */, types: [votingServerType] });\n```\n\n## 自分のイベント型を作る\n\n`ServerSessionType`（`type` id・`init`・`reduce`・`privateFor`・`close?`）と、\n`ClientSessionType`（`type`・`label`・`renderCard`・`renderCreateForm`）のペアを1パッケージにまとめ、\nサーバー部を `SessionManager` に、クライアント部を `createSessionPlugin({ types })` に登録する。\nサーバー権限モデルなので**ブラウザだけで完結する純クライアント型にはできない**（不正防止のため）。\n\n## オプション（`createSessionPlugin`）\n\n| option | 説明 |\n|---|---|\n| `wsProvider` | サーバー権限セッションの転送。未指定＝ローカルボードでは no-op |\n| `userId` | この端末の userId。WS 接続の識別子と一致させる（host 判定に使用） |\n| `boardId` | ボード ID（スコープ / テレメトリ用） |\n| `types` | 登録するイベント型（`ClientSessionType[]`）。各々に対応する `ServerSessionType` をサーバーにも登録 |\n","readmeFilename":"README.md"}