{"_id":"@crashcontinuum/crashcart-stamp","_rev":"4-6764517fb1acfe96db79b8664d984639","name":"@crashcontinuum/crashcart-stamp","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@crashcontinuum/crashcart-stamp","version":"1.0.0","keywords":["crashcart","crashbasic","crash-basic","game","license","stamp"],"author":{"url":"https://crashcontinuum.com","name":"Crash Continuum LLC"},"license":"UNLICENSED","_id":"@crashcontinuum/crashcart-stamp@1.0.0","maintainers":[{"name":"bramedg","email":"daniel.brame@gmail.com"}],"homepage":"https://arcade.crashbasic.com","bin":{"crashcart-stamp":"bin/crashcart-stamp.mjs"},"dist":{"shasum":"340dbe4513deb009b54cfcea1d4f4bdf114bd2b8","tarball":"https://registry.npmjs.org/@crashcontinuum/crashcart-stamp/-/crashcart-stamp-1.0.0.tgz","fileCount":3,"integrity":"sha512-bhGf4f2yhsmnE04X7v7sF7Po/DArVjeFtb5iMeAddoTbCiAZHGCLHYPkUhTPARuM9UwOlzMHEhiaBsoPVcFSCQ==","signatures":[{"sig":"MEUCIQDXSQgy+jxUOIpPe4NcJ6YXlvkCIcS2jkeifYg178gVnwIgZ98jSmfEKmZZPHzyyUod/vH3NgLkPe4zyGsbnEgm0+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28270},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9d2bbbe574f194dd78744a2c253cb0b4ed00512b","_npmUser":{"name":"bramedg","email":"daniel.brame@gmail.com"},"_npmVersion":"10.9.4","description":"License stamping tool for CrashCart game bundles","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crashcart-stamp_1.0.0_1771719469230_0.10630651247989253","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@crashcontinuum/crashcart-stamp","version":"1.0.1","keywords":["crashcart","crashbasic","crash-basic","game","license","stamp"],"author":{"url":"https://crashcontinuum.com","name":"Crash Continuum LLC"},"license":"UNLICENSED","_id":"@crashcontinuum/crashcart-stamp@1.0.1","maintainers":[{"name":"bramedg","email":"daniel.brame@gmail.com"}],"homepage":"https://arcade.crashbasic.com","bin":{"crashcart-stamp":"bin/crashcart-stamp.mjs"},"dist":{"shasum":"77b1cc68741d56e365c856f1d9b4161c838cec3f","tarball":"https://registry.npmjs.org/@crashcontinuum/crashcart-stamp/-/crashcart-stamp-1.0.1.tgz","fileCount":3,"integrity":"sha512-WTAntVDj0UGT4qKulMTJ07IZZSYMRx5xw36dyeoAdKDazjJnNP2pUpu2JPHb92GxPdVlEAGYxr7VTueh2NWbkw==","signatures":[{"sig":"MEQCIEgMAkv5GGLO7cfUlU/L5Wbyb87p1xFcrlDwDOKU0Z7pAiAIIXWrLjaARfuT8cme/wnckZ0p4kZyYZ1q3DDdymldmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28270},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9d2bbbe574f194dd78744a2c253cb0b4ed00512b","_npmUser":{"name":"bramedg","email":"daniel.brame@gmail.com"},"_npmVersion":"10.9.4","description":"License stamping tool for CrashCart game bundles","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crashcart-stamp_1.0.1_1771720767829_0.0988477682617881","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@crashcontinuum/crashcart-stamp","version":"1.0.2","keywords":["crashcart","crashbasic","crash-basic","game","license","stamp"],"author":{"url":"https://crashcontinuum.com","name":"Crash Continuum LLC"},"license":"UNLICENSED","_id":"@crashcontinuum/crashcart-stamp@1.0.2","maintainers":[{"name":"bramedg","email":"daniel.brame@gmail.com"}],"homepage":"https://arcade.crashbasic.com","bin":{"crashcart-stamp":"bin/crashcart-stamp.mjs"},"dist":{"shasum":"82f586a7e94f2d97d7d85320476842358c926a80","tarball":"https://registry.npmjs.org/@crashcontinuum/crashcart-stamp/-/crashcart-stamp-1.0.2.tgz","fileCount":3,"integrity":"sha512-juAf8QZySrobHghdX2XKUIeH2wktyIHXFEuWjuCGXn99fAPrnV8CWixg1lGZtWydQv/CpiupLjSsyI1zTxdcmA==","signatures":[{"sig":"MEUCIFUCag0HEJHXedHwzuxfpmlRWyl8GrWUSKKasCNIWOSsAiEAhfYImdIJOzjbbUAA4I+DDrjkIUnUHeY7FLHCCLQnWk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28270},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7d947c50fb616aa23873e61d1b92f051970b4913","_npmUser":{"name":"bramedg","email":"daniel.brame@gmail.com"},"_npmVersion":"10.9.4","description":"License stamping tool for CrashCart game bundles","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/crashcart-stamp_1.0.2_1773271915573_0.23907236067175797","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@crashcontinuum/crashcart-stamp","version":"1.0.3","description":"License stamping tool for CrashCart game bundles","type":"module","bin":{"crashcart-stamp":"bin/crashcart-stamp.mjs"},"keywords":["crashcart","crashbasic","crash-basic","game","license","stamp"],"author":{"name":"Crash Continuum LLC","url":"https://crashcontinuum.com"},"license":"UNLICENSED","homepage":"https://arcade.crashbasic.com","engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"_id":"@crashcontinuum/crashcart-stamp@1.0.3","gitHead":"167767b63b868ec3e001bd49c00ce711c24c34d0","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-adbHPMXeaa+pxtLC8wlYbHb55vF2AeV2Bgd6G5DBN6GcVmxt3YZ7QS+qpIWwx7XyWqgavdv/DZFy3B7o71w4oA==","shasum":"4f305295b9e891c68df9308b9e1888392ab29b1e","tarball":"https://registry.npmjs.org/@crashcontinuum/crashcart-stamp/-/crashcart-stamp-1.0.3.tgz","fileCount":3,"unpackedSize":28961,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD4MUqMtMB8J9+O5lE0tphE9eLb9G8auGnRh2I/w02I7wIhANJKMrll8+XRRbq39laME+9v+Vk1HVjlMuD4roJMbziA"}]},"_npmUser":{"name":"bramedg","email":"daniel.brame@gmail.com"},"directories":{},"maintainers":[{"name":"bramedg","email":"daniel.brame@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/crashcart-stamp_1.0.3_1775149178381_0.6136238233923597"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-22T00:17:49.149Z","modified":"2026-04-02T16:59:38.646Z","1.0.0":"2026-02-22T00:17:49.385Z","1.0.1":"2026-02-22T00:39:28.023Z","1.0.2":"2026-03-11T23:31:55.768Z","1.0.3":"2026-04-02T16:59:38.507Z"},"author":{"name":"Crash Continuum LLC","url":"https://crashcontinuum.com"},"license":"UNLICENSED","homepage":"https://arcade.crashbasic.com","keywords":["crashcart","crashbasic","crash-basic","game","license","stamp"],"description":"License stamping tool for CrashCart game bundles","maintainers":[{"name":"bramedg","email":"daniel.brame@gmail.com"}],"readme":"# @crashcontinuum/crashcart-stamp\n\nLicense stamping tool for CrashCart game bundles.\n\nStamps your `.crashcart` files with a license from [Crash BASIC Arcade](https://arcade.crashbasic.com), embedding your subscription tier and commercial use rights directly into the game.\n\n## Installation\n\n```bash\n# Use directly with npx (no install required)\nnpx @crashcontinuum/crashcart-stamp mygame.crashcart\n\n# Or install globally\nnpm install -g @crashcontinuum/crashcart-stamp\ncrashcart-stamp mygame.crashcart\n```\n\n## Usage\n\n```bash\ncrashcart-stamp <crashcart-file> [options]\n```\n\n### Options\n\n| Option | Description |\n|--------|-------------|\n| `-o, --output <file>` | Output file path (default: `<input>.stamped.crashcart`) |\n| `--arcade-url <url>` | Arcade base URL (default: `https://arcade.crashbasic.com`) |\n| `-h, --help` | Show help message |\n| `-v, --version` | Show version number |\n\n### Examples\n\n```bash\n# Stamp a crashcart (creates mygame.stamped.crashcart)\nnpx @crashcontinuum/crashcart-stamp mygame.crashcart\n\n# Stamp with custom output filename\nnpx @crashcontinuum/crashcart-stamp mygame.crashcart -o mygame-licensed.crashcart\n\n# Use a local development server\nnpx @crashcontinuum/crashcart-stamp mygame.crashcart --arcade-url http://localhost:3000\n```\n\n## How It Works\n\n1. **Reads** your CrashCart file and computes its SHA-256 checksum\n2. **Opens** your browser for authentication with Crash BASIC Arcade\n3. **Fetches** a signed license stamp from the Arcade API\n4. **Creates** a stamped copy of your CrashCart (original file unchanged)\n\nThe stamp is cryptographically signed and bound to your specific build via the checksum. Any modifications to the CrashCart will invalidate the stamp.\n\n**Note:** The original file is never modified. A new `.stamped.crashcart` file is created.\n\n## License Tiers\n\n| Tier | Commercial Use | Splash Screen | Subscription |\n|------|----------------|---------------|--------------|\n| **Free** | No | 3 seconds, required | Free |\n| **Indie** | Yes | 2 seconds, skippable | Premium ($4.99/mo) |\n| **Studio** | Yes | Removable | Multiplayer ($9.99/mo) |\n\nUpgrade your license at: https://arcade.crashbasic.com/pricing\n\n## Stamped File Format\n\nThe stamp is appended to the end of the CrashCart file:\n\n```\n[Original CrashCart Data]\n[CRSTAMP\\0 magic - 8 bytes]\n[Stamp length - 4 bytes uint32 LE]\n[JSON stamp data]\n```\n\nThe original CrashCart content is not modified, ensuring the stamp can be verified by computing:\n\n```\nchecksum = SHA256(file[0:metadataOffset + metadataLength + 64])\n```\n\n## Requirements\n\n- Node.js 18.0.0 or later\n- A Crash BASIC Arcade account (free or paid)\n\n## License\n\n© 2026 Crash Continuum LLC. All rights reserved.\n","readmeFilename":"README.md"}