{"_id":"@doki-land/live2d-renderer","_rev":"20-71a19676d309aea5c69fe0f7f29f2329","name":"@doki-land/live2d-renderer","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.0":{"name":"@doki-land/live2d-renderer","version":"0.0.0","license":"MIT","_id":"@doki-land/live2d-renderer@0.0.0","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"dist":{"shasum":"53349e2390f5f58c1fdd95420d25339371a08410","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.0.tgz","fileCount":2,"integrity":"sha512-uV//NxfgBhIGGGGXtTTuyAnOYy8v2VIU68U7hnVrjtNMGMwW+OjTwcCDhVczULyhDIzFuFg/D8oHPvdGi0HuWw==","signatures":[{"sig":"MEUCIQC3Pvrplm05FwWX4qD7NlMkZE8Yqf5Mey2tRtKCtaq0rgIgcskrf5WXzLOm5EaZQPxAAUVCkb68LjMJQGxeZKEgj5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268},"private":false,"_npmUser":{"name":"galaster","email":"galaster@foxmail.com"},"_npmVersion":"11.16.0","description":"live2d.ts placeholder — not for production use.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.0_1787560749366_0.37464592911814054","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@doki-land/live2d-renderer","version":"0.0.11","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"author":{"name":"Doki Land"},"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.11","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts#readme","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"693c4902cec7eeac6ce7c36d9ac938d0a29d203c","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.11.tgz","fileCount":34,"integrity":"sha512-NJVKJEHuHt/qPw1poqWBZI0UTRtGYlwCQSKI8OVNuxdiljG9C6tacwfoLCThQM4daNiO708KtWUDwEwdWBuwhQ==","signatures":[{"sig":"MEUCIQCqa2VP0czqNeQgQ5jC0ohcz3mLBvvISMIZloHDdmN3fAIgFov6ctvIJCS47N7hLvAZIysfRFuY9vhYjzQQmSuQDgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":421012},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Live2D graphics backends (WebGPU/WebGL2/Canvas2D) plus moc2/moc3 CPU model runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.11"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.11_1787567592058_0.6412717304104365","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@doki-land/live2d-renderer","version":"0.0.12","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"author":{"name":"Doki Land"},"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.12","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts#readme","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"4f6ed36936c787fddf0cd4a54b6528f4355c3a65","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.12.tgz","fileCount":34,"integrity":"sha512-ejsnna1aqOFnzTKGCjF9Fig30TG1dPnQNHD75neJnd6Dbp85leFU4lUevV3axCDTPcnAi1CXlVvVWzOWxTNHeA==","signatures":[{"sig":"MEQCIAdF2nTeOgNaUUEzl7MR8tttAllvCsd9i6D24IIW9dYyAiAkeuFYskMj9gCY5CNzJzkFz172c84zc3PE/K3G5KpSpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":421012},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Live2D graphics backends (WebGPU/WebGL2/Canvas2D) plus moc2/moc3 CPU model runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.12"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.12_1787569216979_0.4564296541247064","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@doki-land/live2d-renderer","version":"0.0.13","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"author":{"name":"Doki Land"},"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.13","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts#readme","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"85aa34ef3d3dc6a989f1acfd74e12670db88b569","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.13.tgz","fileCount":34,"integrity":"sha512-fmzeTESJOcY5RcdCZRNOQ5JIErZolfhrwSgcJui8tks/NaTkOI/Tl3ZAdCwV2YHUQ/sRueGD9+H8nA5Sm3R8Ww==","signatures":[{"sig":"MEYCIQCQKLpVhgH4wP4ue/wQMGzyM/BbjpQ68wwKQGXdkvM8fwIhAPLAHqCVA3j08DFtXeH9AE1x6l6E2rhXkoAWGDJvcJ7v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":421012},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Live2D graphics backends (WebGPU/WebGL2/Canvas2D) plus moc2/moc3 CPU model runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.13"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.13_1787570765307_0.1325658609064555","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@doki-land/live2d-renderer","version":"0.0.14","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"author":{"name":"Doki Land"},"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.14","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts#readme","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"7da19727d4335a2aa8ea2b630cd6d9c860c29b58","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.14.tgz","fileCount":34,"integrity":"sha512-b8VBNgxjZbY/MtaXztVpkGCzbcGs5NNoutsL6o/91b14d3o8PO/9MJu5agUHeXGMJxgMfZphgPa0rdE+NM/Pbg==","signatures":[{"sig":"MEUCIQDejUtGiZVBDtx1KyxUrZhV9iFzzrUi4qd5wVrE0L0sdAIgFwrCKprU4Rlj0D7LxmWipXrv8YcYWKrme1Mq8oALzcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":421012},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Live2D graphics backends (WebGPU/WebGL2/Canvas2D) plus moc2/moc3 CPU model runtimes","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.14"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.14_1787572290810_0.3971191603028319","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@doki-land/live2d-renderer","version":"0.0.15","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.15","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"6d851e4149dfcd9ed126258ba7b47ba45b621add","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.15.tgz","fileCount":35,"integrity":"sha512-L6l+yD5jjG+nwAXPXE0XDlgwfm0bwVPg3sfctQk+aWN9I8i7SdCyih89/ublsQfvamdhKKFvb5qU5mE0DWhbeg==","signatures":[{"sig":"MEUCIF+iQ6M4xUP6PH/+VfMotRZ1q8OmFGhP7lNAM8fYyqsqAiEAp42uY1+uc6qBcMUc0wq6kUmKUV25vX3tQi1gzCVQVig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":424575},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.15"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.15_1787573746227_0.6224015398555323","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@doki-land/live2d-renderer","version":"0.0.16","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.16","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"eef2907d886e2b32e9602eb6e747b4b9471e1b45","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.16.tgz","fileCount":35,"integrity":"sha512-yKAcj0Zsxy+xdDiQ7K+Aii7BtErtlLCjAhGQjcJfdts/xbRLqbmZHrqXBIvJFIDj10rgg2qWXVtdju3hqhJ95g==","signatures":[{"sig":"MEQCIDqf5f2xXEvL7gsOsoglJGFE2WfU+lT+A66ZEU6FW46OAiADrRCHDmwVe7LaXs3Ix+H/0ZVpNrEV7qGP+SCJr+3C7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":429877},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.16"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.16_1787574622898_0.34027235000514366","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@doki-land/live2d-renderer","version":"0.0.17","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.17","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"acdcdb3411ae29bbce539c75baa3354bd9bb203b","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.17.tgz","fileCount":35,"integrity":"sha512-juBaaWS1ApVf3pS3VzAifKMk9tlHmD9Hoip9L+665N3D+Cnfc1GxrTmMdl7h3MkeLhP3ALnqjXHvtRx22HaQ9w==","signatures":[{"sig":"MEYCIQDzGUhMIOplvSQIqGx/Tg2fbAHbN6E+VCOCmr2sA5jVMAIhANPEq4BFZ5fZBOIdjKHbRqL7Q1NYbuKbLcpTEJ2S7Cmx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431646},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galaster","email":"galaster@foxmail.com"},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"11.16.0","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@doki-land/live2d-core":"0.0.17"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.17_1787591293837_0.12905776569756444","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@doki-land/live2d-renderer","version":"0.0.18","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.18","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"90a6b41daf7c5367d2bb0bef5cf0080fa6c75f8b","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.18.tgz","fileCount":35,"integrity":"sha512-JyXqT3Ox8/BUeiIgNASq8dyxCTYlkUzNAOVuT7LgqjcxABviXiXFlyBNwPX0lAP1oGpTPlgpqTpyyzrwe1d5kA==","signatures":[{"sig":"MEUCICrsOMQiihurX/nN+fGLpF4nfL/NI7T9NWsMtA6rrbvfAiEAh6x04YfLlO1eMjWMhnSY+Qg0i1r+HyjYA6nuL/tgj1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":431646},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.18"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.18_1787630103175_0.1966464585480423","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@doki-land/live2d-renderer","version":"0.0.19","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.19","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"3f73e1311b4c4613f5eba19f9707225253281b6f","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.19.tgz","fileCount":35,"integrity":"sha512-e4T9JmfPxx6vmVkzm9eZNzSdRrc3cy2pd3U3zK3/iuqMW7HFQA9ohzUmn6Enxck78lykWLJO3Xck6eJOsgz+DA==","signatures":[{"sig":"MEYCIQD5apkHw04jbbPhxLTlfdceVadg5Qc/aWPd1DzU88wKHgIhAM97PWl12ZFyMxS1/urPCXlQKaNVFFsPi0QacVeChVAm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":461534},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.19"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.19_1787639830715_0.79124110379856","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@doki-land/live2d-renderer","version":"0.0.20","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.20","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"51a7a37ac936c6c296e19fe1b14a0e0fd2dcf806","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.20.tgz","fileCount":38,"integrity":"sha512-outwXQI+rVmnODXUP/0sB7j9Fww/pQBL9i8+z0d/DuS0bAH/7569ymTIbPj6/TjSZXVvO6yarwoVbl+kbvQ8lQ==","signatures":[{"sig":"MEQCIFjaQprm57ELs3fdxEMChNQWKUh+Y5vo22e0LeNd2ydeAiB5Hyj33oVIt7W4qCyq+2jy2L0x2Aa/1GydHKtBXib3Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":484903},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.20"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.20_1787642527506_0.1117770879386415","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@doki-land/live2d-renderer","version":"0.0.21","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.21","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"2dc4aa86f6431fa4331a2c30b6d258cedbd33ff4","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.21.tgz","fileCount":38,"integrity":"sha512-7gsH9o+o0fkRQo619IrxFpCxeW3kSV7SKjwDcT9ab0LJGXEQA0XUEKF7mkHNi7c+U6Us/LcPAMiMIe79amEZcw==","signatures":[{"sig":"MEQCIGon0hmP+oWVJKhedQ/YSZP2whxeGKvMzPSp+zbnVnGPAiAaKNfIMTr8mAA/nWhb7+4Ht6D+G7nNH/Nj7QjeYPY0FQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":484903},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.21"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.21_1787651978707_0.07603175236504689","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@doki-land/live2d-renderer","version":"0.0.22","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.22","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"c174969cf47c529139a650f0c68e402e9dbb2fda","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.22.tgz","fileCount":38,"integrity":"sha512-xfhiRh1Kut5VGK6vspRdtjp5x2ICzDD+Jy//Esxszo+uSCRUS12tCrTWz7Jr4hGCl2t4EoIxLC+fy0CTDg5pLQ==","signatures":[{"sig":"MEUCIQDWJBcUpNtvM2kVmBU3uXQMyNhOdWi1WsoWkYl4aYwbfgIgfuyIdsU7fXjvcBU6M6PLSWS+BFXddhOgGy9KZTpEjNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":484903},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.22"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.22_1787672338188_0.20927930991745947","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@doki-land/live2d-renderer","version":"0.0.23","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.23","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"23143803e9f1e39fef72c953470481a94cf15952","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.23.tgz","fileCount":38,"integrity":"sha512-7JQP48+gPTcKNC1bYZP46UZDkHtVI2slfzKzmYCw6F6tPwfJgBcq02gdEnwGb05bFa/zuGgg1DkBJ2pC7Zjb7w==","signatures":[{"sig":"MEYCIQCubvw2glltmeX5UYSLMmV26Ne3vvjCN/IAl+0tXEDkfQIhAOcYXxRYQbC8xxmqtZIyKW5qKE+FbZ8cttFJ5riqrI6a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486396},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.23"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.23_1787714610654_0.344152275497289","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@doki-land/live2d-renderer","version":"0.0.24","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.24","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"6eb20f95ec871ebfbf808ba984adbc87f4cd229e","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.24.tgz","fileCount":38,"integrity":"sha512-nCFoVPAhxXLS3gMTbKmkJlOdyEdiYBsx9tFzrgrXtPr7rcofMMOYjtN9xb8fG1hajjR7pZi8qPgM+bUBDjCS1w==","signatures":[{"sig":"MEUCIBkH+QNDhyLT2LWKjsfZR39du9QIObWsHXwujcUMBX58AiEA4ZsrUuMlnCT1EnxEe5IyJKYBgabt2N72OL/iW/lLho4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486396},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.24"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.24_1787718798252_0.46677358574243777","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@doki-land/live2d-renderer","version":"0.0.25","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.25","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"4765cb5f51a9cbcc2d2321894c552916e5e1802c","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.25.tgz","fileCount":38,"integrity":"sha512-3XZZdIsEANDqpiBKCCy+Ryk91VeQFyVLqOS/ZiiprQwxx2lSkPzJL85UE9KxisZu5qhfsLgHq2BTeCIDBzToTA==","signatures":[{"sig":"MEUCIQCGs851BdJCxaKdI4twYDevVa2c804jbvqZeO/sccB2tgIgdDUL1sK+musVJe8Vy4YRjKC09UDAwr8dnwB2dLmuB5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486396},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.25"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.25_1787719005567_0.2536907172011116","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@doki-land/live2d-renderer","version":"0.0.26","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"MIT","_id":"@doki-land/live2d-renderer@0.0.26","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"1573a5914e0749248fa17d340a3154d91540bdab","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.26.tgz","fileCount":38,"integrity":"sha512-JZ4ved4mFDJs8/X/VUlb0PrZjlLYf8ilsf1/XHWYIKe8/KBQsxOSpV3vrJkQMtsAVxrHNrormyob59qkgjuLGg==","signatures":[{"sig":"MEQCIBaykx+uAxv2Bp/FXZ+x0ql4v+gAm0MrygypMefdTl2pAiAJxn4lTLAD5dd8GqkPcgciHktYygep9qt6gPFMa8kYHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486396},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.26"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.26_1787719935926_0.6004812870702099","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@doki-land/live2d-renderer","version":"0.0.27","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"CC0-1.0","_id":"@doki-land/live2d-renderer@0.0.27","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"b4d8093af8396c982e03774bfce36e09c5689025","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.27.tgz","fileCount":38,"integrity":"sha512-5SXb1AkW5RnuqeIv42+2c/tS5Rd0/b0ktuO8vpakhjYAZxiTxW8O8Bs+jb+pwM+6kkd8P2vK+FmgucLV9MB9ig==","signatures":[{"sig":"MEUCIBny1jYzoaObs/wS82AsX1snmEKiq+XfP+it0vA9hOwGAiEAzl3Qi2+y7H0/URoeqZqfG6jpPRtv1y9Mpvc06wu1S9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486466},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.27"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.27_1787734642138_0.5646947046115638","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@doki-land/live2d-renderer","version":"0.0.28","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"license":"CC0-1.0","_id":"@doki-land/live2d-renderer@0.0.28","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"homepage":"https://github.com/doki-land/live2d.ts","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"dist":{"shasum":"c2fced4d0e902c6b4f34322e7ebb70430347ffcf","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.0.28.tgz","fileCount":38,"integrity":"sha512-jNNmPHeu2baVvzm9c0Y/YX48lCEimjjed6DZhCO692Si6gklD5ULJSMqmYmZ0Xr0O6xkDaU3RMnEHT0wEA/u6w==","signatures":[{"sig":"MEQCIDtYZvaJT0esSUrC7n81WuDuKbJMhJKuoZ7D2TDHiRV0AiBKKAJS56iixKtH5enbvrY6z15zUnDtFRfGzx1nRJKEjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486466},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"repository":{"url":"git+https://github.com/doki-land/live2d.ts.git","type":"git","directory":"projects/live2d-renderer"},"_npmVersion":"12.0.2","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@doki-land/live2d-core":"0.0.28"},"publishConfig":{"main":"./dist/index.js","types":"./dist/index.d.ts","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/live2d-renderer_0.0.28_1787738653088_0.6978521642622846","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@doki-land/live2d-renderer","version":"0.1.0","description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","type":"module","license":"CC0-1.0","homepage":"https://github.com/doki-land/live2d.ts","repository":{"type":"git","url":"git+https://github.com/doki-land/live2d.ts.git","directory":"projects/live2d-renderer"},"keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"main":"./src/index.ts","types":"./src/index.ts","exports":{".":"./src/index.ts"},"publishConfig":{"access":"public","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}}},"scripts":{"build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit","test":"vitest run"},"dependencies":{"@doki-land/live2d-core":"0.1.0"},"sideEffects":false,"_id":"@doki-land/live2d-renderer@0.1.0","bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-GSUCKf3nqYo7QLJ8DGniBSYUIVF7iwUdzN/Ijym7CSsjuMmskmfPj5Yg1o2prFV5A+rAc+U3uiG1ojKwDfXCJg==","shasum":"4662ac2fefc0d359b4b7f0577ba819bc2f6f6b27","tarball":"https://registry.npmjs.org/@doki-land/live2d-renderer/-/live2d-renderer-0.1.0.tgz","fileCount":38,"unpackedSize":486464,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@doki-land%2flive2d-renderer@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGk39g6znxzYC69sDk6jLpUKDuuBcXcNbPHJkkg9LaK0AiEA7cMfon+qsvcuwjmL9Pzzo/AQRee0G/kFWQuzSr8qIMs="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a6855d22-b840-4f32-b5d7-be3b013fb6fd"}},"directories":{},"maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/live2d-renderer_0.1.0_1787739845239_0.31826356170972225"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-24T08:39:09.156Z","modified":"2026-08-26T10:24:05.752Z","0.0.0":"2026-08-24T08:39:09.471Z","0.0.11":"2026-08-24T10:33:12.207Z","0.0.12":"2026-08-24T11:00:17.116Z","0.0.13":"2026-08-24T11:26:05.444Z","0.0.14":"2026-08-24T11:51:30.922Z","0.0.15":"2026-08-24T12:15:46.385Z","0.0.16":"2026-08-24T12:30:23.063Z","0.0.17":"2026-08-24T17:08:14.017Z","0.0.18":"2026-08-25T03:55:03.313Z","0.0.19":"2026-08-25T06:37:10.868Z","0.0.20":"2026-08-25T07:22:07.654Z","0.0.21":"2026-08-25T09:59:38.855Z","0.0.22":"2026-08-25T15:38:58.330Z","0.0.23":"2026-08-26T03:23:30.814Z","0.0.24":"2026-08-26T04:33:18.399Z","0.0.25":"2026-08-26T04:36:45.733Z","0.0.26":"2026-08-26T04:52:16.067Z","0.0.27":"2026-08-26T08:57:22.307Z","0.0.28":"2026-08-26T10:04:13.311Z","0.1.0":"2026-08-26T10:24:05.382Z"},"bugs":{"url":"https://github.com/doki-land/live2d.ts/issues"},"license":"CC0-1.0","homepage":"https://github.com/doki-land/live2d.ts","keywords":["live2d","webgpu","webgl2","canvas2d","renderer","doki-land"],"repository":{"type":"git","url":"git+https://github.com/doki-land/live2d.ts.git","directory":"projects/live2d-renderer"},"description":"Live2D rendering — moc2/moc3 decode + WebGPU, WebGL2, Canvas2D backends for live2d.ts.","maintainers":[{"name":"galaster","email":"galaster@foxmail.com"}],"readme":"# @doki-land/live2d-renderer\n\nModel execution and browser-native rendering backends for `live2d.ts`.\n\nThis package owns both MOC2/MOC3 runtime behavior and the WebGPU, WebGL2, and Canvas2D graphics implementations.\nApplications should normally use these capabilities through `@doki-land/live2d`.\n\n## ✨ Features\n\n- Pure TypeScript MOC2 and MOC3 parsing paths.\n- CPU model programs and deterministic frame evaluation.\n- WebGPU rendering.\n- WebGL2 rendering.\n- Canvas2D compatibility rendering.\n- Texture, blend mode, clipping, and mask-atlas support.\n- Parameter bindings for inspectors and interactive hosts.\n- Renderer initialization fallback.\n- Structural and model-fixture tests.\n\n## 🧭 Package Role\n\nThe source tree separates execution concerns:\n\n```text\nsrc/backends/  WebGPU, WebGL2, and Canvas2D graphics backends\nsrc/moc/       MOC2/MOC3 decode, deformation, and ModelBackend implementations\nsrc/cpu/       model program parsing and CPU frame evaluation\nsrc/render/    blend modes, clipping, coords, preview styling\nsrc/runtime/   renderer factory and model-runtime glue\nsrc/format/    moc binary and settings format peek helpers\n```\n\nMOC2 and MOC3 are model formats, not graphics backends. WebGPU, WebGL2, and Canvas2D are graphics backends, not model\nformats.\n\n## 📦 Installation\n\n```bash\npnpm add @doki-land/live2d-renderer\n```\n\nInstall this package directly when building renderer tools, conformance tests, custom facades, or specialized host\npipelines.\n\n## 🚀 Creating a Renderer\n\n```ts\nimport {createRenderer} from \"@doki-land/live2d-renderer\";\n\nconst renderer = createRenderer({\n    prefer: [\"webgpu\", \"webgl2\", \"canvas2d\"],\n});\n\nawait renderer.initialize(canvas);\n```\n\nFallback occurs during initialization. This matters because browser feature detection alone cannot prove that an\nadapter, device, context, or required capability can be created.\n\n## 🖼️ Backend Selection\n\n### WebGPU\n\nPreferred for modern browsers and explicit GPU resource management. A valid `navigator.gpu` object is not sufficient;\nadapter and device creation can still fail.\n\n### WebGL2\n\nPrimary GPU fallback with broad browser support. Shader compilation, framebuffer allocation, texture limits, and context\nloss remain device-dependent.\n\n### Canvas2D\n\nCompatibility and diagnostic path using textured triangle approximation. It is useful for fallback rendering and\nCPU-output inspection but is not expected to match GPU throughput for complex models.\n\n## 🧠 Model Runtime\n\nA `ModelBackend` is responsible for:\n\n- determining whether it can handle normalized model settings;\n- creating model state from settings and binary data;\n- updating model time and parameters;\n- producing drawable meshes or CPU frame snapshots;\n- exposing parameter bindings;\n- releasing model-owned state.\n\nModel runtimes must not create their own application frame loop or DOM controls.\n\n## 🎭 Rendering Semantics\n\nThe renderer preserves model-defined behavior including:\n\n- drawable render order;\n- opacity and visibility;\n- normal, additive, and multiplicative blending where implemented;\n- mask relationships;\n- inverted masks;\n- texture coordinates;\n- model-space orientation.\n\nTransparent drawables cannot be freely reordered across characters or masks merely to reduce state changes. Visual\ncorrectness takes precedence over speculative batching.\n\n## 🧭 Coordinate Contract\n\nModel geometry uses a consistent model-space convention before reaching a graphics backend. Each backend is responsible\nfor exactly one conversion to its target coordinate system.\n\nDo not fix orientation problems with CSS canvas transforms. CSS transforms also affect pointer mapping and can hide a\ndouble conversion instead of correcting the model-to-renderer contract.\n\nOrientation changes require a neutral fixture or pixel evidence across the affected backends.\n\n## ⚡ Performance Engineering\n\nPerformance work should target measured costs:\n\n- model-program and instance lifetime;\n- per-frame allocations;\n- parameter dirty tracking;\n- affected deformer and drawable evaluation;\n- dynamic vertex upload ranges;\n- mask-pass reuse;\n- texture and pipeline state changes;\n- overdraw and canvas resolution;\n- multi-character scaling.\n\nWebAssembly, TypeScript, WebGPU, and WebGL2 are implementation tools, not benchmark results. Comparisons must use\nequivalent visual output and report CPU, GPU, allocation, upload, and memory metrics.\n\n## 🧪 Testing\n\n```bash\npnpm --filter @doki-land/live2d-renderer typecheck\npnpm --filter @doki-land/live2d-renderer test\n```\n\nRenderer changes should add the smallest appropriate evidence:\n\n- CPU golden snapshots for evaluation changes;\n- structural assertions for format decoding;\n- orientation tests for coordinate changes;\n- mask and blend fixtures for compositing changes;\n- pixel comparisons for graphics parity;\n- browser checks for device-specific behavior.\n\nProprietary models must not be committed without redistribution permission.\n\n## 🔌 Extending the Package\n\nNew model-format support belongs under `src/moc/`. New browser graphics implementations belong under `src/backends/`. Do\nnot create a separate published package for every MOC revision or GPU backend unless an independently useful public\ncontract justifies it.\n\n## 🤝 Contributing\n\n### Renderer expectations\n\n- Keep hot paths allocation-aware.\n- Preserve deterministic CPU behavior.\n- Document the visual invariant behind renderer changes.\n- Add structural, pixel, or browser evidence appropriate to the change.\n- Rebuild generated bundles from source instead of editing them manually.\n\n## 📄 License\n\n### Clean-room rendering\n\n- WGSL and GLSL shaders, graphics pipelines, mask and blend paths, model execution, Canvas2D mesh rendering, resource\n  lifecycle, and GPU submission optimizations are independently designed and handwritten.\n- No implementation is copied, translated, ported, derived from, or linked against an official renderer, Core binary,\n  SDK wrapper, shader source, pipeline implementation, or internal API.\n- External format names identify interoperability targets only.\n- The maintainers and contributors are independent and are not employed by, affiliated with, sponsored by, endorsed by,\n  or acting on behalf of the official Cubism SDK vendor.\n\n### Contribution boundary\n\n- Do not submit official SDK or shader source, disassembly-derived implementations, mechanically translated code, or\n  dependencies on an official runtime.\n- Support compatibility patches with a public format fact, neutral fixture, reproducible independent observation, or\n  independently authored technical rationale.\n\n### Terms\n\n- Source code is dedicated to the public domain under **CC0 1.0 Universal** — see [`License.md`](../../License.md).\n- Model assets used for local testing may have separate terms.\n","readmeFilename":"README.md"}