@transport-io/react 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/context.d.ts +5 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +4 -1
- package/dist/context.js.map +1 -1
- package/dist/create-hooks.d.ts +42 -0
- package/dist/create-hooks.d.ts.map +1 -0
- package/dist/create-hooks.js +22 -0
- package/dist/create-hooks.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/use-call.d.ts +5 -5
- package/dist/use-call.d.ts.map +1 -1
- package/dist/use-call.js.map +1 -1
- package/dist/use-stream.d.ts +5 -5
- package/dist/use-stream.d.ts.map +1 -1
- package/dist/use-stream.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,10 +10,32 @@ React and react-dom are peer dependencies and the floor is **React 19.2**, becau
|
|
|
10
10
|
is built on `useEffectEvent`. There is no other runtime dependency, and core neither depends
|
|
11
11
|
on this package nor mentions it.
|
|
12
12
|
|
|
13
|
+
## Bind the hooks to your map
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { defineContract, type MapOf, reliable } from 'transport-io'
|
|
17
|
+
import { createHooks } from '@transport-io/react'
|
|
18
|
+
|
|
19
|
+
export const contract = defineContract({ chat: reliable<{ body: string }>() })
|
|
20
|
+
export interface AppMap extends MapOf<typeof contract> {}
|
|
21
|
+
|
|
22
|
+
export const api = createHooks<AppMap>()
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then `api.useEvent('chat', …)`, or destructure it. Nothing is registered globally, so two
|
|
26
|
+
contracts in one process are two objects, and the type follows the import.
|
|
27
|
+
|
|
28
|
+
Write the `MapOf` line: passing `MapOf<typeof contract>` straight in takes `api.useEvent`'s
|
|
29
|
+
hover from 129 characters to 411, with your validator's internals in it.
|
|
30
|
+
|
|
31
|
+
The named exports below also exist and read the globally registered map instead. They work,
|
|
32
|
+
and they are the older path.
|
|
33
|
+
|
|
13
34
|
## What it gives you
|
|
14
35
|
|
|
15
36
|
| | |
|
|
16
37
|
|---|---|
|
|
38
|
+
| `createHooks<AppMap>()` | The hooks, typed for one contract. The documented default. |
|
|
17
39
|
| `<TransportProvider client>` | Holds the client and connects while mounted. Takes a client rather than making one. |
|
|
18
40
|
| `useClient()` | The client itself, for `emit` and anything else. |
|
|
19
41
|
| `useConnection()` | Status, session id, rooms, last error, and the connect and disconnect calls. |
|
package/dist/context.d.ts
CHANGED
|
@@ -9,9 +9,9 @@ import { type ReactNode } from 'react';
|
|
|
9
9
|
* than one user, so the documented pattern builds one per browser session inside a client
|
|
10
10
|
* component and the server never shares it.
|
|
11
11
|
*/
|
|
12
|
-
import type { Client } from 'transport-io';
|
|
13
|
-
export interface TransportProviderProps {
|
|
14
|
-
readonly client: Client
|
|
12
|
+
import type { AnyMap, Client, Registered } from 'transport-io';
|
|
13
|
+
export interface TransportProviderProps<M extends AnyMap = Registered> {
|
|
14
|
+
readonly client: Client<M>;
|
|
15
15
|
/**
|
|
16
16
|
* Connect while the provider is mounted. On by default: `connect` and `disconnect` are
|
|
17
17
|
* idempotent and refcounted in core, so mounting twice is safe, and every application
|
|
@@ -20,12 +20,12 @@ export interface TransportProviderProps {
|
|
|
20
20
|
readonly autoConnect?: boolean;
|
|
21
21
|
readonly children?: ReactNode;
|
|
22
22
|
}
|
|
23
|
-
export declare function TransportProvider({ client, autoConnect, children, }: TransportProviderProps): ReactNode;
|
|
23
|
+
export declare function TransportProvider<M extends AnyMap = Registered>({ client, autoConnect, children, }: TransportProviderProps<M>): ReactNode;
|
|
24
24
|
/**
|
|
25
25
|
* The client from the nearest provider.
|
|
26
26
|
*
|
|
27
27
|
* Throws a plain `Error` rather than a `TransportError`: nothing has gone wrong on the
|
|
28
28
|
* wire, and core must never gain a React-shaped error code.
|
|
29
29
|
*/
|
|
30
|
-
export declare function useClient(): Client
|
|
30
|
+
export declare function useClient(): Client<Registered>;
|
|
31
31
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAA;AAC5E;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAA;AAC5E;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAO9D,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,UAAU;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,UAAU,EAAE,EAC/D,MAAM,EACN,WAAkB,EAClB,QAAQ,GACT,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,SAAS,CAevC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,CAU9C"}
|
package/dist/context.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useContext, useEffect } from 'react';
|
|
4
|
+
// Stored loosely and narrowed on the way out. The provider is generic so it accepts a client
|
|
5
|
+
// for any map, which is what `createHooks` needs: nothing is registered, so `Client` alone
|
|
6
|
+
// would mean `Client<NoContractRegistered>` and reject every real client.
|
|
4
7
|
const ClientContext = createContext(null);
|
|
5
8
|
export function TransportProvider({ client, autoConnect = true, children, }) {
|
|
6
9
|
useEffect(() => {
|
|
@@ -14,7 +17,7 @@ export function TransportProvider({ client, autoConnect = true, children, }) {
|
|
|
14
17
|
client.disconnect();
|
|
15
18
|
};
|
|
16
19
|
}, [client, autoConnect]);
|
|
17
|
-
return _jsx(ClientContext.Provider, { value: client, children: children });
|
|
20
|
+
return (_jsx(ClientContext.Provider, { value: client, children: children }));
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* The client from the nearest provider.
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAa5E,MAAM,aAAa,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAa5E,6FAA6F;AAC7F,2FAA2F;AAC3F,0EAA0E;AAC1E,MAAM,aAAa,GAAG,aAAa,CAAwB,IAAI,CAAC,CAAA;AAahE,MAAM,UAAU,iBAAiB,CAAgC,EAC/D,MAAM,EACN,WAAW,GAAG,IAAI,EAClB,QAAQ,GACkB;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,kFAAkF;QAClF,sFAAsF;QACtF,+CAA+C;QAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC5C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,UAAU,EAAE,CAAA;QACrB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAEzB,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAwB,YAAG,QAAQ,GAA0B,CAC7F,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IACxC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,uFAAuF;YACrF,qFAAqF;YACrF,8BAA8B,CACjC,CAAA;IACH,CAAC;IACD,OAAO,MAA4B,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks bound to one contract, without registering it globally.
|
|
3
|
+
*
|
|
4
|
+
* Everywhere else in this library the map is passed explicitly - `new Client<AppMap>(…)` -
|
|
5
|
+
* because the type then follows the import rather than the load order, and two contracts in
|
|
6
|
+
* one process are simply two types. The hooks could not do that: they read the globally
|
|
7
|
+
* registered map, so the React binding was the only path that required
|
|
8
|
+
* `declare module 'transport-io'`.
|
|
9
|
+
*
|
|
10
|
+
* This closes that. `createHooks<AppMap>()` hands back the same hooks typed for one map, and
|
|
11
|
+
* is the same shape tRPC uses for the same reason.
|
|
12
|
+
*
|
|
13
|
+
* Measured, because the interface line is what makes it work: `api.useEvent` hovers at 129
|
|
14
|
+
* characters against 123 for the registered form, and 116 when destructured. Handing
|
|
15
|
+
* `MapOf<typeof contract>` in directly instead of a named interface takes it to 411, which is
|
|
16
|
+
* the alias expansion this project has now measured three times.
|
|
17
|
+
*/
|
|
18
|
+
import type { AnyMap, CallableOf, Client, StreamableOf } from 'transport-io';
|
|
19
|
+
import { type UseCallOptions, type UseCallResult } from './use-call.ts';
|
|
20
|
+
import { type Connection } from './use-connection.ts';
|
|
21
|
+
import { type UseStreamOptions, type UseStreamResult } from './use-stream.ts';
|
|
22
|
+
export interface Hooks<M extends AnyMap> {
|
|
23
|
+
useClient(): Client<M>;
|
|
24
|
+
useConnection(): Connection;
|
|
25
|
+
useEvent<K extends keyof M & string>(event: K, handler: (payload: M[K]['payload']) => void): void;
|
|
26
|
+
useCall<K extends CallableOf<M> & string>(event: K, options?: UseCallOptions): UseCallResult<M, K>;
|
|
27
|
+
useStream<K extends StreamableOf<M> & string>(event: K, options?: UseStreamOptions<M[K]['yields']>): UseStreamResult<M, K>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The hooks, typed for one contract.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* export const api = createHooks<AppMap>()
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* The cast is the whole implementation and it is honest: `M` exists only in the types. Every
|
|
37
|
+
* hook below is the same function the named exports are, and none of them reads the map at
|
|
38
|
+
* runtime - the client does, from the contract it was constructed with. What the type
|
|
39
|
+
* parameter changes is which event names and payloads the compiler accepts.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createHooks<M extends AnyMap>(): Hooks<M>;
|
|
42
|
+
//# sourceMappingURL=create-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-hooks.d.ts","sourceRoot":"","sources":["../src/create-hooks.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE5E,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAW,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,qBAAqB,CAAA;AAEpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAa,MAAM,iBAAiB,CAAA;AAExF,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM;IACrC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IACtB,aAAa,IAAI,UAAU,CAAA;IAC3B,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,GAC1C,IAAI,CAAA;IACP,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,EACtC,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtB,SAAS,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,EAC1C,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GACzC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAExD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useClient } from './context.js';
|
|
3
|
+
import { useCall } from './use-call.js';
|
|
4
|
+
import { useConnection } from './use-connection.js';
|
|
5
|
+
import { useEvent } from './use-event.js';
|
|
6
|
+
import { useStream } from './use-stream.js';
|
|
7
|
+
/**
|
|
8
|
+
* The hooks, typed for one contract.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* export const api = createHooks<AppMap>()
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* The cast is the whole implementation and it is honest: `M` exists only in the types. Every
|
|
15
|
+
* hook below is the same function the named exports are, and none of them reads the map at
|
|
16
|
+
* runtime - the client does, from the contract it was constructed with. What the type
|
|
17
|
+
* parameter changes is which event names and payloads the compiler accepts.
|
|
18
|
+
*/
|
|
19
|
+
export function createHooks() {
|
|
20
|
+
return { useClient, useConnection, useEvent, useCall, useStream };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=create-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-hooks.js","sourceRoot":"","sources":["../src/create-hooks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAmBZ,OAAO,EAAE,SAAS,EAAE,MAAM,cAAe,CAAA;AACzC,OAAO,EAA2C,OAAO,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAmB,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAA+C,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAmBxF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAyB,CAAA;AAC1F,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* on a server is safe.
|
|
7
7
|
*/
|
|
8
8
|
export { TransportProvider, type TransportProviderProps, useClient } from './context.tsx';
|
|
9
|
+
export { createHooks, type Hooks } from './create-hooks.ts';
|
|
9
10
|
export { type CallState, type UseCallOptions, type UseCallResult, useCall } from './use-call.ts';
|
|
10
11
|
export { type Connection, useConnection } from './use-connection.ts';
|
|
11
12
|
export { useEvent } from './use-event.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* on a server is safe.
|
|
7
7
|
*/
|
|
8
8
|
export { TransportProvider, useClient } from './context.js';
|
|
9
|
+
export { createHooks } from './create-hooks.js';
|
|
9
10
|
export { useCall } from './use-call.js';
|
|
10
11
|
export { useConnection } from './use-connection.js';
|
|
11
12
|
export { useEvent } from './use-event.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAA+B,SAAS,EAAE,MAAM,cAAe,CAAA;AACzF,OAAO,EAA2D,OAAO,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAmB,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAIL,SAAS,GACV,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,iBAAiB,EAA+B,SAAS,EAAE,MAAM,cAAe,CAAA;AACzF,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAA2D,OAAO,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAmB,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAIL,SAAS,GACV,MAAM,iBAAiB,CAAA"}
|
package/dist/use-call.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CallableOf, type Registered, TransportError } from 'transport-io';
|
|
1
|
+
import { type AnyMap, type CallableOf, type Registered, TransportError } from 'transport-io';
|
|
2
2
|
/**
|
|
3
3
|
* A union rather than independent flags.
|
|
4
4
|
*
|
|
@@ -28,10 +28,10 @@ export interface UseCallOptions {
|
|
|
28
28
|
*/
|
|
29
29
|
readonly abortOnUnmount?: boolean;
|
|
30
30
|
}
|
|
31
|
-
export type UseCallResult<K extends CallableOf<
|
|
32
|
-
(payload:
|
|
33
|
-
CallState<
|
|
31
|
+
export type UseCallResult<M extends AnyMap, K extends CallableOf<M> & string> = readonly [
|
|
32
|
+
(payload: M[K]['payload']) => Promise<void>,
|
|
33
|
+
CallState<M[K]['returns']>
|
|
34
34
|
];
|
|
35
35
|
/** Request and response, with the state a component actually renders. */
|
|
36
|
-
export declare function useCall<K extends CallableOf<Registered> & string>(event: K, options?: UseCallOptions): UseCallResult<K>;
|
|
36
|
+
export declare function useCall<K extends CallableOf<Registered> & string>(event: K, options?: UseCallOptions): UseCallResult<Registered, K>;
|
|
37
37
|
//# sourceMappingURL=use-call.d.ts.map
|
package/dist/use-call.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-call.d.ts","sourceRoot":"","sources":["../src/use-call.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"use-call.d.ts","sourceRoot":"","sources":["../src/use-call.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG5F;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAA;AAEpD,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS;IACvF,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAC3C,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CAC3B,CAAA;AAWD,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,EAC/D,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CA0C9B"}
|
package/dist/use-call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-call.js","sourceRoot":"","sources":["../src/use-call.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"use-call.js","sourceRoot":"","sources":["../src/use-call.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACzE,OAAO,EAAiD,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,cAAe,CAAA;AAgCzC,SAAS,gBAAgB,CAAC,CAAU;IAClC,IAAI,CAAC,YAAY,cAAc;QAAE,OAAO,CAAC,CAAA;IACzC,OAAO,IAAI,cAAc,CACvB,kBAAkB,EAClB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,iEAAiE,CAClE,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,OAAO,CACrB,KAAQ,EACR,OAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3F,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAA;IAEtD,MAAM,QAAQ,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,GAAG,KAAK,CAAA;YACvB,IAAI,cAAc;gBAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC/C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IAEpB,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EAAE,OAAiC,EAAiB,EAAE;QACzD,mFAAmF;QACnF,wEAAwE;QACxE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QACzB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAA;QAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;YAC7E,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACvD,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kFAAkF;YAClF,mEAAmE;YACnE,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YACrC,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACvD,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,KAAK,CAAC,CAChB,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AACjE,CAAC"}
|
package/dist/use-stream.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Registered, type StreamableOf, TransportError } from 'transport-io';
|
|
1
|
+
import { type AnyMap, type Registered, type StreamableOf, TransportError } from 'transport-io';
|
|
2
2
|
/** `elements` is present in every state after the first, so a render never loses what arrived. */
|
|
3
3
|
export type StreamState<T> = {
|
|
4
4
|
readonly status: 'idle';
|
|
@@ -20,9 +20,9 @@ export interface UseStreamOptions<T> {
|
|
|
20
20
|
*/
|
|
21
21
|
readonly onElement?: (element: T) => void;
|
|
22
22
|
}
|
|
23
|
-
export type UseStreamResult<K extends StreamableOf<
|
|
24
|
-
(payload:
|
|
25
|
-
StreamState<
|
|
23
|
+
export type UseStreamResult<M extends AnyMap, K extends StreamableOf<M> & string> = readonly [
|
|
24
|
+
(payload: M[K]['payload']) => void,
|
|
25
|
+
StreamState<M[K]['yields']>,
|
|
26
26
|
() => void
|
|
27
27
|
];
|
|
28
28
|
/**
|
|
@@ -32,5 +32,5 @@ export type UseStreamResult<K extends StreamableOf<Registered> & string> = reado
|
|
|
32
32
|
* and runs any `finally` in its generator, so a component going away does not leave a
|
|
33
33
|
* generator producing into nothing.
|
|
34
34
|
*/
|
|
35
|
-
export declare function useStream<K extends StreamableOf<Registered> & string>(event: K, options?: UseStreamOptions<Registered[K]['yields']>): UseStreamResult<K>;
|
|
35
|
+
export declare function useStream<K extends StreamableOf<Registered> & string>(event: K, options?: UseStreamOptions<Registered[K]['yields']>): UseStreamResult<Registered, K>;
|
|
36
36
|
//# sourceMappingURL=use-stream.d.ts.map
|
package/dist/use-stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-stream.d.ts","sourceRoot":"","sources":["../src/use-stream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"use-stream.d.ts","sourceRoot":"","sources":["../src/use-stream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG9F,kGAAkG;AAClG,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,GAC5D;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAC/B,CAAA;AAEL,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;CAC1C;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS;IAC3F,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI;IAClC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,IAAI;CACX,CAAA;AAWD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC,GAAG,MAAM,EACnE,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAClD,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAiEhC"}
|
package/dist/use-stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-stream.js","sourceRoot":"","sources":["../src/use-stream.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"use-stream.js","sourceRoot":"","sources":["../src/use-stream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED