{"_id":"@domainellipticlanguage/mtg-crucible","_rev":"14-00fcd65c36fd65a964120de4cfd678c0","name":"@domainellipticlanguage/mtg-crucible","dist-tags":{"latest":"0.2.19"},"versions":{"0.1.0":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.1.0","keywords":[],"author":"","license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.1.0","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"dist":{"shasum":"6b62fef13c1bbfbffe854cf8827700bee2ab05b8","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.1.0.tgz","fileCount":495,"integrity":"sha512-lOeFkS1/qVdzFcOtqVmBfma8KCXx/kdOQPIlwqUmzLrYEYk+Mix102hxb874kxj2gzWiIXaS2K3M2j+bZHAbfg==","signatures":[{"sig":"MEUCIBcMo0kxK+fmpQqL7T0j3sOIoduv5to+NU5XbNNgW9weAiEA9uYGXittFkZrrO5OcqOHsmbXkL9Dn10/wHVWAq/BdIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185205149},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"}},"gitHead":"1b78894138d2a39270e3aed0549f47b58205e7f0","scripts":{"dev":"npx tsx scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"_npmVersion":"11.4.2","description":"A TypeScript library for rendering Magic: The Gathering card images as PNGs.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.1.0_1774008264337_0.5050917062650186","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.0":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.0","keywords":[],"author":"","license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.0","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"dist":{"shasum":"40c0f1e4f426b2fc44b8db744211fa8d94314856","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.0.tgz","fileCount":106,"integrity":"sha512-Pr0hcrBIZT8FP6nFWoocFvDWQm3EkwO2JOEatpDCc+pkKC4TYw9NeweXz/gEGuwDidX8u7zgYlBTqSVm2bDVPg==","signatures":[{"sig":"MEYCIQDfKjt0C1S6zydBGLItihSUX3HBYUx4poLOOxE/1j4ytQIhAJal53fguG+9dizKIHMkzH6dXjD2oLouI1cNd81kqwie","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":528940},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"}},"gitHead":"4eb712a9ac4a91917fc00bda3479bd7f1ba9a1ec","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"_npmVersion":"11.4.2","description":"A TypeScript library for rendering Magic: The Gathering card images as PNGs.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.0_1774577216807_0.36987899792285495","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.4":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.4","keywords":[],"author":"","license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.4","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"dist":{"shasum":"571b020f87b36d0429fce877f3441dc7c1554f69","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.4.tgz","fileCount":138,"integrity":"sha512-qmgUS668JpZ8aX7i0OXKY4r4Qlo3gGt/hLihXdlxu4znq9nZBLxwkOkeqwC7QSr0Ni6ZaDNUY4p+myTp4I16xw==","signatures":[{"sig":"MEUCIBhclb5gK4NPf/Hrzm1A/N4KAU4cBgBbKqZubk1pKOnOAiEAtKe88nzEnDMu5Alq/FTDNSiddb7GqXgtYKot55AIuNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":736001},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"},"./constants":{"types":"./dist/constants/constants/index.d.ts","default":"./dist/constants/constants/index.js"}},"gitHead":"ff70beb22e28e609ede43674a0ca8a4521827cc3","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.constants.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"_npmVersion":"11.4.2","description":"A TypeScript library for rendering Magic: The Gathering card images as PNGs.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.4_1774807223199_0.403556371108859","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.5":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.5","keywords":[],"author":"","license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.5","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"dist":{"shasum":"53a6f93f1801b4f57b5cb1dd8791b99f62aa09be","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.5.tgz","fileCount":514,"integrity":"sha512-U+tR4h1t5Q/Yr6sr8ReGeXDzAiDoQYEqG9+XT4j5omdXIDqZsSo1U2cuTRXxha6IM5DGBPZ7LhlGSArPqPK2cQ==","signatures":[{"sig":"MEYCIQC2Hu4VA8lfjw6a3WsO6muv7s0GPdvGZHBDZgwM1VHwRQIhAONDX0uGdIooL38gP8JJp+BPnL7cF8qfQe5JL08jK7Ik","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184544884},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"},"./constants":{"types":"./dist/constants/constants/index.d.ts","default":"./dist/constants/constants/index.js"}},"gitHead":"16f94f7a6a899eef37d8eadcc4a75454cd3e301c","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.constants.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"_npmVersion":"11.4.2","description":"A TypeScript library for rendering Magic: The Gathering card images as PNGs.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.5_1774810914846_0.02252529818942195","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.6":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.6","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.6","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"aeadb913620d05e6757e4bba6393047342db5e1a","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.6.tgz","fileCount":514,"integrity":"sha512-ThYdsm3PLFrmfSTDGHXM7hk10wlAgYj3eSwfScve4LTzDQmMsRY/DThNbTwXMsitrONDOXE3HgA9Q74KsR2JlA==","signatures":[{"sig":"MEUCIFJDdAnwOJfQLsn+RB4izBRj1TwnfGPDkXgJEdug+YwFAiEApWOzGjhREt0VtoJ0ozs1RopXMWeNsccRoYtVJP+onU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184546964},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"},"./constants":{"types":"./dist/constants/constants/index.d.ts","default":"./dist/constants/constants/index.js"}},"gitHead":"2712a4ae3930cb60a717762ec3c500ac606af1fd","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.constants.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.6_1774837486784_0.6991056928701951","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.7":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.7","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.7","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"8573a660c30186d2305b0c0736c163a26d47c4f5","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.7.tgz","fileCount":515,"integrity":"sha512-LwvTmjyfGqEv/0WK+WBj5quNTyY5zcv9LdPX8h4JGoX5VJTLFDz5ofgl1eTy+Fxa20Fk8hXlK0SzzeXH/gC8nw==","signatures":[{"sig":"MEYCIQCfgv+YfujdrETQNCwNshNlCwsHRehO6MOeoTVD2FmWoAIhANwlusQLscvvHnS1Pd6vWXoEExIlrWcJDOgju67/e4eb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184554062},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"},"./constants":{"types":"./dist/constants/constants/index.d.ts","default":"./dist/constants/constants/index.js"}},"gitHead":"84bde7588bc7519cabb8048cfd5a60c7131dcf82","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.constants.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.7_1775008300872_0.8786421852233406","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.11":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.11","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.11","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"65067678751db1eaca3dd98cc0e683b139388919","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.11.tgz","fileCount":515,"integrity":"sha512-jClagL9tAexqT0mt51m2llv9qhKCas3WlSsd/n2fsiHhJsfwOeg9jZRi3QoAPrXytKgohzAp8F6muYEGk9tsJA==","signatures":[{"sig":"MEYCIQDAqQiRJ03YRgn2yGrJ/laxpW++ChzAfnBaz6Hzp3w+PAIhAL9d0Ue4zP1UYAoAAGmbje8KXzpmJPNF3isvud9j8mSi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184563214},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"},"./constants":{"types":"./dist/constants/constants/index.d.ts","default":"./dist/constants/constants/index.js"}},"gitHead":"e79726a20080578eeb5b4a5487c6d99a635ea78d","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.constants.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.11_1775090862994_0.6774071516839741","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.12":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.12","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.12","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"c4025496af02c7259da82a11b47d9dd43b8bf27a","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.12.tgz","fileCount":515,"integrity":"sha512-GDVm9uFpcE4thS5tGxyrGRpv2JYvjTWkRFudnF9M9fyOJPK8JHhmyM9Wr3ezy+eahRsQk2yBBfXB45u47Uc0RQ==","signatures":[{"sig":"MEQCIFJJQ8fhemIyfPSrBxcTQXpJabES7+t2pp1RXvCX/T2DAiARuqvVkS0i1ZktD3m7GHoiA8TDpBnzq3g5f3Rb4SAAEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184563041},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"}},"gitHead":"6070e916473cc5b8e08b01299c69b2d55a423268","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.12_1775091372840_0.17914095318983936","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.14":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.14","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.14","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"b43cdb19cc1a0d4e745fba5dc7afb7f20941b683","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.14.tgz","fileCount":515,"integrity":"sha512-mvgDIZ9NQG0rV+SarSGBOstYI2BP5jvf1TIZd6AmD5Y36kRBqaVxRAR7Du8EZociFW/CAVwwTB3+qQnP9VX++w==","signatures":[{"sig":"MEYCIQCR0r+WyO72shLEDZaxb04489Ch0EiwGOKdt47tZeWYWAIhAJ1axpvFS4dtoG8E9zUFlgtrn+2rUNZEVRKx8/POV9ya","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184563041},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"}},"gitHead":"7642ea51291d1e2c7e5fb940b4308b3ef237721a","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.14_1775323297935_0.276765826514233","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.15":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.15","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.15","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"26cc2892271476f909e6eb1ba0ab911bb64ffc49","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.15.tgz","fileCount":519,"integrity":"sha512-9IUnkAAniumtK82kfpK5+zwIgv1IDTUtRMrYhqeZa7qDDH3x3Ndl1WY9M5b41bz5ysXiJPhYMLdFdnpL7atgNg==","signatures":[{"sig":"MEQCIFrHhbu7eDFEcKdW2JC1zhAdU1Li7iMAcZFGsni+RUZ0AiB80fbspzhi3ZrlpUnnD5Fz46ULr3ZoZghJYM+zghDvgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184564301},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/react/index.d.ts","default":"./dist/react/react/index.js"},"./parser":{"types":"./dist/parser/parser/index.d.ts","default":"./dist/parser/parser/index.js"}},"gitHead":"0e62d6f28b83c5d6f6fc355992b559db08be3f5d","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.15_1775325509044_0.5033283109269322","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.17":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.17","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.17","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"8553b622503acdaa1f8aef24152605517736279c","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.17.tgz","fileCount":475,"integrity":"sha512-v5NhHn34hmXrp2chrPm2PY4iVIhd6o9MmOXsmp2lAECrQQftAerxbzms7bFz+SyrmUmKAbXDVPigIWY/AjIvUQ==","signatures":[{"sig":"MEUCIDbtzKFKJd+BBVl3QCpSse28I08TT6s9RnEkJ8vebDvgAiEAxHQz5IRjq3duHC9KbIL34UVgfiRkiPugPLi5SJ8Sdfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184303471},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./parser":{"types":"./dist/parser/index.d.ts","default":"./dist/parser/index.js"}},"gitHead":"72cf021d5f8bcd9a0ba80fc1e6c27e81df83c45a","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"rm -rf dist && tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.17_1775326217663_0.6470494823758668","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.18":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.18","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.18","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"344318968cd80fe72d63d4089ce12be55086afb6","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.18.tgz","fileCount":475,"integrity":"sha512-MD5m7YWAZbpYGwDp7t5UnABwjAQA+PPNXGgbalALHoyiS8J+hrkvtiUBzP+X0k0R/pouCLaFC0q1sh790jMFmw==","signatures":[{"sig":"MEUCIQDsOS6onsTzzZXRzEAu1gl4o+bztn3KfHaTxvnCRUOZBwIgOm4kfU8A+0rdYy1Fcwe+FuM/6W8yDK9cFJyFJkwTTEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184303459},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./parser":{"types":"./dist/parser/index.d.ts","default":"./dist/parser/index.js"}},"gitHead":"def78d711079f8568af50b3ae2fd20ffc9e22bc8","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"rm -rf dist && tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.18_1775353028555_0.664022555828508","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"},"0.2.19":{"name":"@domainellipticlanguage/mtg-crucible","version":"0.2.19","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"author":{"name":"domainellipticlanguage"},"license":"ISC","_id":"@domainellipticlanguage/mtg-crucible@0.2.19","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"dist":{"shasum":"6bc44e0513173d8a2e6f3fd6d86cc06c11d594df","tarball":"https://registry.npmjs.org/@domainellipticlanguage/mtg-crucible/-/mtg-crucible-0.2.19.tgz","fileCount":475,"integrity":"sha512-PwYKqOlNiBbcfZVNHzSx5gCGWwJogJQERKgaHa32qjNtAosQrBrh1eXVaJLvI5v6Z84itRthGKdaz8zecraPCg==","signatures":[{"sig":"MEYCIQDJpsLJplG+jSpOCAa3TtIWo1fIqaB60kOUtyZDvC5K9gIhANIKYNE9Bgq2KjfoopMngvdyTjurgvSQtIX+DJZcu0Fd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184304485},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./parser":{"types":"./dist/parser/index.d.ts","default":"./dist/parser/index.js"}},"gitHead":"7eb1462b8d56ce5032fa86272c1757780701b766","scripts":{"dev":"npx tsx watch scripts/dev-server.ts","test":"vitest","build":"rm -rf dist && tsc && tsc -p tsconfig.parser.json && tsc -p tsconfig.react.json","spike":"npx tsx scripts/spike.ts","build:core":"tsc","build:react":"tsc -p tsconfig.react.json","build:parser":"tsc -p tsconfig.parser.json","generate-assets":"npx tsx logo/generate-assets.ts"},"_npmUser":{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"},"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"_npmVersion":"11.4.2","description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@napi-rs/canvas":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.0.6","tsx":"^4.21.0","react":"^19.2.4","vitest":"^4.0.18","esbuild":"^0.27.4","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mtg-crucible_0.2.19_1775355041977_0.8418223666918356","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has moved to https://www.npmjs.com/package/mtg-crucible"}},"time":{"created":"2026-03-20T12:04:24.273Z","modified":"2026-04-05T23:32:48.408Z","0.1.0":"2026-03-20T12:04:28.546Z","0.2.0":"2026-03-27T02:06:57.024Z","0.2.4":"2026-03-29T18:00:23.357Z","0.2.5":"2026-03-29T19:01:59.159Z","0.2.6":"2026-03-30T02:24:50.981Z","0.2.7":"2026-04-01T01:51:45.115Z","0.2.11":"2026-04-02T00:47:47.152Z","0.2.12":"2026-04-02T00:56:17.219Z","0.2.14":"2026-04-04T17:21:42.456Z","0.2.15":"2026-04-04T17:58:33.243Z","0.2.17":"2026-04-04T18:10:21.950Z","0.2.18":"2026-04-05T01:37:12.893Z","0.2.19":"2026-04-05T02:10:46.183Z"},"bugs":{"url":"https://github.com/domainellipticlanguage/mtg-crucible/issues"},"author":{"name":"domainellipticlanguage"},"license":"ISC","homepage":"https://github.com/domainellipticlanguage/mtg-crucible#readme","keywords":["mtg","magic-the-gathering","card-renderer","card-image","custom-cards"],"repository":{"url":"git+https://github.com/domainellipticlanguage/mtg-crucible.git","type":"git"},"description":"TypeScript library for rendering custom Magic: The Gathering card images as PNGs","maintainers":[{"name":"domainellipticlanguage","email":"nathanfdunn@gmail.com"}],"readme":"# <img src=\"https://raw.githubusercontent.com/domainellipticlanguage/mtg-crucible/main/logo/logo-256.png\" height=\"40\"> MTG Crucible\n\nA TypeScript library for rendering custom Magic: The Gathering card images as PNGs.\n\nIncludes a react component for rendering resulting card images, complete with card rotations for double-faced cards, etc.\n\n## Installation\n\n```bash\nnpm install @domainellipticlanguage/mtg-crucible\n```\n\n## Quick Start\n\n### From text\n\n```typescript\nimport { renderCard } from '@domainellipticlanguage/mtg-crucible';\nimport { writeFileSync } from 'fs';\n\nconst result = await renderCard(`\nCrucible of Legends {3}\nArt URL: https://example.com/art.png\nRarity: Mythic Rare\nLegendary Artifact\nWhenever a legendary creature you control dies, return it to your hand at the beginning of the next end step.\nFlavor Text: Every great story begins with fire.\n`);\n\nwriteFileSync('crucible-of-legends.png', result.frontFace);\n```\n\n### From structured data\n\n```typescript\nimport { renderCard } from '@domainellipticlanguage/mtg-crucible';\n\nconst result = await renderCard({\n  name: 'Crucible of Legends',\n  manaCost: '{3}',\n  typeLine: 'Legendary Artifact',\n  rarity: 'mythic',\n  abilities: 'Whenever a legendary creature you control dies, return it to your hand at the beginning of the next end step.',\n  flavorText: 'Every great story begins with fire.',\n});\n```\n\n<img src=\"https://raw.githubusercontent.com/domainellipticlanguage/mtg-crucible/main/examples/crucible-of-legends.png\" alt=\"Crucible of Legends\" width=\"300\">\n\n\n## Supported Templates\n\n- Standard (including colorless/Eldrazi full-bleed art)\n- Planeswalker (3 and 4 ability variants)\n- Saga\n- Class\n- Battle\n- Adventure\n- Transform (front and back)\n- MDFC / Modal DFC (front and back)\n- Split\n- Fuse\n- Flip (Kamigawa-style)\n- Aftermath\n- Mutate\n- Prototype\n- Leveler\n\nAlso supports Snow, Devoid, and Nyx borders, although currently only for Standard cards.\n\n## API\n\n### `renderCard(input: CardData | string): Promise<RenderedCard>`\n\nParse and render a card. Accepts either a text-format string or a `CardData` object. Returns a `RenderedCard` with `frontFace` (PNG buffer), optional `backFace`, orientation info, and rotation data for multi-face cards.\n\n### `parseCard(text: string): CardData`\n\nParse a text-format card definition into a `CardData` object.\n\n### `formatCard(card: CardData): string`\n\nConvert a `CardData` object back to text format (round-trips with `parseCard`).\n\n### `normalizeCard(card: CardData): NormalizedCardData`\n\nNormalize a `CardData` into `NormalizedCardData` with all fields resolved (frame colors derived, abilities parsed, defaults filled in).\n\n### `getArtDimensions(card: CardData): { primaryArtDimensions: { width, height }; secondaryArtDimensions?: { width, height } }`\n\nGet the expected art image dimensions for a card. Returns primary dimensions, and secondary dimensions if the card has a linked card (e.g. transform, split, aftermath).\n\n## Text Format\n\nFor convenience, cards can be defined in a plain text format, which is a superset of Scryfall's copy-pasteable text format. \n\nAdditional metadata fields can appear on any line (order doesn't matter):\n\n- `Rarity: Mythic Rare`\n- `Flavor Text: Every great story begins with fire.`\n- `Art URL: https://example.com/art.png`\n- `Art Description: A fiery landscape`\n- `Artist: Chris Rahn`\n- `Set: MH3`\n- `Collector Number: 205`\n- `Designer: Mark Rosewater`\n- `Frame Color: Red and Blue`\n- `Frame Effect: Nyx`\n- `Accent Color: Green`\n- `Name Line Color: Blue and Red`\n- `Type Line Color: White`\n- `PT Box Color: Black`\n\nThese fields can be used to create flavorful card styles. For example:\n\n### Combine Snow and Nyx borders\n```\nConduit of Fire and Ice {2}{U/R}\nArtifact\nWhenever you cast an instant or sorcery spell, choose one —\n- Fire — Conduit of Fire and Ice deals 1 damage to each opponent.\n- Ice — Scry 1.\nArt URL: https://example.com/art.png\nFrame Effect: Nyx, Snow\nFrame Color: Red, Blue\n```\n<img src=\"https://raw.githubusercontent.com/domainellipticlanguage/mtg-crucible/main/examples/conduit-of-fire-and-ice.png\" alt=\"Crucible of Legends\" width=\"300\">\n\n\n### Multi-color border\n```\nThe Candy Striper {2}{R}{W}\nLegendary Creature — Nightmare Spirit\nHaste, lifelink\nWhenever the Candy Striper attacks, each opponent loses 1 life and you gain 1 life for each enchantment you control.\n3/3\nArt URL: https://example.com/art.png\nFrame Color: Red, White, Red, White, Red, White, Red, and White\nAccent: Red, White, Red, White, Red, White, Red, and White\nName Line Color: Red, White, Red, White, Red, White, Red, and White\nType Line Color: Red, White, Red, White, Red, White, Red, and White\nPT Box Color: Red, White, Red, White, Red, White, Red, and White\n```\n\n<img src=\"https://raw.githubusercontent.com/domainellipticlanguage/mtg-crucible/main/examples/the-candy-striper.png\" alt=\"The Candy Striper\" width=\"300\">\n\n### Split card\n```\nGloom {1}{G}\nInstant\nDestroy target artifact or enchantment.\n--split--\nDoom {2}{B}\nSorcery\nEach player sacrifices a creature.\n```\n\n<img src=\"https://raw.githubusercontent.com/domainellipticlanguage/mtg-crucible/main/examples/gloom-doom.png\" alt=\"Gloom // Doom\" width=\"300\">\n\nSupported link types: `--transform--`, `--mdfc--`, `--split--`, `--fuse--`, `--flip--`, `--adventure--`, `--aftermath--`\n\n## React Component\n\n```tsx\nimport { MtgCard } from '@domainellipticlanguage/mtg-crucible/react';\n\n<MtgCard\n  card={renderedCardDisplay}\n  cardText=\"Crucible of Legends\"           // will be invisible, but searchable with ctrl+f\n  rotateWidgetStyle={{ display: 'none' }}  // optional: hide rotation arrow\n/>\n```\n\nThe component supports:\n- Click to cycle through rotations (transform, flip, split, etc.)\n- Rotation arrow widget (Scryfall-style) with hover/click animation\n- Right-click context menu: download, copy image, copy text formats\n- Invisible searchable text overlay for Ctrl+F\n- CSS 3D transforms for card flipping\n\n## Development\n\n```bash\nnpm test          # run tests (vitest)\nnpm run build     # compile TypeScript\nnpm run dev       # start local dev server with hot reload\n```\n\n## TODO\n- [ ] Add full support for Rooms\n- [ ] Support all frame effects (Snow, Nyx, Devoid) for all card types\n- [ ] Support MDFC/Transform for all card types\n- [ ] Support composite artist credits\n\n## Acknowledgements\n\nCard frame assets are derived from [Card Conjurer](https://github.com/Investigamer/cardconjurer), an open-source MTG card creation tool.\n\nMagic: The Gathering is a trademark of Wizards of the Coast, LLC. This project is not affiliated with, endorsed by, or sponsored by Wizards of the Coast or Hasbro.\n","readmeFilename":"README.md"}