jotai-orpc 0.1.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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/atomWithORPCMutation.d.ts +13 -0
  4. package/dist/atomWithORPCMutation.d.ts.map +1 -0
  5. package/dist/atomWithORPCMutation.js +19 -0
  6. package/dist/atomWithORPCMutation.js.map +1 -0
  7. package/dist/atomWithORPCQuery.d.ts +15 -0
  8. package/dist/atomWithORPCQuery.d.ts.map +1 -0
  9. package/dist/atomWithORPCQuery.js +27 -0
  10. package/dist/atomWithORPCQuery.js.map +1 -0
  11. package/dist/atomWithORPCSubscription.d.ts +12 -0
  12. package/dist/atomWithORPCSubscription.d.ts.map +1 -0
  13. package/dist/atomWithORPCSubscription.js +65 -0
  14. package/dist/atomWithORPCSubscription.js.map +1 -0
  15. package/dist/createORPCJotai.d.ts +58 -0
  16. package/dist/createORPCJotai.d.ts.map +1 -0
  17. package/dist/createORPCJotai.js +53 -0
  18. package/dist/createORPCJotai.js.map +1 -0
  19. package/dist/disabled.d.ts +3 -0
  20. package/dist/disabled.d.ts.map +1 -0
  21. package/dist/disabled.js +3 -0
  22. package/dist/disabled.js.map +1 -0
  23. package/dist/index.d.ts +8 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +7 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/internal.d.ts +6 -0
  28. package/dist/internal.d.ts.map +1 -0
  29. package/dist/internal.js +19 -0
  30. package/dist/internal.js.map +1 -0
  31. package/dist/operations.d.ts +27 -0
  32. package/dist/operations.d.ts.map +1 -0
  33. package/dist/operations.js +24 -0
  34. package/dist/operations.js.map +1 -0
  35. package/dist/types.d.ts +32 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +2 -0
  38. package/dist/types.js.map +1 -0
  39. package/package.json +67 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 jotai-orpc contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # jotai-orpc
