Skip to content

v0.24.0

Latest

Choose a tag to compare

@jpalumickas jpalumickas released this 20 May 22:48
· 3 commits to main since this release

v0.24.0

First release after a long modernization pass. All @uplo/* packages are now ESM-first, dual-published (ESM + CJS), and shipped from npm with provenance via GitHub Actions Trusted Publishing.

Breaking changes

You'll need to touch a few imports. The renames are mechanical.

UplocreateUplo

- import Uplo from '@uplo/node'
+ import { createUplo } from '@uplo/node'

- const uplo = Uplo({ ... })
+ const uplo = createUplo({ ... })

@uplo/service-s3: default export → named factory

- import S3Service from '@uplo/service-s3'
+ import { createS3Service } from '@uplo/service-s3'

- s3: S3Service({ bucket, region, accessKeyId, secretAccessKey })
+ s3: createS3Service({ bucket, region, accessKeyId, secretAccessKey })

@uplo/service-gcs: class → named factory

- import GCSService from '@uplo/service-gcs'
+ import { createGCSService } from '@uplo/service-gcs'

- google: new GCSService({ bucket, credentialsPath })
+ google: createGCSService({ bucket, credentialsPath })

Packages are now pure ESM

Every package sets "type": "module". CJS is still published (.cjs build), so require('@uplo/...') continues to work — but if you're authoring ESM, drop file extensions from your own imports accordingly.

New

  • Hono support — mount Uplo into any fetch-based runtime (Hono, Cloudflare Workers, Bun, Deno) via the new subpath export:
    import { createUploRouteHandler } from '@uplo/server/route-handler'
    app.all('/uplo/*', (c) => createUploRouteHandler({ uplo })(c.req.raw))
  • GCS auth flexibilitycreateGCSService now accepts inline credentials + projectId, or no auth at all (uses Application Default Credentials on Cloud Run / GKE / GCE).

Full docs at uplo.js.org.