Releases: modiimedia/arri
v0.81.1
What's Changed
- fix(rust-codegen): emit nested service struct definitions by @michael-dm in #188
- fix(go-server): fix bug where url paths for nested services are not consistent with the ts server implementation
- chore: add tests for nested services to integration test suite by @joshmossas in #189
New Contributors
- @michael-dm made their first contribution in #188
Full Changelog: v0.81.0...v0.81.1
v0.81.0
What's Changed
Typescript
- BREAKING [ts-codegen]
new Date(0)is now the fallback value for timestamps instead ofnew Date() - [ts-server] fallback to non-compiled validators in environments that do not allow eval (e.g. cloudflare workers, edge functions)
Dart
- BREAKING [dart-codegen]
DateTime(0)is now the fallback value for timestamps instead ofDateTime.now()
Merged PRs
- chore: update libs by @joshmossas in #180
- refactor: dart and ts make datetime parsing treat Date(0) as the default by @joshmossas in #183
- feature: fallback to runtime validation if a.compile fails by @joshmossas in #185
- chore: update ts libs by @joshmossas in #186
Full Changelog: v0.80.3...v0.81.0
v0.80.3
What's Changed
Arri CLI
- fix build issues on windows when running
arri devandarri build. Fixes are in place for both the go server plugin and ts server plugin
Typescript
- [ts-server] add ability to set default heartbeatInterval app - wide
Go
- [go-server] add ability to set default HeartbeatInterval app wide
Dart
- [dart-client] add optional
timeoutparameter to generated clients that accepts aDuration. This parameter is used to set a default timeout duration for http requests - [dart-client] add optional
heartbeatIntervalMultiplierparameter to generated clients. This is used when setting heartbeat timeouts for server sent events.
Commits
- Modify GitHub Actions yaml to run unit tests on ubuntu and windows os to validate cross platform build by @MatthewMarroquin in #177
- feature: more dart and ts client options by @joshmossas in #178
New Contributors
- @MatthewMarroquin made their first contribution in #177
Full Changelog: v0.80.2...v0.80.3
v0.80.2
What's Changed
- remove unnecessary logs + add lint rules to prevent unnecessary logs … by @joshmossas in #176
Full Changelog: v0.80.1...v0.80.2
v0.80.1
What's Changed
- feature: add support for
heartbeatTimeoutMultiplierto generated dart clients by @joshmossas in #175
Full Changelog: v0.80.0...v0.80.1
v0.80.0
What's Changed
This release adds built-in heartbeat support for the Typescript server and Go server. It also adds built-in heartbeat detection for the Typescript and Dart clients (further client support will be added in subsequent releases). All event stream rpcs now automatically emit heartbeat messages at regular intervals (customizable)
This also lays some of the groundwork for support of other transports such as Websockets, which will also be making use of automatic heartbeat detection to detect dropped connections. (We aren't there yet but it's one step in that direction 😉 )
Typescript
- [ts-server] automatically send "heartbeat" message when streaming server sent events
- [ts-server] add ability to customize how often a "heartbeat" message is sent via server sent events (default is 20 seconds)
- [ts-server] send a "heartbeat-interval" header to client which indicates how often a "heartbeat" message will be sent
- [ts-server] BREAKING: Event Stream procedures now default to using the "POST" http method for consistency
- [ts-client] auto reconnect if "heartbeat" message hasn't been received during the allotted time
- [ts-client] respect the "heartbeat-interval" header sent from the server
- [ts-client]
SseOptionsnow includes aheartbeatTimeoutMultipleroptions which is used internally when setting the heartbeat timeouts
Migration Guide
If you have any event stream rpcs registered using @arrirpc/server all of the http routes for those procedures will be changed from "get" to "post". If want to prevent from breaking existing clients you can manually change the http method to "get". If you don't care about breaking past clients then you can just ignore.
defineEventStreamRpc({
method: "get", // add this line
...
})All previous http methods are still supported. The only thing that has changed is the default behavior. All procedures now register routes as a "post" request as default unless specified otherwise. (This also makes behavior consistent between the TS server and Go server).
Go
- [go-server] automatically send "heartbeat" message when streaming server sent events
- [go-server] add ability to customize how often "heartbeat" message is sent via server sent events (default is 20 seconds)
- [go-server] send a "heartbeat-interval" header to client which indicates how often a "heartbeat" message will be sent
Dart
- [dart-client] auto reconnect if "heartbeat" message hasn't been received during the allotted time
- [dart-client] respect the "heartbeat-interval" header sent from the server
Commits
- feature: automatic heartbeat detection by @joshmossas in #174
Full Changelog: v0.79.1...v0.80.0
v0.79.1
What's Changed
- chore: update javascript libs + add benchmarks for Zod/v4 by @joshmossas in #172
Full Changelog: v0.79.0...v0.79.1
v0.79.0
What's Changed
Arri Specifications
Because this contains changes to the internal schemas, all server implementations and code generators have been affected. The external interfaces haven't necessarily changed, but you will need to upgrade all your Arri dependencies together (Ex: your server and client libraries both must be upgraded to v0.79.0). You can use npx arri use latest at the root of your repo to simplify this process.
The following modifications have been made to the internal Arri Type Definition and Arri App Definition specifications:
- [BREAKING] The
nullablekeyword has been renamed toisNullable - [BREAKING] The
strictkeyword has been renamed toisStrict - Add keyword
deprecatedNoteto Arri Type Definition metadata - Add keyword
deprecatedNoteto Arri App Definition procedures
This change has been made to ensure all boolean values in the Arri specifications conform to the same naming convention (ex: isDeprecated, isEventStream, etc). The addition of the deprecatedNote keyword lays the groundwork to enable Arri generators to include specific deprecation messages for types, fields, and procedures.
The schemaVersion value has been incremented to v0.0.8
Typescript
- [ts-schema] [BREAKING]
a.optional()now makes object keys optional in TS rather than justT | undefined- This conforms more to user expectation however it is a breaking change
- [ts-schema]
a.undefinable()has been added. It behaves the way thata.optional()used to behave. (It makes a fieldT | undefinedbut the key must still be present when initializing the object in TS) - [ts-schema] [BREAKING]
strictoption for object schemas has been marked as deprecated - [ts-schema]
isStricthas been added as an option for object schemas
Merged PRs
- [ts-schema] feature: ensure that
a.optionalmakes object keys optional + adda.undefinableschema which mimicks old behavior ofa.optional()by @joshmossas in #170 - refactor: consistent bool properties in app def and type def by @joshmossas in #171
Full Changelog: v0.78.0...v0.79.0
v0.78.0
What's Changed
Typescript
- [ts-client] feature: add support for automatic retry, timeouts, and request hooks in typescript clients by @joshmossas in #166
- [ts-client] POTENTIALLY BREAKING: Rename type
ArriRequestOptionstoArriRequestConfig
Full Changelog: v0.77.1...v0.78.0
v0.77.1
What's Changed
- [cli] bugfix: ensure that dynamic imports use windows compliant file paths on windows by @joshmossas in #164
- This fixes a bug where running
arri devorarri buildwould crash on windows
- This fixes a bug where running
Full Changelog: v0.77.0...v0.77.1