{"_id":"@24letters/upload-artifact","_rev":"2-0197c43b8bcc1fbf5381acdbeac34487","name":"@24letters/upload-artifact","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@24letters/upload-artifact","version":"0.1.0","keywords":["artifacts","cli","convex","files","uploads"],"license":"MIT","_id":"@24letters/upload-artifact@0.1.0","maintainers":[{"name":"atimmer","email":"email@atimmer.com"}],"bin":{"upload-artifact":"dist/index.js"},"dist":{"shasum":"7a26680db44773103f998859524e7fb4e50d52f7","tarball":"https://registry.npmjs.org/@24letters/upload-artifact/-/upload-artifact-0.1.0.tgz","fileCount":4,"integrity":"sha512-4oxsjGZ8Lpd601xFXc3iq5d3JHtDyN8fqZ/wYOaXPz1fhNnwIpJ7UtKQH6SNZRI4e0RAw3owzBZ6Ik/+L9kdrA==","signatures":[{"sig":"MEQCIF/B6xeX7l0Ahn67MWr66ukSZzyk8j+pKl45t8rBpmmiAiBn1oTQY40VjnfTCEKZ71Cnyz0vd+TwUMapKaEz3UU8Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17886},"type":"module","engines":{"node":">=20"},"gitHead":"e507d15f5a3f05837a98a6f0150167f24d14745a","scripts":{"build":"node ../../node_modules/typescript/bin/tsc -p tsconfig.json","typecheck":"node ../../node_modules/typescript/bin/tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"atimmer","email":"email@atimmer.com"},"_npmVersion":"11.13.0","description":"CLI for uploading immutable arbitrary files to Upload Artifact.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mime-types":"^3.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/upload-artifact_0.1.0_1785151640941_0.5079862102350403","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@24letters/upload-artifact","version":"0.2.0","type":"module","description":"CLI for uploading immutable arbitrary files to Upload Artifact.","license":"MIT","bin":{"upload-artifact":"dist/index.js"},"keywords":["artifacts","cli","convex","files","uploads"],"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"build":"node ../../node_modules/typescript/bin/tsc -p tsconfig.json","typecheck":"node ../../node_modules/typescript/bin/tsc -p tsconfig.json --noEmit"},"dependencies":{"mime-types":"^3.0.2"},"_id":"@24letters/upload-artifact@0.2.0","gitHead":"0789f71c3472af6ab983aa849afd23dc62efadc8","_nodeVersion":"20.20.2","_npmVersion":"11.5.1","dist":{"integrity":"sha512-5zR6LF4ftZp/L2jGjzYjmBXQGt6rGltYPUw3TBikkAKETYgNerJNYbJS80zGVrdK/W5o3u1fE5l57PUYxh9ttg==","shasum":"5f0ab1c7e25108ca6dbae8fbea3db51309cf4217","tarball":"https://registry.npmjs.org/@24letters/upload-artifact/-/upload-artifact-0.2.0.tgz","fileCount":4,"unpackedSize":23318,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFuQ3GaBu5TW3YBIAyHXVZ68RanR8D9+vwVF9W/9yHRPAiBE4mduLI8LEDnIO9d3uFmZAjEhXRRavYDLuhhy9gPdcw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:40ffb0a6-1266-4661-bce7-0df437d9c412"}},"directories":{},"maintainers":[{"name":"atimmer","email":"email@atimmer.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upload-artifact_0.2.0_1786446894038_0.8740682558971793"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-27T11:27:20.740Z","modified":"2026-08-11T11:14:54.346Z","0.1.0":"2026-07-27T11:27:21.092Z","0.2.0":"2026-08-11T11:14:54.184Z"},"license":"MIT","keywords":["artifacts","cli","convex","files","uploads"],"description":"CLI for uploading immutable arbitrary files to Upload Artifact.","maintainers":[{"name":"atimmer","email":"email@atimmer.com"}],"readme":"# @24letters/upload-artifact\n\nCLI for uploading immutable arbitrary files to an Upload Artifact deployment.\n\n## Install\n\n```sh\npnpm add -g @24letters/upload-artifact\n```\n\n## Authenticate\n\n```sh\nupload-artifact auth login --api <origin> --token <token> --agent <default-agent>\n```\n\n## Upload\n\n```sh\nupload-artifact upload <path> [--agent <name>]\n```\n\nThe upload command prints only the public viewer URL on success. File bytes go\nstraight from the CLI to a short-lived Convex storage upload URL; they do not\npass through the app's Next.js API routes.\n\n## Change expiry\n\n```sh\nupload-artifact expiry <artifact-uuid-or-viewer-url> <when>\n```\n\n`<when>` is an ISO 8601 date or datetime; date-only values are UTC midnight.\nThe command prints the updated expiry as an ISO timestamp.\n","readmeFilename":"README.md"}