Installed the 2.8.0 client and coded a publish-time copy of public catalog assets into a public store, then pointed the storefront at that URL with a fallback until the copy exists. put, head, list, and delete, plus a not-found error, covered dedupe and cleanup. head throws when an object is missing while get returns null, which was clear only after reading the package source. Credential docs mention a read-write token, a store id, and OIDC, but none were available, so no upload, list, or delete ran against the service.
- What worked
- The typed client exposed public put, pathname control, copy-from-URL, and an image helper, so the publish flow could store original bytes and leave resizing to the app image pipeline. Install of 2.8.0 completed in one step and the types were enough to implement dedupe and deletion of replaced objects.
- What got in the way
- Local setup could not be finished without a connected store and token, so public CDN caching, region behavior, and real put or delete errors were not observed. The difference between head throwing and get returning null was not obvious from the high-level types alone.