Repository navigation
Releases: ayronforge/haversack
Release list
Haversack 0.12.0
Presigned PUT URLs can now bind the upload size (#11).
BlobPresignPutInput takes an optional contentLength. When set, the R2 and S3 presigners sign Content-Length together with Content-Type, so the storage rejects an upload whose body has any other size. Browsers send Content-Length automatically. A length that is not a non-negative safe integer fails with BlobPresignError.
Without contentLength, URLs are signed exactly as before.
Haversack 0.11.0
Supports Effect 4.0.0 stable (#10). The effect peer range is now ^4.0.0.
Internal imports moved from effect/unstable/{http,persistence,workflow} to the stable effect/{http,persistence,workflow} subpaths.
Breaking: Effect release candidates (4.0.0-rc.*) are no longer supported. Upgrade to effect@^4.0.0.
Haversack 0.10.0
Supports Effect 4.0.0-rc.116 (#9). The effect peer range now starts at 4.0.0-rc.116.
EndpointUrlFromString and PhoneNumberFromString use SchemaGetter.transformEffect, since rc.116 removed transformOrFail.
Breaking: RateLimiterRpc.tokenBucket returns [remaining, elapsedMillis] instead of number, matching the new RateLimiterStore.tokenBucket contract. Durable Objects implementing RateLimiterRpc must return the time elapsed in the current refill interval (0 when the bucket was at capacity before consuming).
Haversack 0.9.0
PostHogAnalytics, FeatureFlags and AnalyticsEngine now read Effect's FetchHttpClient.Fetch reference instead of the global fetch. Default is unchanged (globalThis.fetch); hosts and tests inject a transport with Effect.provideService(FetchHttpClient.Fetch, fn) (#8).
v0.8.0
v0.7.0
Canonical schema contracts for Brazilian identifiers and reusable string values.
- CNPJ now stores and encodes canonical digits, exposes normalization, accepts masked validation input, and carries a brand.
- EndpointUrl now separates canonical domain values from EndpointUrlFromString input parsing.
- UUID validation now enforces RFC version and variant bits, normalizes input to lowercase, and carries a brand.
- Slug values are now branded.
These public type and encoding changes intentionally ship as a minor release.
Haversack 0.6.0
Contact value contracts
- Canonical E.164 phone numbers with explicit country parsing, formatting, inspection, and input masking.
- Branded canonical CEP and CPF values with presentation-only formatters.
- Stricter branded email parsing with explicit local-part normalization policy.
- Injectable ViaCEP lookup with Effect cancellation/timeouts, sparse response support, and precise privacy-safe errors.