2
+
3
+ Minimal, type-safe Jotai bindings for an oRPC client.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install jotai-orpc jotai @orpc/client
9
+ ```
@@ -0,0 +1,13 @@
1
+ import type { Getter, WritableAtom } from 'jotai/vanilla';
2
+ import type { ORPCMutationArgs, ORPCProcedure, ProcedureOutput } from './types.js';
3
+ export type ORPCMutationAtom<TProcedure extends ORPCProcedure> = WritableAtom<ProcedureOutput<TProcedure> | null, [
4
+ args: ORPCMutationArgs<TProcedure>
5
+ ], Promise<ProcedureOutput<TProcedure>>>;
6
+ export declare function atomWithORPCMutationInternal<TProcedure extends ORPCProcedure>(procedure: TProcedure, getProcedure?: (get: Getter) => TProcedure): ORPCMutationAtom<TProcedure>;
7
+ /**
8
+ * Creates an atom that invokes an oRPC client procedure and stores its latest
9
+ * successful result. The promise returned by store.set/useSetAtom resolves to
10
+ * the same result.
11
+ */
12
+ export declare function atomWithORPCMutation<TProcedure extends ORPCProcedure>(procedure: TProcedure): ORPCMutationAtom<TProcedure>;
13
+ //# sourceMappingURL=atomWithORPCMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCMutation.d.ts","sourceRoot":"","sources":["../src/atomWithORPCMutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,aAAa,IAAI,YAAY,CAC3E,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,EAClC;IAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,CAAC;CAAC,EACpC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CACrC,CAAA;AAED,wBAAgB,4BAA4B,CAAC,UAAU,SAAS,aAAa,EAC3E,SAAS,EAAE,UAAU,EACrB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GACzC,gBAAgB,CAAC,UAAU,CAAC,CAc9B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,SAAS,aAAa,EACnE,SAAS,EAAE,UAAU,GACpB,gBAAgB,CAAC,UAAU,CAAC,CAE9B"}
@@ -0,0 +1,19 @@
1
+ import { atom } from 'jotai/vanilla';
2
+ export function atomWithORPCMutationInternal(procedure, getProcedure) {
3
+ const mutationAtom = atom(null, async (get, set, args) => {
4
+ const resolvedProcedure = getProcedure?.(get) ?? procedure;
5
+ const result = await resolvedProcedure(...args);
6
+ set(mutationAtom, result);
7
+ return result;
8
+ });
9
+ return mutationAtom;
10
+ }
11
+ /**
12
+ * Creates an atom that invokes an oRPC client procedure and stores its latest
13
+ * successful result. The promise returned by store.set/useSetAtom resolves to
14
+ * the same result.
15
+ */
16
+ export function atomWithORPCMutation(procedure) {
17
+ return atomWithORPCMutationInternal(procedure);
18
+ }
19
+ //# sourceMappingURL=atomWithORPCMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCMutation.js","sourceRoot":"","sources":["../src/atomWithORPCMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAepC,MAAM,UAAU,4BAA4B,CAC1C,SAAqB,EACrB,YAA0C;IAE1C,MAAM,YAAY,GAAiC,IAAI,CAIrD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,CAAA;QAC1D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAA;QAE/C,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAqB;IAErB,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Getter, WritableAtom } from 'jotai/vanilla';
2
+ import type { AtomWithORPCQueryOptions, AtomWithORPCQueryOptionsWithDisabledOutput, ORPCProcedure, ORPCQueryInput, ORPCQueryOptionsArgs, ORPCSkippableQueryInput, ProcedureOutput } from './types.js';
3
+ export type ORPCQueryAtom<TProcedure extends ORPCProcedure, TDisabledOutput = never> = WritableAtom<Promise<ProcedureOutput<TProcedure> | TDisabledOutput>, [
4
+ ], void>;
5
+ export declare function atomWithORPCQueryInternal<TProcedure extends ORPCProcedure, TDisabledOutput>(procedure: TProcedure, getInput: ORPCSkippableQueryInput<TProcedure>, options: AtomWithORPCQueryOptions<TProcedure> | AtomWithORPCQueryOptionsWithDisabledOutput<TProcedure, TDisabledOutput> | undefined, getProcedure?: (get: Getter) => TProcedure): ORPCQueryAtom<TProcedure, TDisabledOutput>;
6
+ /**
7
+ * Creates a refreshable async atom backed by an oRPC client procedure.
8
+ *
9
+ * The input factory may read other atoms. When one of those atoms changes,
10
+ * Jotai automatically calls the procedure again with the new input.
11
+ */
12
+ export declare function atomWithORPCQuery<TProcedure extends ORPCProcedure>(procedure: TProcedure, getInput: ORPCQueryInput<TProcedure>, ...optionsArgs: ORPCQueryOptionsArgs<TProcedure>): ORPCQueryAtom<TProcedure>;
13
+ export declare function atomWithORPCQuery<TProcedure extends ORPCProcedure>(procedure: TProcedure, getInput: ORPCSkippableQueryInput<TProcedure>, ...optionsArgs: ORPCQueryOptionsArgs<TProcedure>): ORPCQueryAtom<TProcedure, undefined>;
14
+ export declare function atomWithORPCQuery<TProcedure extends ORPCProcedure, TDisabledOutput>(procedure: TProcedure, getInput: ORPCSkippableQueryInput<TProcedure>, options: AtomWithORPCQueryOptionsWithDisabledOutput<TProcedure, TDisabledOutput>): ORPCQueryAtom<TProcedure, TDisabledOutput>;
15
+ //# sourceMappingURL=atomWithORPCQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCQuery.d.ts","sourceRoot":"","sources":["../src/atomWithORPCQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EACV,wBAAwB,EACxB,0CAA0C,EAC1C,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EAGvB,eAAe,EAChB,MAAM,YAAY,CAAA;AAQnB,MAAM,MAAM,aAAa,CACvB,UAAU,SAAS,aAAa,EAChC,eAAe,GAAG,KAAK,IACrB,YAAY,CACd,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,EACtD;CAAE,EACF,IAAI,CACL,CAAA;AAED,wBAAgB,yBAAyB,CACvC,UAAU,SAAS,aAAa,EAChC,eAAe,EAEf,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAC7C,OAAO,EACH,wBAAwB,CAAC,UAAU,CAAC,GACpC,0CAA0C,CAAC,UAAU,EAAE,eAAe,CAAC,GACvE,SAAS,EACb,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GACzC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAqC5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,SAAS,aAAa,EAChE,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,GAAG,WAAW,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAC/C,aAAa,CAAC,UAAU,CAAC,CAAA;AAC5B,wBAAgB,iBAAiB,CAAC,UAAU,SAAS,aAAa,EAChE,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAC7C,GAAG,WAAW,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAC/C,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACvC,wBAAgB,iBAAiB,CAC/B,UAAU,SAAS,aAAa,EAChC,eAAe,EAEf,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAC7C,OAAO,EAAE,0CAA0C,CACjD,UAAU,EACV,eAAe,CAChB,GACA,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { atom } from 'jotai/vanilla';
2
+ import { resolveAsyncValueOrGetter, resolveValueOrGetter, withAbortSignal, } from './internal.js';
3
+ import { DISABLED } from './disabled.js';
4
+ export function atomWithORPCQueryInternal(procedure, getInput, options, getProcedure) {
5
+ const refreshAtom = atom(0);
6
+ const resultAtom = atom(async (get, { signal }) => {
7
+ get(refreshAtom);
8
+ const resolvedProcedure = getProcedure?.(get) ?? procedure;
9
+ const input = await resolveAsyncValueOrGetter(getInput, get);
10
+ const resolvedOptions = options
11
+ ? resolveValueOrGetter(options, get)
12
+ : undefined;
13
+ if (input === DISABLED) {
14
+ return resolvedOptions?.disabledOutput;
15
+ }
16
+ const { disabledOutput: _disabledOutput, ...clientOptions } = (resolvedOptions ?? {});
17
+ return await resolvedProcedure(input, withAbortSignal(clientOptions, signal));
18
+ });
19
+ return atom((get) => get(resultAtom), (_get, set) => {
20
+ set(refreshAtom, (value) => value + 1);
21
+ });
22
+ }
23
+ export function atomWithORPCQuery(procedure, getInput, ...optionsArgs) {
24
+ const options = optionsArgs[0];
25
+ return atomWithORPCQueryInternal(procedure, getInput, options);
26
+ }
27
+ //# sourceMappingURL=atomWithORPCQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCQuery.js","sourceRoot":"","sources":["../src/atomWithORPCQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAcpC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAWxC,MAAM,UAAU,yBAAyB,CAIvC,SAAqB,EACrB,QAA6C,EAC7C,OAGa,EACb,YAA0C;IAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAE3B,MAAM,UAAU,GAAG,IAAI,CAErB,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,GAAG,CAAC,WAAW,CAAC,CAAA;QAEhB,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,CAAA;QAC1D,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAC5D,MAAM,eAAe,GAAG,OAAO;YAC7B,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC;YACpC,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,OACE,eACD,EAAE,cAAiC,CAAA;QACtC,CAAC;QAED,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,GACzD,CAAC,eAAe,IAAI,EAAE,CAA4B,CAAA;QACpD,OAAO,MAAM,iBAAiB,CAC5B,KAAmC,EACnC,eAAe,CACb,aAAmD,EACnD,MAAM,CACP,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CACT,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EACxB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACZ,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACxC,CAAC,CACF,CAAA;AACH,CAAC;AA6BD,MAAM,UAAU,iBAAiB,CAC/B,SAAqB,EACrB,QAA6C,EAC7C,GAAG,WAIF;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAEhB,CAAA;IACb,OAAO,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAChE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Atom, Getter } from 'jotai/vanilla';
2
+ import type { AtomWithORPCSubscriptionOptions, ORPCEventIteratorProcedure, ORPCSubscriptionInput, ORPCSubscriptionOptionsArgs, ProcedureEvent } from './types.js';
3
+ export type ORPCSubscriptionAtom<TProcedure extends ORPCEventIteratorProcedure> = Atom<ProcedureEvent<TProcedure> | Promise<ProcedureEvent<TProcedure>>>;
4
+ export declare function atomWithORPCSubscriptionInternal<TProcedure extends ORPCEventIteratorProcedure>(procedure: TProcedure, getInput: ORPCSubscriptionInput<TProcedure>, options: AtomWithORPCSubscriptionOptions<TProcedure> | undefined, getProcedure?: (get: Getter) => TProcedure): ORPCSubscriptionAtom<TProcedure>;
5
+ /**
6
+ * Creates an atom that contains the latest event from an oRPC Event Iterator.
7
+ *
8
+ * The iterator is canceled when the atom is unmounted or when an atom read by
9
+ * the input/options factories changes.
10
+ */
11
+ export declare function atomWithORPCSubscription<TProcedure extends ORPCEventIteratorProcedure>(procedure: TProcedure, getInput: ORPCSubscriptionInput<TProcedure>, ...optionsArgs: ORPCSubscriptionOptionsArgs<TProcedure>): ORPCSubscriptionAtom<TProcedure>;
12
+ //# sourceMappingURL=atomWithORPCSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCSubscription.d.ts","sourceRoot":"","sources":["../src/atomWithORPCSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,EACV,+BAA+B,EAC/B,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EAEf,MAAM,YAAY,CAAA;AAYnB,MAAM,MAAM,oBAAoB,CAC9B,UAAU,SAAS,0BAA0B,IAC3C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAE1E,wBAAgB,gCAAgC,CAC9C,UAAU,SAAS,0BAA0B,EAE7C,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAC3C,OAAO,EAAE,+BAA+B,CAAC,UAAU,CAAC,GAAG,SAAS,EAChE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GACzC,oBAAoB,CAAC,UAAU,CAAC,CAiElC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,SAAS,0BAA0B,EAE7C,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAC3C,GAAG,WAAW,EAAE,2BAA2B,CAAC,UAAU,CAAC,GACtD,oBAAoB,CAAC,UAAU,CAAC,CAKlC"}
@@ -0,0 +1,65 @@
1
+ import { atomWithObservable } from 'jotai/vanilla/utils';
2
+ import { resolveValueOrGetter, withAbortSignal } from './internal.js';
3
+ export function atomWithORPCSubscriptionInternal(procedure, getInput, options, getProcedure) {
4
+ return atomWithObservable((get) => {
5
+ let controller = new AbortController();
6
+ const input = resolveValueOrGetter(getInput, get);
7
+ const clientOptions = options
8
+ ? resolveValueOrGetter(options, get)
9
+ : undefined;
10
+ const resolvedProcedure = getProcedure?.(get) ?? procedure;
11
+ return {
12
+ subscribe(observer) {
13
+ if (controller.signal.aborted) {
14
+ controller = new AbortController();
15
+ }
16
+ let active = true;
17
+ let eventIterator;
18
+ const iteratorPromise = Promise.resolve().then(() => resolvedProcedure(input, withAbortSignal(clientOptions, controller.signal)));
19
+ const consume = async () => {
20
+ try {
21
+ eventIterator = await iteratorPromise;
22
+ for (;;) {
23
+ if (!active) {
24
+ break;
25
+ }
26
+ const result = await eventIterator.next();
27
+ if (!active) {
28
+ break;
29
+ }
30
+ if (result.done) {
31
+ observer.complete();
32
+ return;
33
+ }
34
+ observer.next(result.value);
35
+ }
36
+ }
37
+ catch (error) {
38
+ if (active && !controller.signal.aborted) {
39
+ observer.error(error);
40
+ }
41
+ }
42
+ };
43
+ void consume();
44
+ return {
45
+ unsubscribe: () => {
46
+ active = false;
47
+ controller.abort();
48
+ void Promise.resolve(eventIterator?.return?.()).catch(() => { });
49
+ },
50
+ };
51
+ },
52
+ };
53
+ });
54
+ }
55
+ /**
56
+ * Creates an atom that contains the latest event from an oRPC Event Iterator.
57
+ *
58
+ * The iterator is canceled when the atom is unmounted or when an atom read by
59
+ * the input/options factories changes.
60
+ */
61
+ export function atomWithORPCSubscription(procedure, getInput, ...optionsArgs) {
62
+ const options = optionsArgs[0];
63
+ return atomWithORPCSubscriptionInternal(procedure, getInput, options);
64
+ }
65
+ //# sourceMappingURL=atomWithORPCSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomWithORPCSubscription.js","sourceRoot":"","sources":["../src/atomWithORPCSubscription.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAwBrE,MAAM,UAAU,gCAAgC,CAG9C,SAAqB,EACrB,QAA2C,EAC3C,OAAgE,EAChE,YAA0C;IAE1C,OAAO,kBAAkB,CAA6B,CAAC,GAAW,EAAE,EAAE;QACpE,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACtC,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QACjD,MAAM,aAAa,GAAG,OAAO;YAC3B,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC;YACpC,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,CAAA;QAE1D,OAAO;YACL,SAAS,CAAC,QAA8C;gBACtD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;gBACpC,CAAC;gBAED,IAAI,MAAM,GAAG,IAAI,CAAA;gBACjB,IAAI,aAAoE,CAAA;gBACxE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAClD,iBAAiB,CACf,KAAmC,EACnC,eAAe,CAAa,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAC9D,CACF,CAAA;gBAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;oBACzB,IAAI,CAAC;wBACH,aAAa,GAAG,MAAM,eAAe,CAAA;wBAErC,SAAS,CAAC;4BACR,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,MAAK;4BACP,CAAC;4BAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;4BAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,MAAK;4BACP,CAAC;4BAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gCAChB,QAAQ,CAAC,QAAQ,EAAE,CAAA;gCACnB,OAAM;4BACR,CAAC;4BAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wBAC7B,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACzC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC,CAAA;gBAED,KAAK,OAAO,EAAE,CAAA;gBAEd,OAAO;oBACL,WAAW,EAAE,GAAG,EAAE;wBAChB,MAAM,GAAG,KAAK,CAAA;wBACd,UAAU,CAAC,KAAK,EAAE,CAAA;wBAClB,KAAK,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;oBACjE,CAAC;iBACF,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAGtC,SAAqB,EACrB,QAA2C,EAC3C,GAAG,WAAoD;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAEhB,CAAA;IACb,OAAO,gCAAgC,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AACvE,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { Getter } from 'jotai/vanilla';
2
+ import { type ORPCMutationAtom } from './atomWithORPCMutation.js';
3
+ import { type ORPCQueryAtom } from './atomWithORPCQuery.js';
4
+ import { type ORPCSubscriptionAtom } from './atomWithORPCSubscription.js';
5
+ import { type ORPCClientFromTaggedRouter, type ORPCMutationDescriptor, type ORPCQueryDescriptor, type ORPCSubscriptionDescriptor, type ORPCTaggedRouter } from './operations.js';
6
+ import type { AtomWithORPCQueryOptions, AtomWithORPCQueryOptionsWithDisabledOutput, AtomWithORPCSubscriptionOptions, ORPCEventIteratorProcedure, ORPCProcedure, ORPCQueryInput, ORPCSkippableQueryInput, ORPCSubscriptionInput, ProcedureClientOptions } from './types.js';
7
+ export type ORPCClientGetter<TClient> = (get: Getter) => TClient;
8
+ export type ORPCClientRouter = {
9
+ readonly [key: string]: ORPCProcedure | ORPCClientRouter;
10
+ };
11
+ type ORPCQueryResolverOptionsArgs<TProcedure extends ORPCProcedure, TClient> = undefined extends ProcedureClientOptions<TProcedure> ? [
12
+ options?: AtomWithORPCQueryOptions<TProcedure>,
13
+ getClient?: ORPCClientGetter<TClient>
14
+ ] : [
15
+ options: AtomWithORPCQueryOptions<TProcedure>,
16
+ getClient?: ORPCClientGetter<TClient>
17
+ ];
18
+ export type ORPCQueryResolver<TProcedure extends ORPCProcedure, TClient = unknown> = {
19
+ (input: ORPCQueryInput<TProcedure>, ...args: ORPCQueryResolverOptionsArgs<TProcedure, TClient>): ORPCQueryAtom<TProcedure>;
20
+ (input: ORPCSkippableQueryInput<TProcedure>, ...args: ORPCQueryResolverOptionsArgs<TProcedure, TClient>): ORPCQueryAtom<TProcedure, undefined>;
21
+ <TDisabledOutput>(input: ORPCSkippableQueryInput<TProcedure>, options: AtomWithORPCQueryOptionsWithDisabledOutput<TProcedure, TDisabledOutput>, getClient?: ORPCClientGetter<TClient>): ORPCQueryAtom<TProcedure, TDisabledOutput>;
22
+ };
23
+ export type ORPCMutationResolver<TProcedure extends ORPCProcedure, TClient = unknown> = (getClient?: ORPCClientGetter<TClient>) => ORPCMutationAtom<TProcedure>;
24
+ type ORPCSubscriptionResolverOptionsArgs<TProcedure extends ORPCEventIteratorProcedure, TClient = unknown> = undefined extends ProcedureClientOptions<TProcedure> ? [
25
+ options?: AtomWithORPCSubscriptionOptions<TProcedure>,
26
+ getClient?: ORPCClientGetter<TClient>
27
+ ] : [
28
+ options: AtomWithORPCSubscriptionOptions<TProcedure>,
29
+ getClient?: ORPCClientGetter<TClient>
30
+ ];
31
+ export type ORPCSubscriptionResolver<TProcedure extends ORPCEventIteratorProcedure, TClient> = (input: ORPCSubscriptionInput<TProcedure>, ...args: ORPCSubscriptionResolverOptionsArgs<TProcedure, TClient>) => ORPCSubscriptionAtom<TProcedure>;
32
+ export type ORPCJotaiTaggedClient<TRouter, TClient = ORPCClientFromTaggedRouter<TRouter>> = {
33
+ [TKey in keyof TRouter]: TRouter[TKey] extends ORPCQueryDescriptor<infer TProcedure> ? {
34
+ atomWithQuery: ORPCQueryResolver<TProcedure, TClient>;
35
+ } : TRouter[TKey] extends ORPCMutationDescriptor<infer TProcedure> ? {
36
+ atomWithMutation: ORPCMutationResolver<TProcedure, TClient>;
37
+ } : TRouter[TKey] extends ORPCSubscriptionDescriptor<infer TProcedure> ? {
38
+ atomWithSubscription: ORPCSubscriptionResolver<TProcedure, TClient>;
39
+ } : TRouter[TKey] extends object ? ORPCJotaiTaggedClient<TRouter[TKey], TClient> : never;
40
+ };
41
+ export type ORPCJotaiClient<TRouter, TClient = TRouter> = {
42
+ [TKey in keyof TRouter]: TRouter[TKey] extends ORPCEventIteratorProcedure ? {
43
+ atomWithSubscription: ORPCSubscriptionResolver<TRouter[TKey], TClient>;
44
+ } : TRouter[TKey] extends ORPCProcedure ? {
45
+ atomWithQuery: ORPCQueryResolver<TRouter[TKey], TClient>;
46
+ atomWithMutation: ORPCMutationResolver<TRouter[TKey], TClient>;
47
+ } : TRouter[TKey] extends object ? ORPCJotaiClient<TRouter[TKey], TClient> : never;
48
+ };
49
+ /** Creates a strict router-shaped API from explicitly tagged procedures. */
50
+ export declare function createORPCJotai<TRouter extends ORPCTaggedRouter>(taggedRouter: TRouter): ORPCJotaiTaggedClient<TRouter, ORPCClientFromTaggedRouter<TRouter>>;
51
+ /**
52
+ * Creates a router-shaped API directly from an oRPC client. Regular
53
+ * procedures expose Query and Mutation factories; Event Iterator procedures
54
+ * expose the Subscription factory.
55
+ */
56
+ export declare function createORPCJotai<TClient extends ORPCClientRouter>(client: TClient): ORPCJotaiClient<TClient>;
57
+ export {};
58
+ //# sourceMappingURL=createORPCJotai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createORPCJotai.d.ts","sourceRoot":"","sources":["../src/createORPCJotai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { atomWithORPCMutationInternal, } from './atomWithORPCMutation.js';
2
+ import { atomWithORPCQueryInternal, } from './atomWithORPCQuery.js';
3
+ import { atomWithORPCSubscriptionInternal, } from './atomWithORPCSubscription.js';
4
+ import { isORPCOperationDescriptor, } from './operations.js';
5
+ function getValueAtPath(value, path) {
6
+ let current = value;
7
+ for (const key of path) {
8
+ current = current[key];
9
+ }
10
+ return current;
11
+ }
12
+ export function createORPCJotai(routerOrClient) {
13
+ const createProxy = (target, path) => {
14
+ const descriptor = isORPCOperationDescriptor(target) ? target : undefined;
15
+ const directProcedure = typeof target === 'function' ? target : undefined;
16
+ const procedure = descriptor?.procedure ?? directProcedure;
17
+ const getDynamicProcedure = (getClient) => getClient
18
+ ? (get) => getValueAtPath(getClient(get), path)
19
+ : undefined;
20
+ return new Proxy({}, {
21
+ get(_target, property) {
22
+ if (property === 'atomWithQuery') {
23
+ if (!procedure || (descriptor && descriptor.kind !== 'query')) {
24
+ return undefined;
25
+ }
26
+ return (input, options, getClient) => atomWithORPCQueryInternal(procedure, input, options, getDynamicProcedure(getClient));
27
+ }
28
+ if (property === 'atomWithMutation') {
29
+ if (!procedure || (descriptor && descriptor.kind !== 'mutation')) {
30
+ return undefined;
31
+ }
32
+ return (getClient) => atomWithORPCMutationInternal(procedure, getDynamicProcedure(getClient));
33
+ }
34
+ if (property === 'atomWithSubscription') {
35
+ if (!procedure ||
36
+ (descriptor && descriptor.kind !== 'subscription')) {
37
+ return undefined;
38
+ }
39
+ return (input, options, getClient) => atomWithORPCSubscriptionInternal(procedure, input, options, getDynamicProcedure(getClient));
40
+ }
41
+ if (typeof property !== 'string' || descriptor || directProcedure) {
42
+ return undefined;
43
+ }
44
+ return createProxy(target[property], [
45
+ ...path,
46
+ property,
47
+ ]);
48
+ },
49
+ });
50
+ };
51
+ return createProxy(routerOrClient, []);
52
+ }
53
+ //# sourceMappingURL=createORPCJotai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createORPCJotai.js","sourceRoot":"","sources":["../src/createORPCJotai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** A sentinel value that prevents a query procedure from being called. */
2
+ export declare const DISABLED: unique symbol;
3
+ //# sourceMappingURL=disabled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disabled.d.ts","sourceRoot":"","sources":["../src/disabled.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,EAAE,OAAO,MAAsC,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** A sentinel value that prevents a query procedure from being called. */
2
+ export const DISABLED = Symbol('jotai-orpc.DISABLED');
3
+ //# sourceMappingURL=disabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disabled.js","sourceRoot":"","sources":["../src/disabled.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export { atomWithORPCMutation, type ORPCMutationAtom, } from './atomWithORPCMutation.js';
2
+ export { atomWithORPCQuery, type ORPCQueryAtom } from './atomWithORPCQuery.js';
3
+ export { atomWithORPCSubscription, type ORPCSubscriptionAtom, } from './atomWithORPCSubscription.js';
4
+ export { createORPCJotai, type ORPCClientGetter, type ORPCClientRouter, type ORPCJotaiClient, type ORPCJotaiTaggedClient, type ORPCMutationResolver, type ORPCQueryResolver, type ORPCSubscriptionResolver, } from './createORPCJotai.js';
5
+ export { mutation, query, subscription, type ORPCAnyOperationDescriptor, type ORPCClientFromTaggedRouter, type ORPCMutationDescriptor, type ORPCOperationDescriptor, type ORPCOperationKind, type ORPCQueryDescriptor, type ORPCSubscriptionDescriptor, type ORPCTaggedRouter, } from './operations.js';
6
+ export { DISABLED } from './disabled.js';
7
+ export type { AtomWithORPCQueryOptions, AtomWithORPCQueryOptionsWithDisabledOutput, AtomWithORPCSubscriptionOptions, AsyncValueOrGetter, ORPCEventIteratorProcedure, ORPCProcedure, ORPCMutationArgs, ORPCQueryInput, ORPCQueryOptionsArgs, ORPCSkippableQueryInput, ORPCSubscriptionInput, ORPCSubscriptionOptionsArgs, ProcedureClientOptions, ProcedureEvent, ProcedureInput, ProcedureOutput, ValueOrGetter, } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EACL,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EACV,wBAAwB,EACxB,0CAA0C,EAC1C,+BAA+B,EAC/B,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { atomWithORPCMutation, } from './atomWithORPCMutation.js';
2
+ export { atomWithORPCQuery } from './atomWithORPCQuery.js';
3
+ export { atomWithORPCSubscription, } from './atomWithORPCSubscription.js';
4
+ export { createORPCJotai, } from './createORPCJotai.js';
5
+ export { mutation, query, subscription, } from './operations.js';
6
+ export { DISABLED } from './disabled.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAsB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EACL,wBAAwB,GAEzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,eAAe,GAQhB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,QAAQ,EACR,KAAK,EACL,YAAY,GASb,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { Getter } from 'jotai/vanilla';
2
+ import type { AsyncValueOrGetter, ORPCProcedure, ProcedureClientOptions, ValueOrGetter } from './types.js';
3
+ export declare function resolveAsyncValueOrGetter<T>(valueOrGetter: AsyncValueOrGetter<T>, get: Getter): T | PromiseLike<T>;
4
+ export declare function resolveValueOrGetter<T>(valueOrGetter: ValueOrGetter<T>, get: Getter): T;
5
+ export declare function withAbortSignal<TProcedure extends ORPCProcedure>(clientOptions: ProcedureClientOptions<TProcedure> | undefined, signal: AbortSignal): ProcedureClientOptions<TProcedure>;
6
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAY,CAAA;AAEnB,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,GACV,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAMpB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,CAAC,CAMH;AAED,wBAAgB,eAAe,CAAC,UAAU,SAAS,aAAa,EAC9D,aAAa,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,SAAS,EAC7D,MAAM,EAAE,WAAW,GAClB,sBAAsB,CAAC,UAAU,CAAC,CAKpC"}
@@ -0,0 +1,19 @@
1
+ export function resolveAsyncValueOrGetter(valueOrGetter, get) {
2
+ if (typeof valueOrGetter === 'function') {
3
+ return valueOrGetter(get);
4
+ }
5
+ return valueOrGetter;
6
+ }
7
+ export function resolveValueOrGetter(valueOrGetter, get) {
8
+ if (typeof valueOrGetter === 'function') {
9
+ return valueOrGetter(get);
10
+ }
11
+ return valueOrGetter;
12
+ }
13
+ export function withAbortSignal(clientOptions, signal) {
14
+ return {
15
+ signal,
16
+ ...clientOptions,
17
+ };
18
+ }
19
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,yBAAyB,CACvC,aAAoC,EACpC,GAAW;IAEX,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,OAAQ,aAAqD,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,aAA+B,EAC/B,GAAW;IAEX,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,OAAQ,aAAoC,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,aAA6D,EAC7D,MAAmB;IAEnB,OAAO;QACL,MAAM;QACN,GAAI,aAAoC;KACH,CAAA;AACzC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ORPCEventIteratorProcedure, ORPCProcedure } from './types.js';
2
+ declare const operationDescriptor: unique symbol;
3
+ export type ORPCOperationKind = 'query' | 'mutation' | 'subscription';
4
+ export interface ORPCOperationDescriptor<TKind extends ORPCOperationKind, TProcedure extends ORPCProcedure> {
5
+ readonly kind: TKind;
6
+ readonly procedure: TProcedure;
7
+ readonly [operationDescriptor]: true;
8
+ }
9
+ export type ORPCQueryDescriptor<TProcedure extends ORPCProcedure> = ORPCOperationDescriptor<'query', TProcedure>;
10
+ export type ORPCMutationDescriptor<TProcedure extends ORPCProcedure> = ORPCOperationDescriptor<'mutation', TProcedure>;
11
+ export type ORPCSubscriptionDescriptor<TProcedure extends ORPCEventIteratorProcedure> = ORPCOperationDescriptor<'subscription', TProcedure>;
12
+ export type ORPCAnyOperationDescriptor = ORPCQueryDescriptor<ORPCProcedure> | ORPCMutationDescriptor<ORPCProcedure> | ORPCSubscriptionDescriptor<ORPCEventIteratorProcedure>;
13
+ export type ORPCTaggedRouter = {
14
+ readonly [key: string]: ORPCAnyOperationDescriptor | ORPCTaggedRouter;
15
+ };
16
+ export type ORPCClientFromTaggedRouter<TRouter> = TRouter extends ORPCOperationDescriptor<ORPCOperationKind, infer TProcedure> ? TProcedure : TRouter extends object ? {
17
+ [TKey in keyof TRouter]: ORPCClientFromTaggedRouter<TRouter[TKey]>;
18
+ } : never;
19
+ /** Marks an oRPC procedure as a read operation. */
20
+ export declare function query<TProcedure extends ORPCProcedure>(procedure: TProcedure extends ORPCEventIteratorProcedure ? never : TProcedure): ORPCQueryDescriptor<TProcedure>;
21
+ /** Marks an oRPC procedure as a write operation. */
22
+ export declare function mutation<TProcedure extends ORPCProcedure>(procedure: TProcedure extends ORPCEventIteratorProcedure ? never : TProcedure): ORPCMutationDescriptor<TProcedure>;
23
+ /** Marks an Event Iterator procedure as a subscription operation. */
24
+ export declare function subscription<TProcedure extends ORPCEventIteratorProcedure>(procedure: TProcedure): ORPCSubscriptionDescriptor<TProcedure>;
25
+ export declare function isORPCOperationDescriptor(value: unknown): value is ORPCAnyOperationDescriptor;
26
+ export {};
27
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE3E,QAAA,MAAM,mBAAmB,eAAiC,CAAA;AAE1D,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,cAAc,CAAA;AAErE,MAAM,WAAW,uBAAuB,CACtC,KAAK,SAAS,iBAAiB,EAC/B,UAAU,SAAS,aAAa;IAEhC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;IAC9B,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAA;CACrC;AAED,MAAM,MAAM,mBAAmB,CAAC,UAAU,SAAS,aAAa,IAC9D,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAE9C,MAAM,MAAM,sBAAsB,CAAC,UAAU,SAAS,aAAa,IACjE,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAEjD,MAAM,MAAM,0BAA0B,CACpC,UAAU,SAAS,0BAA0B,IAC3C,uBAAuB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;AAEvD,MAAM,MAAM,0BAA0B,GAClC,mBAAmB,CAAC,aAAa,CAAC,GAClC,sBAAsB,CAAC,aAAa,CAAC,GACrC,0BAA0B,CAAC,0BAA0B,CAAC,CAAA;AAE1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,0BAA0B,GAAG,gBAAgB,CAAA;CACtE,CAAA;AAED,MAAM,MAAM,0BAA0B,CAAC,OAAO,IAC5C,OAAO,SAAS,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAAU,CAAC,GACxE,UAAU,GACV,OAAO,SAAS,MAAM,GACpB;KAAG,IAAI,IAAI,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAAE,GACtE,KAAK,CAAA;AAgBb,mDAAmD;AACnD,wBAAgB,KAAK,CAAC,UAAU,SAAS,aAAa,EACpD,SAAS,EAAE,UAAU,SAAS,0BAA0B,GAAG,KAAK,GAAG,UAAU,GAC5E,mBAAmB,CAAC,UAAU,CAAC,CAEjC;AAED,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,UAAU,SAAS,aAAa,EACvD,SAAS,EAAE,UAAU,SAAS,0BAA0B,GAAG,KAAK,GAAG,UAAU,GAC5E,sBAAsB,CAAC,UAAU,CAAC,CAEpC;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,UAAU,SAAS,0BAA0B,EACxE,SAAS,EAAE,UAAU,GACpB,0BAA0B,CAAC,UAAU,CAAC,CAExC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,0BAA0B,CAIrC"}
@@ -0,0 +1,24 @@
1
+ const operationDescriptor = Symbol('jotai-orpc.operation');
2
+ function operation(kind, procedure) {
3
+ return Object.freeze({
4
+ kind,
5
+ procedure,
6
+ [operationDescriptor]: true,
7
+ });
8
+ }
9
+ /** Marks an oRPC procedure as a read operation. */
10
+ export function query(procedure) {
11
+ return operation('query', procedure);
12
+ }
13
+ /** Marks an oRPC procedure as a write operation. */
14
+ export function mutation(procedure) {
15
+ return operation('mutation', procedure);
16
+ }
17
+ /** Marks an Event Iterator procedure as a subscription operation. */
18
+ export function subscription(procedure) {
19
+ return operation('subscription', procedure);
20
+ }
21
+ export function isORPCOperationDescriptor(value) {
22
+ return (typeof value === 'object' && value !== null && operationDescriptor in value);
23
+ }
24
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAuC1D,SAAS,SAAS,CAIhB,IAAW,EACX,SAAqB;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,SAAS;QACT,CAAC,mBAAmB,CAAC,EAAE,IAAa;KACrC,CAAC,CAAA;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,KAAK,CACnB,SAA6E;IAE7E,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACtC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,QAAQ,CACtB,SAA6E;IAE7E,OAAO,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACzC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAC1B,SAAqB;IAErB,OAAO,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,mBAAmB,IAAI,KAAK,CAC5E,CAAA;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Getter } from 'jotai/vanilla';
2
+ import type { DISABLED } from './disabled.js';
3
+ /** A structurally typed oRPC client procedure. */
4
+ export type ORPCProcedure = (...args: any[]) => PromiseLike<any>;
5
+ export type ProcedureInput<TProcedure extends ORPCProcedure> = Parameters<TProcedure>[0];
6
+ export type ProcedureOutput<TProcedure extends ORPCProcedure> = Awaited<ReturnType<TProcedure>>;
7
+ export type ProcedureClientOptions<TProcedure extends ORPCProcedure> = Parameters<TProcedure>[1];
8
+ export type ValueOrGetter<T> = T | ((get: Getter) => T);
9
+ export type AsyncValueOrGetter<T> = T | PromiseLike<T> | ((get: Getter) => T | PromiseLike<T>);
10
+ export type ORPCQueryInput<TProcedure extends ORPCProcedure> = AsyncValueOrGetter<ProcedureInput<TProcedure>>;
11
+ export type ORPCSkippableQueryInput<TProcedure extends ORPCProcedure> = AsyncValueOrGetter<ProcedureInput<TProcedure> | typeof DISABLED>;
12
+ type DefinedProcedureClientOptions<TProcedure extends ORPCProcedure> = Exclude<ProcedureClientOptions<TProcedure>, undefined>;
13
+ type ORPCQueryClientOptions<TProcedure extends ORPCProcedure> = [
14
+ DefinedProcedureClientOptions<TProcedure>
15
+ ] extends [never] ? object : DefinedProcedureClientOptions<TProcedure>;
16
+ export type AtomWithORPCQueryOptions<TProcedure extends ORPCProcedure> = ValueOrGetter<ORPCQueryClientOptions<TProcedure> & {
17
+ disabledOutput?: undefined;
18
+ }>;
19
+ export type AtomWithORPCQueryOptionsWithDisabledOutput<TProcedure extends ORPCProcedure, TDisabledOutput> = ValueOrGetter<ORPCQueryClientOptions<TProcedure> & {
20
+ disabledOutput: TDisabledOutput;
21
+ }>;
22
+ export type ORPCEventIteratorProcedure = (...args: any[]) => PromiseLike<AsyncIterator<any, any, any>>;
23
+ export type ProcedureEvent<TProcedure extends ORPCEventIteratorProcedure> = Awaited<ReturnType<TProcedure>> extends AsyncIterator<infer TEvent, any, any> ? TEvent : never;
24
+ export type ORPCSubscriptionInput<TProcedure extends ORPCEventIteratorProcedure> = ValueOrGetter<ProcedureInput<TProcedure>>;
25
+ export type AtomWithORPCSubscriptionOptions<TProcedure extends ORPCEventIteratorProcedure> = ValueOrGetter<[
26
+ DefinedProcedureClientOptions<TProcedure>
27
+ ] extends [never] ? object : DefinedProcedureClientOptions<TProcedure>>;
28
+ export type ORPCQueryOptionsArgs<TProcedure extends ORPCProcedure> = undefined extends ProcedureClientOptions<TProcedure> ? [options?: AtomWithORPCQueryOptions<TProcedure>] : [options: AtomWithORPCQueryOptions<TProcedure>];
29
+ export type ORPCMutationArgs<TProcedure extends ORPCProcedure> = Parameters<TProcedure>;
30
+ export type ORPCSubscriptionOptionsArgs<TProcedure extends ORPCEventIteratorProcedure> = undefined extends ProcedureClientOptions<TProcedure> ? [options?: AtomWithORPCSubscriptionOptions<TProcedure>] : [options: AtomWithORPCSubscriptionOptions<TProcedure>];
31
+ export {};
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "jotai-orpc",
3
+ "version": "0.1.0",
4
+ "description": "Minimal Jotai bindings for oRPC clients",
5
+ "keywords": [
6
+ "jotai",
7
+ "orpc",
8
+ "react",
9
+ "rpc",
10
+ "typescript"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/balckowl/jotai-orpc.git"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "type": "module",
21
+ "sideEffects": false,
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ }
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc -p tsconfig.build.json",
35
+ "check": "npm run format:check && npm run lint && npm run typecheck && npm test && npm run build",
36
+ "changeset": "changeset",
37
+ "changeset:status": "changeset status",
38
+ "commitlint": "commitlint",
39
+ "format": "oxfmt",
40
+ "format:check": "oxfmt --check",
41
+ "hooks:install": "lefthook install",
42
+ "lint": "oxlint --deny-warnings --report-unused-disable-directives",
43
+ "lint:fix": "oxlint --fix",
44
+ "pack:check": "npm pack --dry-run",
45
+ "prepublishOnly": "npm run check",
46
+ "release": "changeset publish",
47
+ "test": "vitest run",
48
+ "typecheck": "tsc -p tsconfig.json --noEmit",
49
+ "version-packages": "changeset version && npm install --package-lock-only --ignore-scripts"
50
+ },
51
+ "devDependencies": {
52
+ "@changesets/cli": "^2.31.1",
53
+ "@commitlint/cli": "21.2.1",
54
+ "@commitlint/config-conventional": "21.2.0",
55
+ "@orpc/client": "^1.14.8",
56
+ "jotai": "^2.20.1",
57
+ "lefthook": "2.1.10",
58
+ "oxfmt": "0.59.0",
59
+ "oxlint": "1.74.0",
60
+ "typescript": "^5.8.0",
61
+ "vitest": "^3.2.4"
62
+ },
63
+ "peerDependencies": {
64
+ "@orpc/client": ">=1.0.0",
65
+ "jotai": ">=2.0.0"
66
+ }
67
+ }