Skip to content

Releases: modiimedia/arri

v0.81.1

09 Dec 19:06

Choose a tag to compare

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

Full Changelog: v0.81.0...v0.81.1

v0.81.0

06 Dec 04:56

Choose a tag to compare

What's Changed

Typescript

  • BREAKING [ts-codegen] new Date(0) is now the fallback value for timestamps instead of new 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 of DateTime.now()

Merged PRs

Full Changelog: v0.80.3...v0.81.0

v0.80.3

13 Jun 04:19

Choose a tag to compare

What's Changed

Arri CLI

  • fix build issues on windows when running arri dev and arri 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 timeout parameter to generated clients that accepts a Duration. This parameter is used to set a default timeout duration for http requests
  • [dart-client] add optional heartbeatIntervalMultiplier parameter 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

Full Changelog: v0.80.2...v0.80.3

v0.80.2

09 Jun 22:43

Choose a tag to compare

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

09 Jun 20:30

Choose a tag to compare

What's Changed

  • feature: add support for heartbeatTimeoutMultiplier to generated dart clients by @joshmossas in #175

Full Changelog: v0.80.0...v0.80.1

v0.80.0

09 Jun 20:07

Choose a tag to compare

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] SseOptions now includes a heartbeatTimeoutMultipler options 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

Full Changelog: v0.79.1...v0.80.0

v0.79.1

27 May 18:03

Choose a tag to compare

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

16 Apr 16:11

Choose a tag to compare

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 nullable keyword has been renamed to isNullable
  • [BREAKING] The strict keyword has been renamed to isStrict
  • Add keyword deprecatedNote to Arri Type Definition metadata
  • Add keyword deprecatedNote to 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 just T | undefined
    • This conforms more to user expectation however it is a breaking change
  • [ts-schema] a.undefinable() has been added. It behaves the way that a.optional() used to behave. (It makes a field T | undefined but the key must still be present when initializing the object in TS)
  • [ts-schema] [BREAKING] strict option for object schemas has been marked as deprecated
  • [ts-schema] isStrict has been added as an option for object schemas

Merged PRs

  • [ts-schema] feature: ensure that a.optional makes object keys optional + add a.undefinable schema which mimicks old behavior of a.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

01 Apr 17:57

Choose a tag to compare

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 ArriRequestOptions to ArriRequestConfig

Full Changelog: v0.77.1...v0.78.0

v0.77.1

31 Mar 05:02

Choose a tag to compare

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 dev or arri build would crash on windows

Full Changelog: v0.77.0...v0.77.1