Skip to content

Releases: dan-cooke/remix-sse

@remix-sse/[email protected]

09 Mar 07:13
6eaccce
Compare
Choose a tag to compare

Patch Changes

  • c5eb797: Allow the callback passed to EventStream to be async

@remix-sse/[email protected]

09 Mar 07:13
6eaccce
Compare
Choose a tag to compare

Patch Changes

  • c5eb797: Allow the callback passed to EventStream to be async

@remix-sse/[email protected]

25 Feb 17:04
Compare
Choose a tag to compare

Major Changes

  • 7178870: Split up the single remix-sse package into 2 seperate packages @remix-sse/client and @remix-sse/server

    Why

    Exporting both the client and server code from a single package has never sat well with me, at the start I got by releasing a single package: remix-sse for server code and remix-sse/client for client code.

    This works fine if you are trasnpiling CommonJS imports, but at some point recently create-remix has started every project with type: "module" (ES Modules).

    So this made our import paths quite ugly:
    remix-sse/client/index.js -

    Not to mention this uglier syntax was less discoverable now by language servers.

    How to migrate

    • Find and replace import 'remix-sse/client' -> import '@remix-sse/client'
    • Find and replace import 'remix-sse' -> import '@remix-sse'
  • 08b640b: Changes the API of the EventStream send function to make the eventKey default to 'message'

    Using the library myself in a few projects, I have found that I don't usually need to send multiple events from the same emitter, and one eventKey usually suffices. This change will make it more ergonomic for single event emitters, while remaining flexible for multi event emitters

    How to migrate

    The first argument of send is now just the data string you wish to send.

    • If you want to allow multiple events from the same emitter you can specify an eventKey in the second argument
    • Otherwise you can just omit the eventKey all together
    export const loader: LoaderFunction = ({ request }) => {
      return new EventStream(request, (send) => {
        let gIndex = 0;
        let g = setInterval(() => {
          gIndex += 1;
    ---   send('message', JSON.stringify({ hello: 'world', index: gIndex }));
    +++   send(JSON.stringify({ hello: 'world', index: gIndex }));
        }, 1000);

    return async () => {
    clearInterval(g);
    };
    });

};


@remix-sse/[email protected]

25 Feb 17:04
Compare
Choose a tag to compare

Major Changes

  • 08b640b: Changes the API for useSubscribe to make an eventKey default to 'message'

    Using the library myself in a few projects, I have found that I don't usually need to send multiple events from the same emitter, and one eventKey usually suffices. This change will make it more ergonomic for single event emitters, while remaining flexible for multi event emitters

    How to migrate

    --- const data = useSubscribe('/emitter', 'event-key')
    +++ const data = useSubscribe('/emitter', { eventKey: 'event-key'})

    Or if you want use the default eventKey: 'message' you can omit it entirely

    const data = useSubscribe('/emitter')
  • 7178870: Split up the single remix-sse package into 2 seperate packages @remix-sse/client and @remix-sse/server

    Why

    Exporting both the client and server code from a single package has never sat well with me, at the start I got by releasing a single package: remix-sse for server code and remix-sse/client for client code.

    This works fine if you are trasnpiling CommonJS imports, but at some point recently create-remix has started every project with type: "module" (ES Modules).

    So this made our import paths quite ugly:
    remix-sse/client/index.js -

    Not to mention this uglier syntax was less discoverable now by language servers.

    How to migrate

    • Find and replace import 'remix-sse/client' -> import '@remix-sse/client'
    • Find and replace import 'remix-sse' -> import '@remix-sse'
  • 3159987: - useSubscribe changed to take an EventSource

    • new useEventStream hook to be superseed useSubscribe as the ergonomic way of listening to events
    • removed useEventSource
    • removed RemixSseProvider

    No more boilerplate

    I wasn't happy with the amount of boilerplate even after making several changes like making the eventKey default to 'message'

    The library should not provide the context, if users want to share their event sources across their app they are free to do so, but remix-sse should not care about this.

    So the following changes all have the intention of making the library easier to get started with.

    How to migrate

    useSubscribe now takes an EventSource

    --- const data = useSubscribe('/emitter', 'event-key')
    +++ const data = useSubscribe(new EventSource('/emitter'), { eventKey: 'event-key'})

    This was purely to make room for the next change

    useEventStream is the MVP now

    Use this hook wherever possible, it will create the EventSource for you and call useSubscribe making sure
    to not duplicate Eventsources to the same URL using a simple map.

    const data = useEventStream('/emitter')

    Removed the context and useEventStream

    No need for a context, we can just store a url -> event source map globally

v5.0.0

24 Feb 13:26
Compare
Choose a tag to compare

5.0.0 (2024-02-24)

Features

BREAKING CHANGES

  • new import path

v4.0.1

24 Feb 12:42
Compare
Choose a tag to compare

4.0.1 (2024-02-24)

Bug Fixes

v4.0.0

23 Nov 12:57
Compare
Choose a tag to compare

4.0.0 (2023-11-23)

Bug Fixes

  • remove use of v1 remix-run/node Headers class (fd0fe1e)

  • chore!: update to remix version 2 (2439fb9)

BREAKING CHANGES

  • this library no longer supports remix < 2

v3.0.1

08 Dec 13:10
Compare
Choose a tag to compare

3.0.1 (2022-12-08)

This release contains the release notes from 3.0.0 as well because semantic release swallowed them up after a force push.

BREAKING CHANGES

  • useSse removed. Users should now use useSubscribe and useEventSource individually

Features

  • Improved deserialize typing
  • useSubscribe now only takes a single event key.

Bug Fixes

  • Initial data is now null

v2.1.0

07 Dec 19:00
Compare
Choose a tag to compare

2.1.0 (2022-12-07)

Bug Fixes

  • improve returnLatestOnly type defs (7be50fd)

Features

  • add option returnLatestOnly (6e5df24)

v2.0.1

06 Dec 23:11
Compare
Choose a tag to compare

2.0.1 (2022-12-06)

Bug Fixes

  • export RemixSseProvider (d35a24d)