Skip to content

Releases: unnoq/orpc

v1.0.0-beta.1

15 Mar 14:21
Compare
Choose a tag to compare

📅6 months, 176,384 ++, 116,777 --
🎉 oRPC 1.0.0-beta.1 now available

✅ Typesafe Input/Output/Errors/File/Streaming
✅ Tanstack query (React, Vue, Solid, Svelte)
✅ React Server Action
✅ (Optional) Contract First Dev
✅ OpenAPI Spec
✅ Vue Pinia
✅ Standard Schema

Production ready?
🫡 99% APIs are stable
🫡 99% Test Coverage
🫡 30 days left until v1

Adding @beta at the end to install

   🚨 Breaking Changes

   🚀 Features

   🐞 Bug Fixes

  • contract, server:
  • server:
  • zod:
    • Apply propertyNames to string schemas in JSON Schema gen  -  by @unnoq in #217 (3b1da)
    View changes on GitHub

v0.48.0

15 Mar 23:44
Compare
Choose a tag to compare
v0.48.0 Pre-release
Pre-release

For someone accidentally install latest version, can feel the same experience as 1.0.0-beta.1

   🚨 Breaking Changes

   🚀 Features

   🐞 Bug Fixes

  • contract, server:
  • server:
  • zod:
    • Apply propertyNames to string schemas in JSON Schema gen  -  by @unnoq in #217 (3b1da)
    View changes on GitHub

v0.47.0

08 Mar 13:42
Compare
Choose a tag to compare

🚀 OpenAPIGenerator and @orpc/zod Rewritten! 🚀

We've completely revamped OpenAPIGenerator and @orpc/zod, bringing:
✅ 95% test coverage for reliability
✅ Improved bundling: 25.4 kB (gzip) -> 8.64 (gzip)
✅ Improved performance
✅ Enhancements across all specifications

🚨 Breaking Changes 🚨

Some options have changed. Run tsc to check for any necessary updates.

   🚨 Breaking Changes

   🚀 Features

   🐞 Bug Fixes

  • query: Unable to infer mutation context when onMutate has args  -  by @unnoq in #200 (954e6)
    View changes on GitHub

v0.46.0

04 Mar 14:22
Compare
Choose a tag to compare

🚨 Breaking Changes 🚨

RPCLink, RPCHandler, OpenAPIHandler, ...

  • Rename eventSourcePingEnabled option to eventIteratorKeepAliveEnabled
  • Rename eventSourcePingInterval option to eventIteratorKeepAliveInterval
  • Rename eventSourcePingContent option to eventIteratorKeepAliveComment

RPCLink

  • Rename eventSourceMaxNumberOfRetries option to eventIteratorMaxRetries
  • Rename eventSourceRetryDelay option to eventIteratorRetryDelay
  • Rename eventSourceRetry option to eventIteratorShouldRetry

🌟 New APIs 🌟

RPCLink

  • interceptors for intercept before call
  • clientInterceptors for intercepting before send request

   🚨 Breaking Changes

   🚀 Features

    View changes on GitHub

v0.45.1

04 Mar 00:19
Compare
Choose a tag to compare

   🐞 Bug Fixes

  • openapi-client: Handle empty objects in bracket-notation deserialization  -  by @unnoq in #196 (1b155)
    View changes on GitHub

v0.45.0

02 Mar 14:04
Compare
Choose a tag to compare

🏎 Performance 🏎

Procedure with .output now dramatically enhance both type-checking and IDE-suggestion speed.

const example = os
  .output(type<string>())
  .handler(() => 'Hello word!')

   🐞 Bug Fixes

   🏎 Performance

    View changes on GitHub

v0.44.0

01 Mar 14:06
Compare
Choose a tag to compare

🚀 Event-Source Ping Interval

New feature to keep Event Iterator alive.
RPCHandler periodically sends a ping comment to the client. You can configure this behavior using the following options:

  • eventSourcePingEnabled (default: true) – Enables or disables pings.
  • eventSourcePingInterval (default: 5000) – Time between pings (in milliseconds).
  • eventSourcePingContent (default: '') – Custom content for ping messages.
const result = await handler.handle(request, {
  eventSourcePingEnabled: true,
  eventSourcePingInterval: 5000, // 5 seconds
  eventSourcePingContent: '',
})

   🚨 Breaking Changes

   🚀 Features

   🐞 Bug Fixes

    View changes on GitHub

v0.43.0

27 Feb 14:14
Compare
Choose a tag to compare

🚨 Update safe utility 🚨

Before:

  • safe return tuple [data, error, isDefined]
  • error be undefined when success

Now:

  • safe supports both tuple [error, data, isDefined] and object { error, data, isDefined } styles
  • error be null when success
const [error, data, isDefined] = await safe(doSomething({ id: '123' }))
// or const { error, data, isDefined } = await safe(doSomething({ id: '123' }))

if (isDefinedError(error)) { // or isDefined
 // handle known error
 console.log(error.data.retryAfter)
}
else if (error) {
 // handle unknown error
}
else {
 // handle success
 console.log(data)
}

   🚨 Breaking Changes

    View changes on GitHub

v0.42.0

26 Feb 13:59
Compare
Choose a tag to compare

There breaking changes not change any visible APIs

   🚨 Breaking Changes

    View changes on GitHub

v0.41.2

25 Feb 11:35
Compare
Choose a tag to compare

🚨 Breaking Changes 🚨

This breaking changes not effect to end-user

  • rename interceptorsRoot -> rootInterceptors
  • add clientInterceptors
  • remove beforeCreateClient in plugin
const handler = new RPCHandler(router, {
   rootInterceptors: [],
   clientInterceptors: [],
})

   🚨 Breaking Changes

   🐞 Bug Fixes

    View changes on GitHub