{"_id":"@cyanheads/pixoo-toolkit","_rev":"23-63b7d4db6ebf138bcea39ed5cfd0100b","name":"@cyanheads/pixoo-toolkit","dist-tags":{"latest":"0.10.0"},"versions":{"0.3.2":{"name":"@cyanheads/pixoo-toolkit","version":"0.3.2","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.3.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"b21b9e1c2fea151bf5fab6eea7ec6ff49879083f","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.3.2.tgz","fileCount":39,"integrity":"sha512-SsHumwtAUf5T5QZ+ZvNqK1q7GsrP0xYZnhzrqsBLhTqQsCKg1KwJUzftuDpBUO6HdFauR/xrHsHZBjJw9szkKw==","signatures":[{"sig":"MEQCID2/HfC6TapkOSqne9p/QgJcCiomStub4zyZ41nRpu2zAiBvVtsTCAZd89VXnkiAkKcvrkyzQyyV767Lg2RuciAYaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189277},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"b21b9e1c2fea151bf5fab6eea7ec6ff49879083f","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","format":"prettier --write src/ scripts/ tests/","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-SsHumwtAUf5T5QZ+ZvNqK1q7GsrP0xYZnhzrqsBLhTqQsCKg1KwJUzftuDpBUO6HdFauR/xrHsHZBjJw9szkKw==","repository":{"url":"https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.34.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.9","typescript":"^5.9.3","typescript-eslint":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.3.2_1771595512997_0.935537012354507","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.4.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.4.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"b56aaf476859a2abf45c4fb365d1d17712e34b2a","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.4.0.tgz","fileCount":39,"integrity":"sha512-EusOttr3VfcX5HJjK3TzdZh8ud/XOzrMZ/mlh2KH9tvJlT0qKnD6zfZKa3PLNTOOnf8Jw83iHo9JyV4jTrA/mg==","signatures":[{"sig":"MEQCICtYlGYogG4kDFtjv/N650DFmeAwsU42VW1iRdCvdhpbAiBSfDb0/oD9IllxUtNdwrWEfFdg9k90FpeUhPNrOkfutA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194323},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"b56aaf476859a2abf45c4fb365d1d17712e34b2a","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","format":"prettier --write src/ scripts/ tests/","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-EusOttr3VfcX5HJjK3TzdZh8ud/XOzrMZ/mlh2KH9tvJlT0qKnD6zfZKa3PLNTOOnf8Jw83iHo9JyV4jTrA/mg==","repository":{"url":"https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.34.5","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.9","typescript":"^5.9.3","typescript-eslint":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.4.0_1771831220092_0.3835243353894877","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.5.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.5.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"4ffbebdcd292cde0614ff4e6b63d8333b86d0e22","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.5.0.tgz","fileCount":39,"integrity":"sha512-okEdk45xJZDCd6MoZ3vBAhPleFmgemGyWLsGF0qfMrZXDnwlJn3o34P+5YujVmopP2dU+cECc8piQikIOXdr7Q==","signatures":[{"sig":"MEQCIG/yOpWkSznUsTPBebUvLNmkEu9KL9l4E3KGloM2kskDAiAWeuIuZPDndsBS4C6vU2DbMEsrH992p4MWdYohaa5nXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203157},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"4ffbebdcd292cde0614ff4e6b63d8333b86d0e22","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","format":"prettier --write src/ scripts/ tests/","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run build"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-okEdk45xJZDCd6MoZ3vBAhPleFmgemGyWLsGF0qfMrZXDnwlJn3o34P+5YujVmopP2dU+cECc8piQikIOXdr7Q==","repository":{"url":"https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.34.5","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.9","typescript":"^5.9.3","typescript-eslint":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.5.0_1781232179769_0.7346926451915945","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.6.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.6.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"92af22fa1e04abedb2c1a047ceb30b792c3f3bf9","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.6.0.tgz","fileCount":39,"integrity":"sha512-hrBxP9bip9o699kyS8ZijSXh+sn8NvCxeCAyy6GwCGdTHxMo1Y/LdIZPjWOXQUsjz+7I0+DQk+J9bI+JHCSxeQ==","signatures":[{"sig":"MEUCIEr/aoZWM7xf8aXZsViL/tvn/ZVXquGFb5TlIEADj0KmAiEA4vTjclzmxon8nRS/vCio/OWoHvBYDGRb2tOKhH4kWuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222566},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"92af22fa1e04abedb2c1a047ceb30b792c3f3bf9","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","format":"prettier --write src/ scripts/ tests/","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run build"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-hrBxP9bip9o699kyS8ZijSXh+sn8NvCxeCAyy6GwCGdTHxMo1Y/LdIZPjWOXQUsjz+7I0+DQk+J9bI+JHCSxeQ==","repository":{"url":"https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.34.5","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.9","typescript":"^5.9.3","typescript-eslint":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.6.0_1781233322295_0.6410750183640597","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@cyanheads/pixoo-toolkit","version":"0.6.1","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.6.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"7d6b3dafb2081c664029824d7b1acd67d1b610f4","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.6.1.tgz","fileCount":39,"integrity":"sha512-1xw0iG5Z7c73SZxXDo+9napQyBchEOu9lpDfsiPRbWbFzK/sG6iQAjf7qT+VOFV4xOtEOymf0uaVcSC6ZHGvmA==","signatures":[{"sig":"MEUCIA4J6XlOyQ+p1l0qYDMIANvR9b/V35PKANJGPTL5s8LpAiEAyIX/OO/0hTmJvONqLfGs0b9gwN/rwhXpG0QPpQqjB3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223386},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"7983bb96934263910ffb59409e4c6d18bda743e0","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","format":"prettier --write src/ scripts/ tests/","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run build"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.12.1","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.0.0","dependencies":{"sharp":"^0.34.5","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.9","typescript":"^5.9.3","typescript-eslint":"^8.56.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.6.1_1781257680024_0.6127380487218548","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"e75407d396caced1039ebe62155ba6060eb60562","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.0.tgz","fileCount":39,"integrity":"sha512-btGxuQdtDoJE/UUKC6Lijcxn3Jg28Zwq0O3nqk8lOIalEtsjAYibtI0Y9zMfrPzTLmoUJTyINEXRFWXeIfcpxw==","signatures":[{"sig":"MEUCIGK3SAyR1UcJn39+IBS1+uTpRhblMCkhEABzkxalPcNdAiEAgaXEPSqTKnts2nM1yxgw6HWHMULQwV8GO1LdIm0mCqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223745},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"302fcdbe73a3f1cca9328b3c57cc99bfc287689f","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.0_1786637302789_0.9258732327082078","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.1","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"5acfc29739649539fd8a5e58d5d605153e0d57ee","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.1.tgz","fileCount":39,"integrity":"sha512-RUPio/gSSqlxxHJl1MFDBlyh/AxlgmjoDRARjPTtmX86Ri0ObKavxPVAcEiqum6q6yUJ8eZhi7jPjQKlrpkzUg==","signatures":[{"sig":"MEUCIQDOA5JkiPQCWwC1cRfSthwSvMResdQ31R4fAOaRJXGfNwIgcIGkwcrNOeqPnq3ZDIectNQ+NM3Xv2Se+vhBCsTi8Ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229758},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"a76fc33f53bf7991c2aca325cfb276ecdb1abc7d","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.1_1786640047386_0.12584381320149562","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.2","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"c2cec554b496bcfc6412cb0013d072664aef149c","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.2.tgz","fileCount":39,"integrity":"sha512-rOjmAi3hXyFNauwBZARCUxayG+dl3YnI0dN3VmWfiK1ulzvwgMVra73IQYWc474Zt/iJZ4UxDNlE8p+Bqsgrpg==","signatures":[{"sig":"MEUCIQCFxFVZXgPajqcs8MwbWL8l5lLsFF/rNo0Ba3vBClxXtgIgbNFki0ENRaZBrFYGOWTCElNPkR1DXd2GLfRfMUubXCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230127},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"afc6b0c1c872e88b8a9769317aecbc671e563c61","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.2_1786640564937_0.15351348817289345","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.3","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"20d90398842acff9df194e2bc963bf48918c0887","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.3.tgz","fileCount":39,"integrity":"sha512-SDI4mIKXjyZk0l81yjkUI6eTQIdzYqY5Si3heHKZcIv70v7a2AIEbfheiYAwsvDvLQn40MM4w8KkHqxXeM0xNQ==","signatures":[{"sig":"MEUCIQCdS8H4ygUf7DC66VUHWNaeRjWTFvtJrWNUk44NFCcgEAIgRlzCj1xHbyyRrY1/xyITYng23sbdQcPsTNNOZt28H7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231209},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"f998805a383d95189cac5bf028bbebe8f35c75ad","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.3_1786642142747_0.2967026083464652","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.4","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.4","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"ae5b12856f759580d33e810d05e3e7c19916ba9e","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.4.tgz","fileCount":39,"integrity":"sha512-ftbHWNap/iKNUnsnyjswrvc0UE03NXDi7QvguUVwSmKYZ/wkA5jPGdEwjPNjxiBs3ghTQzQNC4qLC/2N+d4WKw==","signatures":[{"sig":"MEYCIQDmS2aNlHoBw4crwS46vHKnMXXU23yTzOiT//NCEvF7TwIhAIgud3vBx7vvNNoCXMq/SimMC+E9BXSfBo9/0/gfoBMR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232927},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"f997487f9e4ed2766d6f158f3e53cd9330ecca4b","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.4_1786643688044_0.640508180959672","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.5","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.5","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"e1dac912e30a08edde84672b18dbfd9a9a46352f","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.5.tgz","fileCount":39,"integrity":"sha512-Gx94iLrDIAapmx1zEDggZZOGvmJJTnJV2tq/d+2GiIOo7LAp5lW3mKtdWYSSTNbPDfAaYb3jLDdK5Z/QYle0lw==","signatures":[{"sig":"MEQCICDKyLWI9vxdthHrMGpvRhqmUVWPdnYt4NsLytSJy/fMAiAr9Rs179i/SUVqyoLhRIpaxUhdTPtvKJV7vpaKk8zcIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233077},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"3797b8aec7b8738b122bbd696af29445e4797393","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.5_1786644807318_0.13896841572165286","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.6","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.6","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"7edda633963da222a47a7a3d1df4f7daaa3246cd","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.6.tgz","fileCount":39,"integrity":"sha512-NILhFoFlBLWU4CL2JI3qsmTi6BeyM6FG3xTLjK6havYw7ksRi16XNauH4r070nI6ZqnKRyMsLFYRsf7ANR2cyQ==","signatures":[{"sig":"MEUCIQCwuOO9aaZDONrR7Z7v8cBfA0yuHUh/fvGHbF7crT9fNgIgBQATE/KzEXrgrMsOyr8/5+3terJpK7E4Jww/DemlAd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232895},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"fc8742e88495577e49cf96f0fffbb1478c9b771e","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.6_1786645585001_0.18348533903496156","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.7","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":{"url":"cyanheads","name":"Casey Hand"},"license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.7","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"b52c8087807b0ff9b62ab32c48ed69c083077143","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.7.tgz","fileCount":39,"integrity":"sha512-X56n0A+3WQ9d+tpIcK6zaLA62it7NxEZMoSwgLhfxiCMIFMagNRXBY+qei9Xd7EdgSvYaQ+lVg41RqsNPSt+RA==","signatures":[{"sig":"MEQCIBMayQNY5UxkghiArdsX9xJOCB+UJoGdT3c0zbgjRKDeAiBPWMvRylthb93wV8ZsBCgJDG643Anqoem3ztGeoMCA1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245574},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"gitHead":"94f59256c21bbc1095925cb2ac73f0e19c1e3539","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"11.17.0","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.5.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.7_1786648577803_0.26752413039205636","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.8","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.8","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"b38afdcc92ab9a5f135b0b06c1cb8d88549b6d48","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.8.tgz","fileCount":39,"integrity":"sha512-D1xjkI7g8dzjjfGVJf3zJJ+lt2Q6M+Mzb6qsp4+6SnUGRQ/dyaHcoXZr023R4ve8qpBhUDRM6GA/Cq8oazP0ng==","signatures":[{"sig":"MEUCIGBZNHf9UPRSTUJSNcjezNkM89Ba2Lga01acJsOqcszXAiEA5sVV8W2cVLTbKbdXiBsZDL5Ddf/VlVVLtV1S/fc7NOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242456},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"b38afdcc92ab9a5f135b0b06c1cb8d88549b6d48","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-D1xjkI7g8dzjjfGVJf3zJJ+lt2Q6M+Mzb6qsp4+6SnUGRQ/dyaHcoXZr023R4ve8qpBhUDRM6GA/Cq8oazP0ng==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.8_1786678779023_0.9486956724589286","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.9","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.9","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"03998bba3ea0afc877647a8668721cf4dd8950b8","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.9.tgz","fileCount":39,"integrity":"sha512-ZcE9EjMtOkziLNXkjlQkMabw9SuWoWd1qJqu0EOR1tZkdLJ2km64Sx9pks6Sy7Fkm/81t7D1Rm9Gnq1izx8bCg==","signatures":[{"sig":"MEUCIAHrJqzKYEaPZn3F5PX9JqvcWQzPo+Jzxcp/4tPuIrE4AiEAlYcjkz/XV4LPFB923l6+ALnz6F/KFLfNdbzDOlTvFH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247437},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"03998bba3ea0afc877647a8668721cf4dd8950b8","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-ZcE9EjMtOkziLNXkjlQkMabw9SuWoWd1qJqu0EOR1tZkdLJ2km64Sx9pks6Sy7Fkm/81t7D1Rm9Gnq1izx8bCg==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.9_1786679838418_0.7527410205111997","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.10","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.10","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"2cb2ba9219da772ee56a4acc4051b72d812d1b5c","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.10.tgz","fileCount":39,"integrity":"sha512-jCjnSBhj8qkY3t5LE9/uWlPbZdqnQ1Yd2RJR6DiCR7HnCfAXJ1jfmxH8KmJVn4Ko7ulOnhWJ2OpVuitVVlSK2Q==","signatures":[{"sig":"MEQCIEiBg969eKeOmzhNNIp7JifkVRfdBGK93DOzeLfQToUIAiBVm8LveRy5CySjMGtgkUoIK7d8HB/Bc0mPk8/+y0j/xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250762},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"2cb2ba9219da772ee56a4acc4051b72d812d1b5c","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-jCjnSBhj8qkY3t5LE9/uWlPbZdqnQ1Yd2RJR6DiCR7HnCfAXJ1jfmxH8KmJVn4Ko7ulOnhWJ2OpVuitVVlSK2Q==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.10_1786681003523_0.5490324680021468","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.11","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.11","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"8115b82ccfba595e07b5ecede9b4360e836908cc","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.11.tgz","fileCount":39,"integrity":"sha512-OAHeLJCV84vqQ6twE33/d6E94I6wcaMIE56JakJhKPfzCH7tfDLWNfGuaJiI90ptc82rYMvmIghzPqZVR7jqmg==","signatures":[{"sig":"MEYCIQCok+gjHG1j8oWYwOcdhQLFa1MdHIQo4Y01WWCyssu4FAIhAI3Rn9Hyx9XR/sBLGCeVvT1L/ngD5aExvLOwHq6kqxOU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253752},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"8115b82ccfba595e07b5ecede9b4360e836908cc","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-OAHeLJCV84vqQ6twE33/d6E94I6wcaMIE56JakJhKPfzCH7tfDLWNfGuaJiI90ptc82rYMvmIghzPqZVR7jqmg==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.11_1786681912750_0.26132455622076733","host":"s3://npm-registry-packages-npm-production"}},"0.7.12":{"name":"@cyanheads/pixoo-toolkit","version":"0.7.12","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.7.12","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"d87e3cbbaa45b45deebee036285af480233c5d80","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.7.12.tgz","fileCount":39,"integrity":"sha512-TNwF4sRWm7uEYpb8dNpJz5pW56+m4XYIE0KEnSwK5zkhYuIwAtgzHd0BaCdpIGg5PE67ofD0TSG74accsfoGOQ==","signatures":[{"sig":"MEQCIFaB7eRd7Yn1kzCGFFX5zR5hr9iJewNcQC0/t9YkmVKbAiAk/EABciYpvtAJsp87Kx6ZEq4v2ct9lnDHe5PDPhNh9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259396},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"d87e3cbbaa45b45deebee036285af480233c5d80","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-TNwF4sRWm7uEYpb8dNpJz5pW56+m4XYIE0KEnSwK5zkhYuIwAtgzHd0BaCdpIGg5PE67ofD0TSG74accsfoGOQ==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.7.12_1786683018183_0.26605747775568056","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.8.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.8.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"9d780b4aacda7f445104d78345657acaec9fba77","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.8.0.tgz","fileCount":39,"integrity":"sha512-ek1eng8ejXM4ZED8uTvkcsevO4WVgGHAWG0ZQD8ROVK3GHARYzu65zC3T+aMbsNCmu4rVsV3O2vgQOXsxMYE2w==","signatures":[{"sig":"MEYCIQDXhQkIp045e81QXrJktJZZ9gD7qvki6N55suPuw8L2NgIhANwhNZMuTT3RwFQGpMlvJH/2GOAmI1tkacACToh9r1tA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263964},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"9d780b4aacda7f445104d78345657acaec9fba77","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-ek1eng8ejXM4ZED8uTvkcsevO4WVgGHAWG0ZQD8ROVK3GHARYzu65zC3T+aMbsNCmu4rVsV3O2vgQOXsxMYE2w==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.8.0_1786683767091_0.0678165872821288","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@cyanheads/pixoo-toolkit","version":"0.8.1","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.8.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"75ba7143943317062ce6cd7061ce9565b1d88743","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.8.1.tgz","fileCount":39,"integrity":"sha512-9urXKqYQSUuASutFPkqZwBB/6vA7B4k30439asuVL3LivHUDgeagq73PrnCyIT6skiKxdebddfagAPwhdYV+ZA==","signatures":[{"sig":"MEUCIEKEXdc39YnrklYXc9z1Rs1YPz44jKS/9A0GgOhrPucoAiEA+sZ+A8wBq6w0jGNtzBwe71tac6d04llQyUyVn0Wt8qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263964},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"75ba7143943317062ce6cd7061ce9565b1d88743","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-9urXKqYQSUuASutFPkqZwBB/6vA7B4k30439asuVL3LivHUDgeagq73PrnCyIT6skiKxdebddfagAPwhdYV+ZA==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.8.1_1786684286701_0.3600530574944918","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@cyanheads/pixoo-toolkit","version":"0.8.2","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.8.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"b72956da60e4043d44b7eed120284eaf3e7deeaa","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.8.2.tgz","fileCount":39,"integrity":"sha512-PU9I+aw9RQrqpXuu7PIEA442Pq2YdXbQ4g9ubcgDENApnLA0J8rO3dyopYfI9purg8GCDig6C7e+sgcUprLC+Q==","signatures":[{"sig":"MEUCIDJXZf2gwwPhxNQB5KMG/oWZ+AnaRh4szKF5fE97rjMLAiEA5HcjTPCjrOuwdPjIlZyo+FlTmHFZ7FrJ9ftE0G4qco8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265099},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"b72956da60e4043d44b7eed120284eaf3e7deeaa","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-PU9I+aw9RQrqpXuu7PIEA442Pq2YdXbQ4g9ubcgDENApnLA0J8rO3dyopYfI9purg8GCDig6C7e+sgcUprLC+Q==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"24.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.8.2_1786684794225_0.002542269195461966","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@cyanheads/pixoo-toolkit","version":"0.9.0","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"author":"Casey Hand (cyanheads)","license":"Apache-2.0","_id":"@cyanheads/pixoo-toolkit@0.9.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/pixoo-toolkit","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"67b56ef03d8338d257474f30d2eb785133e507fb","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.9.0.tgz","fileCount":54,"integrity":"sha512-mDjfUNE7srZZdHn6Tl4Ii6JBhUYSgnZwSb1WH4ZYWdnRvwKV4tSNkx9TvyaPgqbiabhVVdmbS/tCCB3lvuyBRw==","signatures":[{"sig":"MEQCIBWjz4R8AnfyegOG9XLzpVHeXHoiHSwhKhYWi2E9DaQdAiAlWbZ59xigOIbAeDg6AsyHz2KupYH582Mx9SENPGESEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA9kJYmG87RK0Vb6Jl4G2Q2uGpl5aNr1xicuI5lqlcvVAiBi5dXFYN94xMzjz8F2wgodiPkEiTjVvRXBdYavoWhmSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398493},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","shasum":"67b56ef03d8338d257474f30d2eb785133e507fb","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"},"./core":{"types":"./dist/src/core.d.ts","default":"./dist/src/core.js"}},"scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit && bun run tsc -p tests","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-mDjfUNE7srZZdHn6Tl4Ii6JBhUYSgnZwSb1WH4ZYWdnRvwKV4tSNkx9TvyaPgqbiabhVVdmbS/tCCB3lvuyBRw==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"_nodeVersion":"26.3.0","dependencies":{"sharp":"^0.35.3","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.10","prettier":"^3.9.6","@eslint/js":"^10.0.1","@types/bun":"^1.3.14","typescript":"^6.0.3","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/pixoo-toolkit_0.9.0_1790448614321_0.5842130351985424","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"_id":"@cyanheads/pixoo-toolkit@0.10.0","bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"dist":{"shasum":"37d21a50e68d267938f059c66c3784428ce08d02","tarball":"https://registry.npmjs.org/@cyanheads/pixoo-toolkit/-/pixoo-toolkit-0.10.0.tgz","fileCount":59,"integrity":"sha512-POJOFxsCbUzG0sr9xDDKH21nom8lfx/l/eV8zRL9eb1+Xd7PEcqDHvwefOQdFiNylfgfRdfBlQhwo0XJCyDx8Q==","signatures":[{"sig":"MEQCIGKyayiuDIrgcPK4O4IzPDF+S5ONSeVelrNxOFLU4BbPAiA0yFxY6lJSZPeYd8jKCnAb8xlxyDwa5RPM1oLpj2vH5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG6ZM4n16TPUmu4rWjJZsNulbTn73veWM6PV1Mf+QiJdAiEAhbBLWpilUNirQc+J/5IrT4HF+bhgr82sxO2lpqSpZhU="}],"unpackedSize":618120},"main":"dist/src/index.js","name":"@cyanheads/pixoo-toolkit","type":"module","types":"dist/src/index.d.ts","author":"Casey Hand (cyanheads)","shasum":"37d21a50e68d267938f059c66c3784428ce08d02","engines":{"bun":">=1.3.0","node":">=20.9.0"},"exports":{".":{"types":"./dist/src/index.d.ts","default":"./dist/src/index.js"},"./core":{"types":"./dist/src/core.d.ts","default":"./dist/src/core.js"}},"license":"Apache-2.0","scripts":{"dev":"bun run tsc --watch","demo":"bun run build && bun dist/scripts/demo.js","lint":"eslint src/ scripts/ tests/","test":"vitest run","build":"bun run tsc","check":"bun run devcheck && bun run test","clean":"bun run scripts/clean.ts","format":"prettier --write src/ scripts/ tests/","rebuild":"bun run clean && bun run build","devcheck":"bun run typecheck && bun run lint && bun run format:check && bun run docs:check","test:all":"bun run rebuild && bun run test","typecheck":"bun run tsc --noEmit && bun run tsc -p tests","docs:check":"bun run scripts/check-docs-sync.ts","test:watch":"vitest","list-skills":"bun run scripts/list-skills.ts","format:check":"prettier --check src/ scripts/ tests/","prepublishOnly":"bun run devcheck && bun run test:all"},"version":"0.10.0","_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"homepage":"https://github.com/cyanheads/pixoo-toolkit","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"_integrity":"sha512-POJOFxsCbUzG0sr9xDDKH21nom8lfx/l/eV8zRL9eb1+Xd7PEcqDHvwefOQdFiNylfgfRdfBlQhwo0XJCyDx8Q==","repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"_npmVersion":"10.8.3","description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","directories":{},"maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"_nodeVersion":"26.3.0","dependencies":{"sharp":"^0.35.4","gifenc":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.11.0","vitest":"^5.0.2","prettier":"^3.9.9","@eslint/js":"^10.0.1","@types/bun":"^1.4.2","typescript":"^6.0.3","typescript-eslint":"^8.70.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pixoo-toolkit_0.10.0_1790460964845_0.3396570560613892"}}},"time":{"created":"2026-02-20T13:51:52.917Z","modified":"2026-09-26T22:16:05.111Z","0.3.2":"2026-02-20T13:51:53.154Z","0.4.0":"2026-02-23T07:20:20.236Z","0.5.0":"2026-06-12T02:42:59.902Z","0.6.0":"2026-06-12T03:02:02.429Z","0.6.1":"2026-06-12T09:48:00.184Z","0.7.0":"2026-08-13T16:08:22.935Z","0.7.1":"2026-08-13T16:54:07.528Z","0.7.2":"2026-08-13T17:02:45.079Z","0.7.3":"2026-08-13T17:29:02.894Z","0.7.4":"2026-08-13T17:54:48.217Z","0.7.5":"2026-08-13T18:13:27.468Z","0.7.6":"2026-08-13T18:26:25.166Z","0.7.7":"2026-08-13T19:16:17.978Z","0.7.8":"2026-08-14T03:39:39.184Z","0.7.9":"2026-08-14T03:57:18.578Z","0.7.10":"2026-08-14T04:16:43.662Z","0.7.11":"2026-08-14T04:31:52.898Z","0.7.12":"2026-08-14T04:50:18.346Z","0.8.0":"2026-08-14T05:02:47.265Z","0.8.1":"2026-08-14T05:11:26.838Z","0.8.2":"2026-08-14T05:19:54.392Z","0.9.0":"2026-09-26T18:50:14.551Z","0.10.0":"2026-09-26T22:16:04.965Z"},"bugs":{"url":"https://github.com/cyanheads/pixoo-toolkit/issues"},"author":"Casey Hand (cyanheads)","license":"Apache-2.0","homepage":"https://github.com/cyanheads/pixoo-toolkit","keywords":["pixoo","divoom","led-matrix","pixel-art","animation","iot","display","pixoo-64","pixoo-32","pixoo-16"],"repository":{"url":"git+https://github.com/cyanheads/pixoo-toolkit.git","type":"git"},"description":"TypeScript toolkit for Divoom Pixoo displays — pixel rendering, animations, and device control","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"readme":"<div align=\"center\">\n\n<img src=\"assets/readme_header.png\" width=\"256\" />\n\n# @cyanheads/pixoo-toolkit\n\n**TypeScript toolkit for Divoom Pixoo displays**\\\nPixel rendering, animations, and device control over the local HTTP API.\\\nSupports Pixoo-16, Pixoo-32, and Pixoo-64.\n\n[![TypeScript](https://img.shields.io/badge/TypeScript-6.0-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.3-f9f1e1?logo=bun&logoColor=black)](https://bun.sh/) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\n</div>\n\n---\n\n> **Building for AI agents?** [`@cyanheads/pixoo-mcp-server`](https://github.com/cyanheads/pixoo-mcp-server) is built on this toolkit — it exposes Pixoo rendering, scene composition, and device control as Model Context Protocol tools.\n\n## Overview\n\nFull programmatic control of Divoom Pixoo displays from TypeScript — bypassing the Divoom app entirely. Push custom visuals, animations, dashboards, and interactive displays to the RGB LED matrix over your local network. Supports all three Pixoo sizes: 16×16, 32×32, and 64×64.\n\n### Highlights\n\n| Module | What it does |\n|---|---|\n| **Canvas** | RGBA pixel buffer at a panel size (16/32/64) or any width × height up to 4096 for layers and strips — alpha-aware compositing with `normal`, `add`, `screen`, and `multiply` blend modes, pixel access, rects, circles, lines, triangles, translucent fills and strokes, stroke widths, anti-aliased lines and circles, 3 gradient modes, clone, scrolling; exports flatten to device RGB |\n| **Bitmap Fonts** | Two built-in text sizes (5×7 and 3×5 compact with lowercase), each covering printable ASCII plus `° ← ↑ → ↓ ▲ ▼ ♥ · …`, with tight proportional metrics; 11×18 numerals on one advance for clocks and readouts; BDF font loading with per-glyph offsets and advances; measurement and centered rendering |\n| **Color System** | RGB/HSL types, 30+ named colors, interpolation, hex parsing — strict resolution (typos throw, `tryResolveColor` to probe) |\n| **Device Client** | Full Pixoo HTTP API — frames, animations, GIF playback from a URL, channels, brightness, screen on/off, clock faces, text overlays, scoreboard, timer, stopwatch, noise meter, buzzer, batch commands, LAN discovery. Every call returns a discriminated `PixooResult` — failures can't be mistaken for success. Pushed canvases must match the configured display size, and `minPushInterval` spaces frames to respect the firmware's push limit |\n| **Image Loading** | Alpha-preserving resize to canvas via sharp from a file path or in-memory bytes, always from the full-resolution decode, so the default nearest-neighbor kernel keeps pixel art crisp in every format; animated GIF and WebP decoded to frames with their delays; sprite downsampling with color classification |\n| **LED Finishing** | Exact area downsampling in linear light that never rings on hard edges; palette reduction by variance split or to your own colors, with Bayer 4×4 or Floyd–Steinberg dithering; correction for a panel's measured drive-to-light response, and a preview of what the panel shows. Runs in the browser through `/core` |\n| **Animation Builder** | Multi-frame sequences with per-frame render callbacks |\n| **SVG Paths** | Parse SVG `d` attributes (lines + sampled Bézier curves and elliptical arcs) and rasterize with even-odd scanline fill — multi-subpath holes — or as 1-pixel strokes, for the `fill=\"none\"` outline icons most icon sets ship |\n| **PNG & GIF Export** | Zero-dependency PNG encoder (using `node:zlib`), animated GIF encoder (via gifenc), nearest-neighbor upscaling at any positive integer scale (by default 8, lowered so a large canvas stays within 4096 px per side). PNG defaults to alpha flattened over black — what the panel shows — with `{ alpha: true }` to keep the alpha channel instead |\n\n## Getting Started\n\n### Prerequisites\n\n- **Bun** >= 1.3 or **Node.js** >= 20.9\n- **Divoom Pixoo** (16, 32, or 64) on the same network\n\n### Install\n\n```bash\n# npm\nnpm install @cyanheads/pixoo-toolkit\n\n# bun\nbun add @cyanheads/pixoo-toolkit\n```\n\n### Local Development\n\n```bash\ngit clone https://github.com/cyanheads/pixoo-toolkit.git\ncd pixoo-toolkit\nbun install\nbun run devcheck\nbun run test:all\n```\n\nThe test suite runs on Vitest 5, which needs Node.js >= 22.12.\n\n> **Tip:** Set `PIXOO_IP` to your device's local IP address. Set `PIXOO_SIZE` to `16` or `32` for non-64 displays. See `.env.example`.\n\n## Usage\n\n### Quick Example\n\n```typescript\nimport { PixooClient, Canvas, Color, drawTextCentered, FONT_5x7, savePng } from '@cyanheads/pixoo-toolkit';\n\n// Set PIXOO_IP env var to your device's local IP (see .env.example)\nconst device = new PixooClient(process.env.PIXOO_IP!);\nconst canvas = new Canvas();\n\ncanvas.gradientV([10, 5, 30], [5, 15, 40]);\ndrawTextCentered(canvas, 'HELLO', 28, Color.WHITE, { font: FONT_5x7 });\n\nawait savePng(canvas, 'output/hello.png');\nconst res = await device.push(canvas);\nif (!res.ok) console.error(`push failed — ${res.kind}: ${res.message}`);\n```\n\n### Finding Your Device\n\nNo IP handy? Discover Pixoo devices on your LAN (calls Divoom's cloud discovery endpoint, so it needs internet access):\n\n```typescript\nconst [found] = await PixooClient.discover();\nconst device = new PixooClient(found.ip);\n```\n\n### Animation\n\n```typescript\nimport { PixooClient, buildAnimation, drawTextCentered, hslToRgb, Color, FONT_5x7 } from '@cyanheads/pixoo-toolkit';\n\nconst device = new PixooClient(process.env.PIXOO_IP!);\nconst anim = buildAnimation(20, 120, (frame, i, total) => {\n  frame.clear('black');\n  const color = hslToRgb([(i / total) * 360, 0.9, 0.6]);\n  frame.fillCircle(32, 32, 10 + i, color);\n  drawTextCentered(frame, 'HI', 28, Color.WHITE, { font: FONT_5x7 });\n});\n\nawait device.pushAnimation(anim.frames, anim.speed);\n```\n\nAnimation frames passed to `pushAnimation()`, `encodeAnimationGif()`, or `saveAnimationGif()` must all have the same dimensions.\n\n### Colors\n\nString colors accept case-insensitive named colors or an optional single `#` followed by exactly 3 or 6 ASCII hexadecimal digits. `resolveColor()` throws for every other string; use `tryResolveColor()` when an invalid string should return `null` instead.\n\n### Fonts\n\n`FONT_5x7` (the default) and `FONT_3x5` cover printable ASCII plus `° ← ↑ → ↓ ▲ ▼ ♥ · …`. `FONT_DIGITS_11x18` sets large numerals on one 13-pixel advance, so a centered clock stays put as the time changes; it holds `0–9`, space, and `: . - + / % ° ?`:\n\n```typescript\nimport { Canvas, drawText, drawTextCentered, FONT_DIGITS_11x18 } from '@cyanheads/pixoo-toolkit';\n\nconst canvas = new Canvas();\ndrawText(canvas, '72°F ▲', 2, 2, 'white');\ndrawTextCentered(canvas, '12:45', 40, 'cyan', { font: FONT_DIGITS_11x18 });\n```\n\n`scale` takes any finite number of at least 1, and `letterSpacing` any finite number, negative included. `drawText()`, `measureText()`, and `drawTextCentered()` throw `RangeError` naming the function and the option for anything else, and for a non-finite position, as the canvas primitives do.\n\n`parseBdf()` loads a font in BDF, the bitmap format most pixel fonts ship in. It takes the file's text rather than a path, so it works from `/core` too:\n\n```typescript\nimport { readFile } from 'node:fs/promises';\nimport { parseBdf } from '@cyanheads/pixoo-toolkit';\n\nconst font = parseBdf(await readFile('fonts/spleen-8x16.bdf', 'utf8'));\ndrawText(canvas, 'Hello', 0, 20, 'white', { font });\n```\n\nEach glyph is keyed by its code point and drawn at the offset and advance its `BBX` and `DWIDTH` give, on the font's baseline. `letterSpacing` defaults to 0 for these fonts and `FONT_DIGITS_11x18`, since their advances already include the gap. Malformed BDF throws `SyntaxError` naming the line; a glyph wider than 32 pixels or a charset other than ISO10646 or ISO8859-1 throws `RangeError`. A character the font lacks draws its `?`.\n\n### Loading Images\n\n```typescript\nimport { loadImage, downsampleSprite, renderSprite, Canvas, savePng } from '@cyanheads/pixoo-toolkit';\n\n// Full-resolution resize to 64×64\nconst canvas = await loadImage('assets/photo.png');\n\n// Or downsample into a pixel-art sprite grid\nconst sprite = await downsampleSprite('assets/clawd.png', 10, 8);\nconst c = new Canvas();\nrenderSprite(c, sprite.grid, { scale: 4, y: 24 });\nawait savePng(c, 'output/sprite.png');\n```\n\nBoth also take encoded bytes — a `Buffer` or any `Uint8Array` — so an image you already hold needs no temp file:\n\n```typescript\nconst bytes = new Uint8Array(await (await fetch(url)).arrayBuffer());\nconst fetched = await loadImage(bytes, { fit: 'cover' });\n```\n\n`loadAnimation` decodes every frame of an animated GIF or WebP, each on its own canvas. The device takes one speed per animation and turns unstable above ~40 frames, so cap with `maxFrames` — it samples a longer source evenly and sums the delays each kept frame stands in for:\n\n```typescript\nimport { loadAnimation } from '@cyanheads/pixoo-toolkit';\n\nconst anim = await loadAnimation('assets/loop.gif', { size: 64, fit: 'contain', maxFrames: 40 });\nconst speed = Math.round(anim.delays.reduce((sum, d) => sum + d, 0) / anim.frames.length);\nawait device.pushAnimation(anim.frames, speed);\n```\n\n### Canvases of Any Size\n\n`new Canvas(width, height)` (or `new Canvas(size)` for a square) takes any dimensions from 1 to 4096, and `Canvas.fromRgba(bytes, width, height)` copies RGBA data of any size. Only a canvas the size of the panel can be pushed; other sizes are layers you `blit` from — here, text rendered once to a wide strip and scrolled across the panel:\n\n```typescript\nimport { Canvas, drawText, measureText } from '@cyanheads/pixoo-toolkit';\n\nconst message = 'Rendered once, scrolled by offset';\nconst strip = new Canvas(measureText(message) + 64, 7);\ndrawText(strip, message, 64, 0, 'white');\n\nconst frames = Array.from({ length: 40 }, (_, i) =>\n  new Canvas().clear('black').blit(strip, -i * 4, 28),\n);\nawait device.pushAnimation(frames, 80);\n```\n\n### Finishing for the LEDs\n\nRender large, then finish the frame for the panel: `downsample` shrinks it, `quantize` reduces it to a palette, and `correctForPanel` maps it through your panel's measured response. Each returns a new canvas and leaves its input alone.\n\n```typescript\nimport { Canvas, downsample, quantize, correctForPanel, simulatePanel } from '@cyanheads/pixoo-toolkit';\n\nconst hiRes = new Canvas(512, 512); // draw at 8× the panel\nconst frame = downsample(hiRes, 64, 64);\nconst poster = quantize(frame, { colors: 16, dither: 'bayer4' });\nconst brand = quantize(frame, { palette: ['#000000', '#f0ead6', 'claude'], dither: 'floyd-steinberg' });\n\n// [drive, light] points measured on your panel, from [0, 0] to [255, 1]\nconst response = [[0, 0], [4, 0], /* …your measurements… */ [255, 1]] as const;\nawait device.push(correctForPanel(poster, response));\nconst preview = simulatePanel(poster, response); // what the panel shows if `poster` is pushed as is\n```\n\n- `downsample` averages each output pixel's exact footprint in linear light, partial pixels included at a non-integer ratio, so no channel leaves the range of the source pixels it covers. Color is weighted by alpha, and a fully transparent footprint stays `[0, 0, 0, 0]`.\n- `quantize` takes exactly one of `colors` (2–256: a palette built from the frame by variance split; a frame already within the limit comes back unchanged) and `palette` (your colors). `dither` is `'none'` (nearest color), `'bayer4'` (a 4×4 ordered mix of the two nearest colors), or `'floyd-steinberg'` (error diffusion in linear light). Alpha passes through.\n- `correctForPanel` gives each channel the drive whose light is nearest the sRGB value's light, and `simulatePanel` shows what a frame looks like pushed as is. Both flatten alpha over black and return an opaque canvas. No response ships with the toolkit — measure your own panel. A Pixoo-64 at brightness 100 stays dark through drive 4, so its response starts `[[0, 0], [4, 0], …]`, and correction can't create dark levels the panel lacks.\n\n### Blending, Alpha, and Strokes\n\n`blit` combines layers by `mode`: `normal` (source-over, the default), `add` (light sums, clamped — glow and trails), `screen`, or `multiply`. The fills and strokes take an `alpha` option, and the strokes a `width` in whole pixels; `drawLine` and `drawCircle` also take `antialias`:\n\n```typescript\nimport { Canvas } from '@cyanheads/pixoo-toolkit';\n\nconst glow = new Canvas().fillCircle(28, 32, 14, [255, 110, 20], { alpha: 0.5 });\nconst canvas = new Canvas().clear('black');\ncanvas.blit(glow, 0, 0, { mode: 'add' }).blit(glow, 8, 0, { mode: 'add' }); // the overlap brightens\ncanvas.drawRect(4, 4, 56, 56, 'white', { width: 2, alpha: 0.8 }); // width grows inward\ncanvas.drawLine(0, 0, 63, 40, 'cyan', { width: 3, antialias: true });\ncanvas.drawCircle(32, 32, 20, 'gold', { width: 2, antialias: true, alpha: 0.6 });\n```\n\n`alpha` is 0–1 opacity on `blendPixel`'s scale, not `setPixel`'s 0–255 byte, and each pixel is composited once. `drawRect` grows its width inward, inside the region `fillRect` fills; `drawLine` and `drawCircle` center it on the path. Anti-aliasing shades each edge pixel by how much of it the stroke covers, from the exact coordinates; without it, a line floors its endpoints as the 1px line does, and a circle keeps its exact center. The 1px `drawCircle` ring lies on the `fillCircle` disc of the same center and radius. Omitting the options draws exactly what the 1px, opaque calls always have.\n\n### SVG Paths\n\nPass the `d` attribute and the source `viewBox`; the path is scaled into the target rect.\n\n```typescript\nimport { Canvas, renderSvgPath } from '@cyanheads/pixoo-toolkit';\n\nconst canvas = new Canvas();\n\n// Filled path — even-odd, so nested subpaths cut holes\nrenderSvgPath(canvas, filledIcon, 'cyan', [24, 24], [8, 8, 24, 24]);\n\n// Outline path — 1px stroke along the segments\nrenderSvgPath(canvas, outlineIcon, 'cyan', [24, 24], [32, 8, 24, 24], { mode: 'stroke' });\n```\n\nFill is the default. Reach for `{ mode: 'stroke' }` when the source path is `fill=\"none\" stroke=\"...\"` — the outline style Lucide, Feather, and Heroicons outline ship — since filling one of those paints the region the outline encloses rather than the outline itself. Stroke is 1 pixel wide; `stroke-width`, joins, caps, and dashes are not interpreted.\n\n### Browsers and Bundlers\n\nThe main entry loads sharp, `node:zlib`, and `node:fs/promises`, so it needs Node or Bun. `@cyanheads/pixoo-toolkit/core` exports the canvas, color, font, SVG path, animation, and LED finishing modules, none of which reach a Node built-in or a package, so a bundler can target the browser with them:\n\n```typescript\nimport { Canvas, drawText, FONT_5x7 } from '@cyanheads/pixoo-toolkit/core';\n\nconst canvas = new Canvas(64);\ndrawText(canvas, 'HI', 1, 1, 'cyan', { font: FONT_5x7 });\nconst picData = canvas.toBase64(); // Draw/SendHttpGif payload, no Buffer needed\n```\n\nBoth entries share one `Canvas` class, so a canvas drawn through `/core` pushes with `PixooClient` from the main entry. The device client, image loading, and PNG/GIF export stay on the main entry. TypeScript resolves the `/core` subpath under `moduleResolution` `node16`, `nodenext`, or `bundler`.\n\n## Project Structure\n\n```\nsrc/\n  canvas.ts       RGBA pixel buffer (panel sizes or any size up to 4096) + drawing primitives, blend modes, alpha, stroke width, anti-aliasing\n  client.ts       PixooClient — HTTP device control (all Pixoo sizes)\n  color.ts        RGB/HSL types, named colors, utilities\n  font.ts         Bitmap fonts (5×7, 3×5, 11×18 numerals), BDF loading, text rendering\n  image.ts        Image + animated GIF/WebP loading (sharp), sprite downsampling\n  animation.ts    Multi-frame animation builder\n  preview.ts      PNG + animated GIF encoder\n  svg-path.ts     SVG path parser + polygon rasterizer (fill and stroke)\n  finish.ts       LED finishing: area downsampling, palette quantization + dithering, panel response correction\n  core.ts         Browser-safe entry (/core): canvas, color, font, SVG, animation, finishing\n  index.ts        Barrel export — core plus the device client, image, and preview\ntests/            Vitest tests — one per module, plus packaging.test.ts (entries, browser bundle, packed files); type-checked via tests/tsconfig.json\nscripts/          Runnable display scripts\nassets/           Source images (PNGs) for sprites\noutput/           Generated PNG previews (gitignored)\n```\n\n## Device API\n\nAll commands go to `POST http://<device-ip>/post` with a JSON body containing a `Command` field. The `PixooClient` class wraps this — use `client.send(command, params)` for raw access, or the typed convenience methods.\n\nFor raw calls, the positional `command` is authoritative if `params` also contains a top-level `Command`; other parameters, including nested `CommandList` entries, are preserved. The client retries network failures, abort-driven timeouts, and HTTP 408, 429, 500, 502, 503, and 504 with exponential backoff. Other HTTP failures and device rejections return immediately; `retries: 0` makes one attempt.\n\nEvery call returns a `PixooResult`: `{ ok: true, data }` or `{ ok: false, kind, message }` where `kind` is `'network' | 'timeout' | 'http' | 'device'` — narrow on `ok` to reach the data, or use `unwrap()` to throw on failure.\n\n`size` tells the client which panel it is talking to. `push()` and `pushAnimation()` throw `RangeError` for a canvas that doesn't match it, before any request goes out — the device would render a mismatched frame garbled or not at all, and that failure is invisible from the calling side. A `PixooResult` is reserved for what the device and network do; a canvas sized wrong at construction is a coding error.\n\nA `NaN` or infinite number passed to `setTimer()`, `setScoreboard()`, `setClock()`, `playBuzzer()`, `sendText()`, `setChannel()`, `clearText()`, or the `speed` of `push()` and `pushAnimation()` throws `RangeError` naming the method and parameter, also before any request — JSON would send it to the device as `null`. For `push()` and `pushAnimation()` that includes the `Draw/ResetHttpGifId` request ahead of the frames. `setBrightness()` clamps `±Infinity` to 0–100 and throws only for `NaN`.\n\nThe firmware can freeze after roughly 300 consecutive pushes, so pushes should be spaced about a second apart. `minPushInterval` enforces that spacing across `push()` and `pushAnimation()` — including between the frames of one animation, which is where the pushes accumulate fastest:\n\n```typescript\nconst device = new PixooClient(process.env.PIXOO_IP!, { size: 64, minPushInterval: 1000 });\n```\n\nIt is off by default. The interval covers the `Draw/SendHttpGif` frames only, measured from when each send starts; the `Draw/ResetHttpGifId` that precedes a push and every non-drawing command go out unthrottled.\n\n```typescript\nimport { PixooClient, Channel, unwrap } from '@cyanheads/pixoo-toolkit';\n\nconst device = new PixooClient(process.env.PIXOO_IP!);\n\n// Raw command\nconst res = await device.send('Channel/SetBrightness', { Brightness: 80 });\nif (!res.ok) throw new Error(res.message);\n\n// Typed convenience\nawait device.setBrightness(80);\nawait device.setChannel(Channel.Custom);\n\n// unwrap() for scripts that prefer exceptions\nconst { SelectIndex } = unwrap(await device.getChannel());\n```\n\n`playGifUrl()` hands the device a GIF URL instead of frames. The Pixoo downloads the file itself and loops it, so there is no request per frame and no ~40-frame ceiling — a Pixoo-64 has played 800-frame, 4 MB GIFs this way. You host the file, over `http` or `https`:\n\n```typescript\nconst res = await device.playGifUrl('http://192.0.2.10:8765/loop.gif');\nif (!res.ok) console.error(`${res.kind}: ${res.message}`);\n```\n\n`ok: true` means the device accepted the command, not that the GIF played: it replies before downloading, and reports success for a 404, an unreachable host, or a file that isn't a GIF. Serve a 16×16, 32×32, or 64×64 GIF — any other size reboots the device once it downloads. A URL over 255 bytes (UTF-8) throws `RangeError` without sending a request — the device gives no reply to one and reboots. `minPushInterval` doesn't apply; a play is one command.\n\n## License\n\n[Apache 2.0](LICENSE)\n","readmeFilename":"README.md"}