{"_id":"@axieinfinity/mixer","_rev":"18-669cc8a97979a930d023cb0ca2638765","name":"@axieinfinity/mixer","dist-tags":{"latest":"1.4.9"},"versions":{"0.1.1":{"name":"@axieinfinity/mixer","version":"0.1.1","author":{"name":"Axie Infinity Engineering","email":"engineering@axieinfinity.com"},"_id":"@axieinfinity/mixer@0.1.1","maintainers":[{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"dist":{"shasum":"f89464ec761a87f46589e2d5a43e732fd53de735","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-0.1.1.tgz","fileCount":57,"integrity":"sha512-TJDwHWXduFfrgOsodzBiWet/sIyj924M+btaSYBkPlWiAgzOphCDlHQtXhX3JwBsBWFeNqL9pEuAhbv4B1THdg==","signatures":[{"sig":"MEUCIQDt9iaxYDeD4BwAqVjY77Ph6MWw2H8jPMErb/W29zM/SAIgY90UDebhDk821FR4/uouwXXvjBaGlFp+NF0uuylKycI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7507318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizSejACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3YQ/+McyK9ONG6cyzGnjW8kWNuuiRFVc1DQ2Cj3XcrrUwHZiWTWEy\r\nKZ0rcNXugiGJcqTq7SawW2nEkZcU5iCH0asTTb4CwQ76OtDhX8gEztZqdUOj\r\nVRsQl0QSrciSzPIxNgU+GLi0i7Yn0IHxVBE9VlldFtqI3E8mU5oBkdavg5CS\r\nNq2n9ULcPqn8s7ni2+8D3zFJgajxW46Z18BNQUHen57gAQM7GyKLYBnLLAO/\r\nMPFsAdnElmgWVBQVFInNxRTAi7jQYPhKm8gQuYVIYuvTz0W8OiuRKSXI+lby\r\n8CsSc1z9EsFU2wG8rLdK6GHFKIlYLprAQK9RXsmAILvxPVKdVBELodgC4vNV\r\nJG32kLoSnMc2AdTWaqd1Iw4izKrzefmlg0hjJLLhvxer5o+/EDG12rbKCnou\r\nuS+yZJq0n2ySqhlF0JYOWEm4MlO6L1J4OTSS8xxpTVdAgvJRIeglP2YSvvMV\r\n6VVaygQXQw0Bnm40DLK27l3txxYA+45tROXBOP/SY1A2EGTfHRmmOamVJNnV\r\nd0Tts0It5rLRE6kCg7+jH3gSlTr8oZab4bU7gsJO6PAUmslBmK70i861CmYK\r\nLs1aBdQfxlFxT/nnCTjkCPkgFNIsX90FoYeVSEAWNcdH4964x/5RhsMg6wZl\r\n86hXE9HvLMQQZ1DLwDvr2bjTCHQXyEjyGUg=\r\n=Q5b5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json","build":"rm -rf dist && tsc"},"_npmUser":{"name":"minhfinity","email":"minh.le@skymavis.com"},"description":"Axie Mixer provides developer friendly tools to bring Axies to life. All of the Axie classes, bodies, body parts, and animations are available. This project is used in various Axie Infinity projects, such as Marketplace and Axie Infinity: Origin.","directories":{},"dependencies":{"bn.js":"^5.2.1","lodash":"^4.17.21"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tslint":"^6.1.3","prettier":"^2.7.1","typescript":"^4.7.4","@types/node":"^17.0.45","@types/bn.js":"^5.1.0","@types/lodash":"^4.14.182","tslint-config-prettier":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_0.1.1_1657612195329_0.21163964447648342","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@axieinfinity/mixer","version":"1.0.1","author":{"name":"Axie Infinity Engineering","email":"engineering@axieinfinity.com"},"_id":"@axieinfinity/mixer@1.0.1","maintainers":[{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"dist":{"shasum":"6a38fde8eaa7e83e144a294dd625ed6fe7924eff","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.0.1.tgz","fileCount":56,"integrity":"sha512-PY+8hF1yYKXmHXbNTEaM15Df5CGerud900C/vAG6xTlpr5R7SdFmvi/EfxxdNVPE0X9wV3dSH/Hb39IiRAXz/A==","signatures":[{"sig":"MEUCICEaaYKNpbmF40jBoNPh3ZQj5mdMZfI8yKA348+Jm5t5AiEA+TZ6aNUFRL1v3V5v5mcfgALxAqex8ndodjB45Rr0nPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9885698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1noEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTMg/8CflqLsNTiF4UNbxLL/EO/sSd52BSQIn5YKcI+revyAJd3pyo\r\nVT6ngdnurfAcr/eHdrSIUlRA388+L+/YW0UUGq5P09P/Y9flDW8GaSaM15be\r\nWTciPWE4GIcaSVNiLAfASMz5RzQVxNPiT/w2HfzsZ8OKGxxiKJcC425TVRue\r\nSEYof3qggNtnmJjhbvIUK2T97w5V5aCcXVGEyr7i2bb1M5fLFUkpqfLkP5NZ\r\nhQRdAqkFKOmBJmYzd+uwUMK/qnB1B/xyIZYL9R72V8i4Jd3Gd0OA5+3LsAjI\r\ngEtGkMhHKcqCdvmHZ2/TZjTAdh5qJwc5q2xJ/sqsHAcu/o3SWJdKphuaNOGj\r\nCudFjVCJygLz7sBXYWih4P2nJbYXKgoccW5X4S3iyXpGWNBxyEXXyoNQ75ut\r\nKc2XI6PjBZLuI5bNvVXpzAK2di0wziFm8K5bD2D65fPKV+WDTvC+iOiRoY2V\r\nzjRtc2clkbavI3KuwBhrh4bJSW4YWskRmb9FujSd+r/i7cBCqm+T/au7cgYg\r\nbcrLoTcPMtGbbxufThzui4UmvsQlQjh5uoAA/63NmV6edAE6v3ayqwGoJjv1\r\nTEEGX2zN6RaAXTcAnc8cCKFZcpxOcqH3cey/NaeojrkKNqrqc0COoFK3+ZIH\r\njCwc3SLtniQfxtxdVVUkGUWLkhTAINNd/FQ=\r\n=Tz5t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json","build":"rm -rf dist && tsc"},"_npmUser":{"name":"minhfinity","email":"minh.le@skymavis.com"},"repository":{"url":"git@github.com:axieinfinity/hasagi.git","type":"git","directory":"packages/mixer"},"directories":{},"dependencies":{"bn.js":"^5.2.1","lodash":"^4.17.21"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslint":"^6.1.3","prettier":"^2.7.1","typescript":"^4.7.4","@types/node":"^17.0.45","@types/bn.js":"^5.1.0","@types/lodash":"^4.14.182","tslint-config-prettier":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.0.1_1658223107960_0.4648087064983024","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@axieinfinity/mixer","version":"1.2.0","author":{"name":"Axie Infinity Engineering","email":"engineering@axieinfinity.com"},"_id":"@axieinfinity/mixer@1.2.0","maintainers":[{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"dist":{"shasum":"b238be9274431b69cb7c36007c45b891b9451766","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.2.0.tgz","fileCount":56,"integrity":"sha512-1MgOB3yQvVXCiFZ2ssFd2Ar/9sNePEmYvDO8EyWGlDz77wJUEU6w5JMER6cOq+kQmO3LpixiAmpFv9fdQhrRIg==","signatures":[{"sig":"MEYCIQDTCx95SQeOtXsGAINAboNoVMNsvJktzr+sLBP/nAeUKgIhAK7szuqb8NsB20uVu7e+N+NmgkACCuQVs+gY/c4cKC2B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10177866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj14KfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqp7Q//WNt2xygqcn/wukS/8T6CvCXB5zGfsWSGITR5s+h9K4guXiuq\r\n2pk42/RY2Lc4inLBNDx5Z8t/Iuu6AZL/HhTbUCJkmDRIbTihutj9Vqfnup9Q\r\nowEEpyG3+pB1R/0kcxt/NFJyPUgsFJ+ynm1DhE8ClOc+j7zzVNQ+ODLanNSV\r\njg9efQNeUAn170uVlOQBTNTrRrvOY6U/8wbAlbPXZRb+TYPHYbtjGLSmVkzW\r\nVJsQLuB1/atmFq83geCcKPqQ6bjCwRrY1EeyuRYiHjMPwc3XYrKDmF9ikTH7\r\nWpjXoGMVradIlDBDLqE8EYr/DFteW4Hh/2ONo1TLEm2BCqUGA0H32H+TqJB8\r\nnHpna1FaFKhY/uSM9bRfCZF6kbk9OBhlzQSHKb1/T3YKHB4ZOiGAoKCLGsYz\r\n/GypIA4EzhVWxCNeMpXVf6SXBbGy8WWfHEhSc+N/QiYiKW59ewELUmibCuQa\r\nMZa31sN8M+v83EM8YFr0KJRcLk3IaGi6XzYY/ndB9RqLFMErsNxU0ELhypHq\r\nLRaCFoCFJOt5JvPPh6KDu25kpECJKbz1t0iD9jZSe+oSfTh4bS/fzrrLcUye\r\n5lGm5DgvIH5KRHjDzNChzTj7M2NI9Xw+HWCTpXo2AREey4qHUveLseskP+cs\r\nDBYRYVaJUkhAKT/Ldf3YIgm9fuhHOwqvieE=\r\n=q2ZV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json","build":"rm -rf dist && tsc"},"_npmUser":{"name":"minhfinity","email":"minh.le@skymavis.com"},"repository":{"url":"git@github.com:axieinfinity/hasagi.git","type":"git","directory":"packages/mixer"},"directories":{},"dependencies":{"bn.js":"^5.2.1","lodash":"^4.17.21"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tslint":"6.1.3","prettier":"2.7.1","typescript":"4.7.4","@types/node":"17.0.45","@types/bn.js":"5.1.0","@types/lodash":"4.14.182","tslint-config-prettier":"1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.2.0_1675068062888_0.12314365698358887","host":"s3://npm-registry-packages"}},"1.3.0-beta.1":{"name":"@axieinfinity/mixer","version":"1.3.0-beta.1","author":{"name":"Axie Infinity Engineering","email":"engineering@axieinfinity.com"},"_id":"@axieinfinity/mixer@1.3.0-beta.1","maintainers":[{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"dist":{"shasum":"e4205b1718e4856a50eb5f7eda96d8a4964d59a3","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.3.0-beta.1.tgz","fileCount":7,"integrity":"sha512-OwesCPhZATfg4o3ThCb31Lj9ew5p7fq+TFwtWgByR5lDPJzs5M46AUwomG/yaMWEduUphvUfd62y5MY6hiHzzQ==","signatures":[{"sig":"MEUCIQDLaJMj0DOJSo4hqI48y6bm4y4WpHXhwxnd6xndLRe8UgIgcx9AsTQZ8ixcdC2JASsbPWbPpbdZyTZVH5GdnCy/zzA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFBzJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmph4BAAoapykq0nXdundfS7dOE0qfk/rLK8jatVfRaKG/qNDwi49lBp\r\nFnNVpGlt3rsq1J7izqgiWiLwCyy3rRk6zXTR5tHdAFULwckajIwGMHLTmjms\r\nf+je6Nl77cma+F66xW6GLaZvhjiD7PPTeYiT14nTyaWwCwNavluOf4umz3Le\r\nYoAtmfUKQMYgwiNDe5hkSpvbrS0kiUZVv4NmKQyCBofXK3kyW17kPsMDSNOr\r\nxOJv/fkRZeQvUULBPtv/2plKk0e8LNAyMuAusNRJrl+vjaUtLb4K4BfHk2qS\r\nai2lhlj0Ggb5vRqBSqxElNP/dWZXCpg6yBo9iyMQXPJfinEca7WSDDAdOatu\r\ndVwq9gJhpMIwNvMyECCNFD1ECdXkk6Avpl/GLpuqmsXMXG2i1ptRLtii0ZF1\r\nmo/Zu2il4XbsvxaUVU303RPa6vgPIT91SJ0Jb+k41r3ygDzuL7Wxk3/7R1FV\r\nnP+x3hWhITsR/iRRnvP4ISwwoDvJMUcDKo9GBrWC2THpg2Zmt5N1pRPT8bzQ\r\nCCKRsmyAmgJ/YPFa8/QaTnTmmmxqCR7rFuubJnBc7EyUe7KCpRHtuPzF/0sw\r\n2Gf2ExKa8cGTgIgP/qJQ8JiwSyAKhxiwDtDemf5zzxO6TuGmWSsPjM8MTCLb\r\nAXwYK5VVOvnsMYnRoy5oEwWM003GuO7c3R8=\r\n=+Evm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/index.ts"],"mifiny":true,"sourcemap":true,"splitting":true},"types":"dist/index.d.ts","module":"dist/index.js","scripts":{"lint":"tslint -p tsconfig.json","build":"rm -rf dist && tsup --minify terser"},"_npmUser":{"name":"minhfinity","email":"minh.le@skymavis.com"},"description":"```js import { initMixer, AxieMixer } from \"../dist/index.js\"; import * as fs from 'fs';","directories":{},"dependencies":{"bn.js":"^5.2.1","lodash":"^4.17.21"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^6.6.0","terser":"^5.16.3","tslint":"^6.1.3","prettier":"^2.7.1","@swc/core":"^1.3.35","typescript":"^4.7.4","@types/node":"^17.0.45","@types/bn.js":"^5.1.0","@types/lodash":"^4.14.182","tslint-config-prettier":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.3.0-beta.1_1679039689085_0.8688062094432318","host":"s3://npm-registry-packages"}},"1.3.0-beta.2":{"name":"@axieinfinity/mixer","version":"1.3.0-beta.2","author":{"name":"Axie Infinity Engineering","email":"engineering@axieinfinity.com"},"_id":"@axieinfinity/mixer@1.3.0-beta.2","maintainers":[{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"dist":{"shasum":"10900ec9d10cb63a19142cb4ee16260d4eed9299","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.3.0-beta.2.tgz","fileCount":7,"integrity":"sha512-LtoYHHbBIH6q9rfRIHty2bHhSFKdudQONWrpbIXFQp3gBKg5n+Lfw10DfjU7pva7vmQDb4ufVkk0wmdGyUepOA==","signatures":[{"sig":"MEUCIQCZ0Tfeq+vctxm1xHMKgOz75w74JWaUCSHDa1yRFepoWQIgWmlhW4cZE2sACtMrRq09FRyaKpEjvV1NAgt3Zo6uW3c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkN7KBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqbmA/9FBkrSqRKqcLELDnSSZNYmDFPWQZwbO2Boa44rDw+QsCKSz1k\r\nQJafB91o58pWQ+Q2dTFYtKSPSW9kT5KnfWgkgKESGLmz4JfCqV/AcMcv63g4\r\njBZbO2c/8QQk3eM2MxPDvUx0LhJXHV+CbrYyeU1aHLFrbryIqRu/ZZ2A1NRB\r\nq1TSb7vYzclI//j9Qqr8oo4uPENEtSL5cqsNrkHrQUwCUIkn3iqx0VC29L6X\r\n7cHsmWkTzapT3UbUIZxBrIX+O7DCRthE5HWYNd+hYAcUZFeut4w656SoSbKl\r\n1hKbDNnsJaXgW5MfyY3niF5lhey0hxkuyOZnD4QZ46CB/SX7ElT6zVyhMkXI\r\nyq5xQiQgHsFCaPxs5uP/+wb8u47yHO7bgbcl9vvtj99arIxjdJYKFuYXsLC7\r\npx75EWrbidUJOGTcRZ50gHjGYS/0AdxxJutH3DwIrZac/C2mzRa/lDZ07uaI\r\n/htM86dBTudmc9mIHhzSERXIIsD4Hsl02h87Vxp/SYcG1lkErxqR1kFI+nFs\r\ncoAGBByer4BZFij7K0C8xIUJgQTnpqN7L0+FL1M7eTKGNWxPfwuLLXhpzn4X\r\nhFRt4V2Yp6t9ouXh9WVce6AGC4GNKD24CmXoOHBHj7FTrSwChkUAmU44chVg\r\nymnjD8yLHZBO8Yz1xQRBQzUFU1oAbgKHY3Y=\r\n=VwE7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","tsup":{"dts":true,"clean":true,"entry":["src/index.ts"],"mifiny":true,"sourcemap":true,"splitting":true},"types":"dist/index.d.ts","module":"dist/index.js","scripts":{"lint":"tslint -p tsconfig.json","build":"rm -rf dist && tsup --minify terser"},"_npmUser":{"name":"minhfinity","email":"minh.le@skymavis.com"},"description":"```js import { initMixer, AxieMixer } from \"../dist/index.js\"; import * as fs from 'fs';","directories":{},"dependencies":{"bn.js":"^5.2.1","lodash":"^4.17.21"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^6.6.0","terser":"^5.16.3","tslint":"^6.1.3","prettier":"^2.7.1","@swc/core":"^1.3.35","typescript":"^4.7.4","@types/node":"^17.0.45","@types/bn.js":"^5.1.0","@types/lodash":"^4.14.182","tslint-config-prettier":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.3.0-beta.2_1681371777142_0.9374066861313113","host":"s3://npm-registry-packages"}},"1.4.0-beta.14":{"name":"@axieinfinity/mixer","version":"1.4.0-beta.14","author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.0-beta.14","maintainers":[{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"329743b6a7731ebe1a70a8eef895d74ebae9f8d8","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.0-beta.14.tgz","fileCount":28,"integrity":"sha512-nH683SgfzyezGE+o0oBgxcQrb0xRoLrgzaHbWg8+TgjPolLpvHzdaVnpkCeiIr5ABMUmsTOSkaSUh2Og5SOlbQ==","signatures":[{"sig":"MEQCIBmVKsVaxu13y8oZYjmwTXsqz3oGH/wwlQD+aY23lC2FAiB97l5ccXzUKj07GoOV40/gHNefinANkcL1o+XNEaUmeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7588316},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"76585c8ace21a0fe7c8cb516d478e0f26cbed18a","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.0-beta.14_1712655623245_0.06285167002138037","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"@axieinfinity/mixer","version":"1.4.1","author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.1","maintainers":[{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"ngthanhtrung","email":"arvernorix@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"9016699c5df659efb95ef540f73a929e22bc042d","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.1.tgz","fileCount":28,"integrity":"sha512-zyb7gfRn+UkcZCNiFXySkyWG/3c1UeLjrHkxkojbRImcecCwCxnPxPkLx8sRCKcNCB7jmB3ZMeVG3s7K/aY2eQ==","signatures":[{"sig":"MEYCIQDoaO2nYZCYM4grD6m+yan2h46j9Fyxk61ZEPu/YDgWEgIhAJib7EvG+472gjXMPCzYBpAJMmWjRGw9LngV1RN6ZdTd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7588528},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"1ee38afc4a4af8939bde690bfd795d5dc740d101","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.1_1726728391130_0.6737903780673626","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"@axieinfinity/mixer","version":"1.4.3","author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.3","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"5c511cc6829d62846f1d0d373ffae3e4c146f20f","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.3.tgz","fileCount":29,"integrity":"sha512-MmDeRMg4NBsORkuArMIjqEqOVq7mi4RDEW8le69pvUr+BLdn0Wqc4nrt+et8ddto+YneQbyvrufNQpKkQSSPzg==","signatures":[{"sig":"MEUCIBA90BG9EjSqkeHRysVEBGrh97Zrk7MS9KPwUWXZ0CmoAiEAq8e7Y4w8aGvgYrnrqhzNukVucFKQGBIR5DyMrt+rHpI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6913631},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"23cd8272f60715662e0c91786795a78aa87aed9e","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.3_1732525326935_0.47143315366719074","host":"s3://npm-registry-packages"}},"1.4.4":{"name":"@axieinfinity/mixer","version":"1.4.4","author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.4","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"c72307f2416048dba76c5ca6c2da885239767ecf","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.4.tgz","fileCount":29,"integrity":"sha512-q6jqYckp9oeD6qCRgVgWrjD3bf7Khsuw2oMOejDX1+uRniFfDoEbvs0PAN1+mrTkdEI5tFJ2gKEAo0tpR/2FMA==","signatures":[{"sig":"MEYCIQDfKST0sZmzZhyRLt9alyuW8Zg5/2rJ19vPZyF4e7e3KgIhAO4cXmpI40nFP6sJCe1D7rjH0wi0hxfWE1anoDxEyBs4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6913756},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"d659e772c96dfa673a9553a2c5a67da8274ef677","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.4_1732526565722_0.7839293076585891","host":"s3://npm-registry-packages"}},"1.4.6":{"name":"@axieinfinity/mixer","version":"1.4.6","keywords":["axie","infinity","axie-infinity","mixer","axie-mixer","axie-infinity-mixer","ronin","javascript","typescript"],"author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.6","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"7c62d90004b7aba6cebffad2e38710d70be84fdc","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.6.tgz","fileCount":29,"integrity":"sha512-zOdRShK0to37f3Bp2uEwTBFH3wjAMZGe/Fa3SmIo3Gx1pC4j8y2hO9r3dLZgHZ3njK7kzFFkye68Awvc7R2FbQ==","signatures":[{"sig":"MEYCIQDYNQi9Bai5ZTe82ZIKQgpGvrzT4IdIWmPG2+ZSlx9GZgIhAPm/TXHpuzoS3uvkdaVZST9lRav2rjmhdk6CQivzjROA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7704484},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"f169abb4f90515f017a8f2bab142932f6d2c9411","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.6_1747903179087_0.4659405809297765","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"@axieinfinity/mixer","version":"1.4.7","keywords":["axie","infinity","axie-infinity","mixer","axie-mixer","axie-infinity-mixer","ronin","javascript","typescript"],"author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.7","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"848dda224789986ee56d176e0cd7c8389f4eaefe","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.7.tgz","fileCount":29,"integrity":"sha512-ChEbiuGlRTUu0r6QnLx3LZGwZBzPGHt6/EHZiVmr7YnLQhSO5DdPU8zcdacTT+gw5O5l7LVlwfInkcFo0uf6zQ==","signatures":[{"sig":"MEQCIAL54dob7HWwUOxuU6qpL+ZrAtk/kew4UsexMpJDMbMPAiBIGr47aeYgupKSrRaVfq1IRg/BOEchOwgBnkETh6mDLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6895970},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"e249b5f4dd9d5b4b9f134f8a5b5e4afe2e8b5a57","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.7_1760514539429_0.7128148906080016","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"@axieinfinity/mixer","version":"1.4.8","keywords":["axie","infinity","axie-infinity","mixer","axie-mixer","axie-infinity-mixer","ronin","javascript","typescript"],"author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","_id":"@axieinfinity/mixer@1.4.8","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"dist":{"shasum":"7595a3bafb94a85fddfd8bb47009a08f2c48b35a","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.8.tgz","fileCount":29,"integrity":"sha512-8xMfOiPtT8+PUh3zGv6ifpNuSLNUDeiAm4NSr8WcUkJR7KGC9VU0q3ZPmdka176nY6ILXgRk4XheYPISbqGeCQ==","signatures":[{"sig":"MEUCIB2DMinnM9BPlTTggsDqFU5e7CD5mcDS7dJOwGKrki8HAiEAjvkdW5TJbOg43XzymfKLAq7LChCzuB+7dJwht3ZjErA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6903288},"main":"./dist/index.js","types":"./dist/types/index.d.ts","module":"./dist/index.js","gitHead":"f53d73545761df9230580af344a4421f9cec9ba2","scripts":{"dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","build":"rm -rf dist && rollup -c","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"repository":{"url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","type":"git","directory":"packages/mixer"},"_npmVersion":"8.19.4","description":"Axie Infinity Mixer","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"27.2.1","eslint":"8.22.0","rimraf":"3.0.2","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4","@types/jest":"27.0.2","rollup-plugin-copy":"3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-import":"2.26.0","eslint-config-prettier":"8.5.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mixer_1.4.8_1768384809685_0.6950640959291077","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"@axieinfinity/mixer","version":"1.4.9","description":"Axie Infinity Mixer","license":"MIT","author":{"name":"Axie Infinity Engineering Team"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/types/index.d.ts","keywords":["axie","infinity","axie-infinity","mixer","axie-mixer","axie-infinity-mixer","ronin","javascript","typescript"],"repository":{"type":"git","url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","directory":"packages/mixer"},"scripts":{"build":"rm -rf dist && rollup -c","dev":"yarn run build --watch","lint":"eslint . --ext .js,.tsx,.ts","lint:fix":"eslint .  --ext .js,.tsx,.ts --fix"},"dependencies":{"bn.js":"5.2.1","buffer":"6.0.3"},"devDependencies":{"@rollup/plugin-json":"^6.0.1","@types/jest":"27.0.2","eslint":"8.22.0","eslint-config-prettier":"8.5.0","eslint-plugin-import":"2.26.0","eslint-plugin-prettier":"4.2.1","eslint-plugin-simple-import-sort":"8.0.0","jest":"27.2.1","rimraf":"3.0.2","rollup-plugin-copy":"3.5.0","ts-jest":"27.0.5","tsconfig":"*","typescript":"4.8.4"},"gitHead":"47d387d381711f4c439ab1bc5f44d232a427498e","bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"homepage":"https://github.com/axieinfinity/fe-common-libs#readme","_id":"@axieinfinity/mixer@1.4.9","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-gfi5s92RkMJScP2+LOxmvEeV5uvh9j8UMxJHVrQc6tW0ERUWWs6nNdH5qq51290aY//4jUYpSFTUxrIaYMVHjw==","shasum":"b3f7feff8d790ba1f6ed899662b35f10dc9353dd","tarball":"https://registry.npmjs.org/@axieinfinity/mixer/-/mixer-1.4.9.tgz","fileCount":29,"unpackedSize":6918227,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA+e9EwpZgBKC7/q9lf4qrRz+ZCKpg3h9ZLoucCP9uZaAiEA316biAsKmCiGGfl580aThYli48CnpeCPu1X+P8DPl+g="}]},"_npmUser":{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"},"directories":{},"maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mixer_1.4.9_1772784304661_0.7220837703993506"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-12T07:49:55.250Z","modified":"2026-03-06T08:05:05.042Z","1.0.0":"2022-07-12T07:32:25.358Z","0.1.1":"2022-07-12T07:49:55.514Z","1.0.1":"2022-07-19T09:31:48.349Z","1.2.0":"2023-01-30T08:41:03.122Z","1.3.0-beta.1":"2023-03-17T07:54:49.270Z","1.3.0-beta.2":"2023-04-13T07:42:57.342Z","1.4.0-beta.14":"2024-04-09T09:40:23.513Z","1.4.1":"2024-09-19T06:46:31.396Z","1.4.3":"2024-11-25T09:02:07.222Z","1.4.4":"2024-11-25T09:22:45.943Z","1.4.6":"2025-05-22T08:39:39.386Z","1.4.7":"2025-10-15T07:48:59.648Z","1.4.8":"2026-01-14T10:00:09.888Z","1.4.9":"2026-03-06T08:05:04.879Z"},"bugs":{"url":"https://github.com/axieinfinity/fe-common-libs/issues"},"author":{"name":"Axie Infinity Engineering Team"},"license":"MIT","homepage":"https://github.com/axieinfinity/fe-common-libs#readme","keywords":["axie","infinity","axie-infinity","mixer","axie-mixer","axie-infinity-mixer","ronin","javascript","typescript"],"repository":{"type":"git","url":"git+ssh://git@github.com/axieinfinity/fe-common-libs.git","directory":"packages/mixer"},"description":"Axie Infinity Mixer","maintainers":[{"name":"ngthanhtrung","email":"arvernorix@gmail.com"},{"name":"minhfinity","email":"minh.le@skymavis.com"},{"name":"andy_skymavis","email":"andy@skymavis.com"},{"name":"hoangnguyentino","email":"hoangnguyentino@gmail.com"}],"readme":"# @axieinfinity/mixer\n\n![NPM version][npm-image]\n\n[npm-image]: https://img.shields.io/npm/v/%40axieinfinity%2Fmixer\n\nA utility for rendering 2D Axie with support for accessories, animations, and PixiJS integration.\n\n## 📦 Installation\n\n```bash\nnpm install @axieinfinity/mixer\n```\n\nor with yarn\n\n```bash\nyarn add @axieinfinity/mixer\n```\n\n## 📋 Prerequisites\n\nTo render Axies with PixiJS, you'll need these dependencies:\n\n```json\n{\n  \"dependencies\": {\n    \"pixi.js\": \"7.2.4\",\n    \"pixi-spine\": \"4.0.3\",\n    \"@axieinfinity/mixer\": \"lasted\"\n  }\n}\n```\n\nInstall them:\n\n```bash\nnpm install or yarn install\n```\n\n## ⚠️ Important Notes\n\n- This version does not include data by default. You must import the required JSON data files and call `initAxieMixer` before using the utility functions.\n- To render evolved parts, use version ***1.4.1*** or later.\n- Accessories use Spine 2D format and require proper y-axis flipping for correct orientation.\n\n## 🆕 Features\n\n- **Images URL**: https://axiecdn.axieinfinity.com/mixer-stuffs/v6\n- **Accessory spines URL**: https://axiecdn.axieinfinity.com/mixer-stuffs/accessory-spines/v1\n- **Full support for Nightmare parts**\n- **All accessories migrated to Spine 2D**\n- **PixiJS v7+ compatibility**\n- **Complete animation system**\n\n## 🚀 Complete Working Example\n\n\n\n### package.json\n\n```json\n{\n  \"name\": \"axie-mixer-demo\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc && vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"pixi.js\": \"7.2.4\",\n    \"pixi-spine\": \"4.0.3\",\n    \"@axieinfinity/mixer\": \"1.4.8\"\n  },\n  \"devDependencies\": {\n    \"typescript\": \"5.6.0\",\n    \"vite\": \"5.4.0\"\n  }\n}\n```\n\n### HTML Setup\n\n```html\n<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Axie Mixer Demo</title>\n    <style>\n      :root {\n        font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n        line-height: 1.5;\n        font-weight: 400;\n\n        color-scheme: light dark;\n        color: rgba(255, 255, 255, 0.87);\n        background-color: #242424;\n\n        font-synthesis: none;\n        text-rendering: optimizeLegibility;\n        -webkit-font-smoothing: antialiased;\n        -moz-osx-font-smoothing: grayscale;\n      }\n\n      body {\n        margin: 0;\n        min-width: 320px;\n        min-height: 100vh;\n      }\n\n      #app {\n        max-width: 1280px;\n        margin: 0 auto;\n        padding: 2rem;\n        text-align: center;\n      }\n\n      h1 {\n        font-size: 3.2em;\n        line-height: 1.1;\n        margin-bottom: 1em;\n      }\n\n      #controls {\n        margin-bottom: 2rem;\n        display: flex;\n        gap: 1rem;\n        justify-content: center;\n        align-items: center;\n      }\n\n      #pixi-container {\n        border: 2px solid #646cff;\n        border-radius: 8px;\n        margin: 0 auto;\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        position: relative;\n        overflow: hidden;\n        width: 800px;\n        height: 600px;\n      }\n\n      #pixi-canvas {\n        width: 100%;\n        height: 100%;\n      }\n\n      #loading {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        background: rgba(0, 0, 0, 0.8);\n        color: white;\n        padding: 1rem 2rem;\n        border-radius: 8px;\n        z-index: 1000;\n      }\n\n      button {\n        border-radius: 8px;\n        border: 1px solid transparent;\n        padding: 0.6em 1.2em;\n        font-size: 1em;\n        font-weight: 500;\n        font-family: inherit;\n        background-color: #646cff;\n        color: white;\n        cursor: pointer;\n        transition: all 0.25s;\n      }\n\n      button:hover {\n        background-color: #535bf2;\n        transform: translateY(-2px);\n      }\n\n      button:disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n        transform: none;\n      }\n\n      button:focus,\n      button:focus-visible {\n        outline: 4px auto -webkit-focus-ring-color;\n      }\n\n      .error {\n        color: #ff6b6b;\n        background-color: rgba(255, 107, 107, 0.1);\n        border: 1px solid #ff6b6b;\n        border-radius: 8px;\n        padding: 1rem;\n        margin: 1rem 0;\n      }\n\n      @media (prefers-color-scheme: light) {\n        :root {\n          color: #213547;\n          background-color: #ffffff;\n        }\n        \n        button {\n          background-color: #646cff;\n          color: white;\n        }\n        \n        button:hover {\n          background-color: #535bf2;\n        }\n      }\n    </style>\n  </head>\n  <body>\n    <div id=\"app\">\n      <h1>Axie Mixer Demo</h1>\n      <div id=\"controls\">\n        <button id=\"load-axie\">Load Axie with Accessories</button>\n        <button id=\"change-animation\">Change Animation</button>\n        <div id=\"loading\" style=\"display: none;\">Loading...</div>\n      </div>\n      <div id=\"pixi-container\">\n        <canvas id=\"pixi-canvas\"></canvas>\n      </div>\n    </div>\n    <script type=\"module\" src=\"/src/main.ts\"></script>\n  </body>\n</html>\n```\n\n### Full TypeScript Implementation\n\n```typescript\nimport { Application, Assets, Texture } from 'pixi.js';\nimport { Spine, TextureAtlas } from 'pixi-spine';\nimport type { ISkeletonData } from '@pixi-spine/base';\nimport type { ISpineResource } from '@pixi-spine/loader-base';\nimport { AtlasAttachmentLoader, SkeletonJson } from '@pixi-spine/runtime-3.8';\nimport {\n  initAxieMixer,\n  getAxieSpineFromGenes,\n  getAxieColorPartShift,\n  getVariantAttachmentPath,\n  AxieBuilderResult,\n} from '@axieinfinity/mixer';\n\n// Import required data files\nimport GenesData from '@axieinfinity/mixer/dist/data/axie-2d-v3-stuff-genes.json';\nimport SamplesData from '@axieinfinity/mixer/dist/data/axie-2d-v3-stuff-samples.json';\nimport VariantsData from '@axieinfinity/mixer/dist/data/axie-2d-v3-stuff-variant.json';\nimport AnimationsData from '@axieinfinity/mixer/dist/data/axie-2d-v3-stuff-animations.json';\n\n// CDN URLs\nconst AXIE_IMAGES_URL = 'https://axiecdn.axieinfinity.com/mixer-stuffs/v6/';\nconst ACCESSORY_SPINES_URL = 'https://axiecdn.axieinfinity.com/mixer-stuffs/accessory-spines/v1';\n\n// Sample equipped accessories\nconst EQUIPPED_ACCESSORIES = [\n  {\n    \"attributes\": {\n      \"collection\": [\n        \"Nightmare\"\n      ],\n      \"key\": \"air2a\",\n      \"placement\": \"Air\",\n      \"rarity\": \"Epic\",\n      \"token_id\": \"25\"\n    },\n    \"description\": \"\",\n    \"imageUrl\": \"https://cdn.axieinfinity.com/marketplace-website/accessories/25.png\",\n    \"name\": \"Eyewyrm\",\n    \"tokenId\": \"25\",\n    \"tokenType\": \"Accessory\",\n    \"__typename\": \"Erc1155Token\"\n  },\n  {\n    \"attributes\": {\n      \"collection\": [\n        \"Nightmare\"\n      ],\n      \"key\": \"cheek2a\",\n      \"placement\": \"Cheek\",\n      \"rarity\": \"Common\",\n      \"token_id\": \"23\"\n    },\n    \"description\": \"\",\n    \"imageUrl\": \"https://cdn.axieinfinity.com/marketplace-website/accessories/23.png\",\n    \"name\": \"Bloodmaw\",\n    \"tokenId\": \"23\",\n    \"tokenType\": \"Accessory\",\n    \"__typename\": \"Erc1155Token\"\n  },\n  {\n    \"attributes\": {\n      \"collection\": [\n        \"Japanese\"\n      ],\n      \"key\": \"ground3a\",\n      \"placement\": \"Ground\",\n      \"rarity\": \"Epic\",\n      \"token_id\": \"26\"\n    },\n    \"description\": \"\",\n    \"imageUrl\": \"https://cdn.axieinfinity.com/marketplace-website/accessories/26.png\",\n    \"name\": \"Daruma\",\n    \"tokenId\": \"26\",\n    \"tokenType\": \"Accessory\",\n    \"__typename\": \"Erc1155Token\"\n  }\n]\n\ntype AccessoryConfig = typeof EQUIPPED_ACCESSORIES[number];\n\nclass AxieRenderer {\n  private app: Application;\n  private axieSpine?: Spine;\n  private currentAnimationIndex = 0;\n  private animations = [\n    'action/idle/normal',\n    'action/idle/random-02',\n    'draft/run-origin',\n    'attack/ranged/cast-fly',\n    'attack/melee/tail-smash'\n  ];\n\n  constructor() {\n    this.app = new Application({\n      width: 800,\n      view: document.getElementById('pixi-canvas') as HTMLCanvasElement,\n      height: 600,\n      backgroundColor: 0x1099bb,\n      resolution: window.devicePixelRatio || 1,\n    });\n  }\n\n  async initialize(): Promise<void> {\n    // Initialize the PIXI Application\n    // Initialize the mixer with data\n    initAxieMixer(GenesData, SamplesData, VariantsData, AnimationsData);\n    console.log('AxieRenderer initialized successfully');\n  }\n\n  async renderAxieWithAccessories(): Promise<void> {\n    try {\n      this.showLoading(true);\n      this.app.stage.removeChildren();\n\n      // Sample Axie genes\n      const axieGenes = '0x20000000000003000181a09082040000000100040800800400000090086044020001000010008002000100100840450200010004186044020001001008808404';\n      \n      // Configure accessories\n      const meta = new Map<string, string>();\n      EQUIPPED_ACCESSORIES.forEach(accessory => {\n        meta.set(`accessory-${accessory.attributes.placement.toLowerCase()}`, `accessory-${accessory.attributes.key}`);\n      });\n\n      console.log('Generating Axie spine data...');\n\n      // Generate Axie spine data\n      const { skeletonDataAsset, variant }: AxieBuilderResult = \n        getAxieSpineFromGenes(axieGenes, meta, false);\n\n      if (!skeletonDataAsset) {\n        throw new Error('Failed to generate Axie skeleton data');\n      }\n\n      console.log('Creating Axie spine...');\n\n      // Create and display the Axie\n      this.axieSpine = await this.createAxieSpine(skeletonDataAsset, variant);\n      this.axieSpine.position.set(400, 400);\n      this.axieSpine.scale.set(0.3);\n      \n      // Start idle animation\n      this.axieSpine.state.setAnimation(0, 'action/idle/normal', true);\n      \n      this.app.stage.addChild(this.axieSpine);\n\n      console.log('Adding accessories...');\n\n      // Add accessories\n      await this.addAccessories(EQUIPPED_ACCESSORIES);\n\n      console.log('Axie rendered successfully!');\n      this.showLoading(false);\n\n    } catch (error) {\n      console.error('Failed to render Axie:', error);\n      this.showError(`Failed to render Axie: ${error instanceof Error ? error.message : 'Unknown error'}`);\n      this.showLoading(false);\n    }\n  }\n\n  private async createAxieSpine(skeletonData: AxieBuilderResult['skeletonDataAsset'], variant: string): Promise<Spine> {\n    // Get all required textures for this Axie\n    const resources = this.getRequiredTextures(skeletonData, variant);\n    \n    console.log(`Loading ${resources.length} textures...`);\n    \n    // Load all textures\n    const texturePromises = resources.map(async (resource) => {\n      try {\n        const texture = await Assets.load(resource.imagePath);\n        return { key: resource.key, texture };\n      } catch (error) {\n        console.warn(`Failed to load texture ${resource.key}:`, error);\n        // Return a placeholder or skip this texture\n        return null;\n      }\n    });\n    \n    const loadedTextures = (await Promise.all(texturePromises)).filter(Boolean);\n    \n    // Create texture hash\n    const allTextures: { [key: string]: Texture } = {};\n    loadedTextures.forEach(record => {\n      if (!record || !record.key || !record.texture) return;\n      const { key, texture } = record;\n      allTextures[key] = texture;\n    });\n\n    console.log(`Loaded ${Object.keys(allTextures).length} textures`);\n\n    // Create Spine atlas and loader\n    const spineAtlas = new TextureAtlas();\n    spineAtlas.addTextureHash(allTextures, false);\n    \n    const spineAtlasLoader = new AtlasAttachmentLoader(spineAtlas);\n    const spineJsonParser = new SkeletonJson(spineAtlasLoader);\n    \n    // Parse skeleton data and create Spine\n    const spineData = spineJsonParser.readSkeletonData(skeletonData);\n    return new Spine(spineData);\n  }\n\n  private getRequiredTextures(skeletonData: AxieBuilderResult['skeletonDataAsset'], variant: string): Array<{ key: string; imagePath: string }> {\n    const skinAttachments = skeletonData.skins[0].attachments;\n    const imagesToLoad: Array<{ key: string; imagePath: string }> = [];\n    \n    const partColorShift = getAxieColorPartShift(variant);\n    \n    for (const slotName in skinAttachments) {\n      const skinSlotAttachments = skinAttachments[slotName];\n      for (const attachmentName in skinSlotAttachments) {\n        const path = skinSlotAttachments[attachmentName].path;\n        const imagePath = AXIE_IMAGES_URL + \n          getVariantAttachmentPath(slotName, path, variant, partColorShift);\n        \n        imagesToLoad.push({ key: path, imagePath });\n      }\n    }\n    \n    return imagesToLoad;\n  }\n\n  private async addAccessories(accessories: AccessoryConfig[]): Promise<void> {\n    if (!this.axieSpine) return;\n\n    for (const accessory of accessories) {\n      try {\n        console.log(`Loading accessory: ${accessory.name}`);\n        \n        // Load accessory spine data\n        const accessoryUrl = `${ACCESSORY_SPINES_URL}/${accessory.attributes.key}/${accessory.attributes.key}.json`;\n        const skeletonData: ISpineResource<ISkeletonData> = await Assets.load(accessoryUrl);\n        const spineData = skeletonData.spineData;\n        console.log('spineData', spineData);\n        \n        // Create accessory spine\n        const accessorySpine = new Spine(spineData);\n        accessorySpine.scale.set(1, -1); // Flip Y axis for correct orientation\n        \n        // Set animation if available\n        if (spineData.animations.length > 0) {\n          accessorySpine.state.setAnimation(0, spineData.animations[0].name, true);\n        }\n        \n        // Find the correct slot and attach\n        const slotName = `body-${accessory.attributes.placement.toLowerCase()}`;\n        const slotIndex = this.axieSpine.skeleton.findSlotIndex(slotName);\n        \n        if (slotIndex >= 0) {\n          this.axieSpine.slotContainers[slotIndex].addChild(accessorySpine);\n          console.log(`✓ Attached ${accessory.name} to ${slotName}`);\n        } else {\n          console.warn(`Slot ${slotName} not found for accessory ${accessory.name}`);\n        }\n      } catch (error) {\n        console.error(`Failed to load accessory ${accessory.name}:`, error);\n      }\n    }\n  }\n\n  // Animation control methods\n  changeAnimation(): void {\n    if (!this.axieSpine) return;\n\n    this.currentAnimationIndex = (this.currentAnimationIndex + 1) % this.animations.length;\n    const animationName = this.animations[this.currentAnimationIndex];\n    \n    console.log(`Changing animation to: ${animationName}`);\n    \n    // For non-looping animations, add idle afterwards\n    const isLooping = animationName.includes('idle') || animationName.includes('run');\n    \n    this.axieSpine.state.setAnimation(0, animationName, isLooping);\n    \n    if (!isLooping) {\n      this.axieSpine.state.addAnimation(0, 'action/idle/normal', true, 1.0);\n    }\n  }\n\n  private showLoading(show: boolean): void {\n    const loadingElement = document.getElementById('loading');\n    if (loadingElement) {\n      loadingElement.style.display = show ? 'block' : 'none';\n    }\n  }\n\n  private showError(message: string): void {\n    const container = document.getElementById('pixi-container');\n    if (container) {\n      const errorDiv = document.createElement('div');\n      errorDiv.className = 'error';\n      errorDiv.textContent = message;\n      container.parentElement?.insertBefore(errorDiv, container);\n      \n      // Remove error after 5 seconds\n      setTimeout(() => {\n        errorDiv.remove();\n      }, 5000);\n    }\n  }\n}\n\n// Initialize the demo\nasync function main() {\n  try {\n    console.log('Initializing Axie Mixer Demo...');\n    \n    const renderer = new AxieRenderer();\n    await renderer.initialize();\n    \n    // Setup event listeners\n    const loadAxieButton = document.getElementById('load-axie') as HTMLButtonElement;\n    const changeAnimationButton = document.getElementById('change-animation') as HTMLButtonElement;\n    \n    if (loadAxieButton) {\n      loadAxieButton.addEventListener('click', async () => {\n        loadAxieButton.disabled = true;\n        changeAnimationButton.disabled = true;\n        \n        try {\n          await renderer.renderAxieWithAccessories();\n          changeAnimationButton.disabled = false;\n        } catch (error) {\n          console.error('Error loading Axie:', error);\n        } finally {\n          loadAxieButton.disabled = false;\n        }\n      });\n    }\n    \n    if (changeAnimationButton) {\n      changeAnimationButton.addEventListener('click', () => {\n        renderer.changeAnimation();\n      });\n      changeAnimationButton.disabled = true; // Enable after Axie is loaded\n    }\n    \n    console.log('Demo ready! Click \"Load Axie with Accessories\" to start.');\n    \n  } catch (error) {\n    console.error('Failed to initialize demo:', error);\n    \n    const app = document.getElementById('app');\n    if (app) {\n      const errorDiv = document.createElement('div');\n      errorDiv.className = 'error';\n      errorDiv.innerHTML = `\n        <h3>Initialization Error</h3>\n        <p>${error instanceof Error ? error.message : 'Unknown error'}</p>\n        <p>Please check the console for more details.</p>\n      `;\n      app.appendChild(errorDiv);\n    }\n  }\n}\n\n// Start the demo\nmain();\n```\n\n## 📚 Available Accessories\n\n| Placement | Meta Key | Slot Name | Example Keys |\n|-----------|----------|-----------|--------------|\n| Air | `accessory-air` | `body-air` | `air1a`, `air1b`, `air1c`, `air1d` |\n| Cheek | `accessory-cheek` | `body-cheek` | `cheek1a`, `cheek2a` |\n| Ground | `accessory-ground` | `body-ground` | `ground1a` |\n| Hip | `accessory-hip` | `body-hip` | `hip1a` |\n| Neck | `accessory-neck` | `body-neck` | `neck1a` |\n\n### Special Meta Keys\n\n- `accessory-suit-off`: Set to `'true'` or `'false'` to toggle mystic suit\n- `accessory-id`: Optional Axie ID for accessories\n\n## 🎮 Animation System\n\nCommon animations you can use:\n\n```typescript\n// Idle animations\nrenderer.changeAnimation('action/idle/normal', true);\nrenderer.changeAnimation('action/idle/random-02', false);\n\n// Movement animations  \nrenderer.changeAnimation('draft/run-origin', true);\n\n// Attack animations\nrenderer.changeAnimation('attack/ranged/cast-fly', false);\nrenderer.changeAnimation('attack/melee/tail-smash', false);\n\n// Chain animations with delay\nrenderer.addAnimation('action/idle/normal', true, 1.0);\n```\n\n## 🔧 Troubleshooting\n\n### Common Issues\n\n**Accessory appears upside down**\n- Solution: Ensure you set `accessorySpine.scale.set(1, -1)` to flip the Y axis\n\n**Textures not loading**\n- Solution: Make sure all textures are loaded before creating the Spine object\n- Check that CDN URLs are accessible and correct\n\n**Animation not found errors**\n- Solution: Verify animation names exist in the skeleton data\n- Use `skeletonData.animations` to list available animations\n\n**Slot not found for accessory**\n- Solution: Check that the slot name matches exactly (e.g., `body-air`, `body-cheek`)\n- Ensure the Axie spine was generated with accessory support\n\n**Performance issues**\n- Solution: Use texture atlasing and avoid recreating Spine objects frequently\n- Consider using `skipAnimation: true` for static displays\n\n### Debug Tips\n\n```typescript\n// List available animations\nconsole.log('Available animations:', skeletonData.animations.map(a => a.name));\n\n// List available slots\nconsole.log('Available slots:', axieSpine.skeleton.slots.map(s => s.data.name));\n\n// Check if accessory loaded correctly\nconst slotIndex = axieSpine.skeleton.findSlotIndex('body-air');\nconsole.log('Air slot index:', slotIndex);\n```\n\n## 📖 API Reference\n\n### Core Functions\n\n- `initAxieMixer(genes, samples, variants, animations)` - Initialize the mixer with data\n- `getAxieSpineFromGenes(genes, meta, skipAnimation)` - Generate Axie spine from genes\n- `getAxieColorPartShift(variant)` - Get color shift for variant\n- `getVariantAttachmentPath(slot, path, variant, colorShift)` - Build texture path\n\n### Types\n\n- `AxieBuilderResult` - Result from `getAxieSpineFromGenes`\n- `MixedSkeletonData` - Spine skeleton data format\n- `AxieBodyStructure` - Parsed gene structure\n\nFor complete API documentation, see the TypeScript definitions included with the package.\n","readmeFilename":"README.md"}