@rustra/react 0.4.1 → 0.7.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/dist/index.d.ts CHANGED
@@ -26,6 +26,8 @@ export { useCommand } from './useCommand.js';
26
26
  export type { UseCommandOptions, UseCommandResult, CommandFn, VoidCommandFn, } from './useCommand.js';
27
27
  export { useMutation } from './useMutation.js';
28
28
  export type { UseMutationOptions, UseMutationResult } from './useMutation.js';
29
+ export { useSuspenseCommand, invalidateCommands } from './useSuspenseCommand.js';
30
+ export type { SuspenseEntry } from './useSuspenseCommand.js';
29
31
  export { useEvent } from './useEvent.js';
30
- export type { EventCallback, UnsubscribeFn, SubscribeFn } from './useEvent.js';
32
+ export type { EventCallback, UnsubscribeFn, SubscribeResult, SubscribeFn } from './useEvent.js';
31
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACjF,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -23,5 +23,6 @@
23
23
  export { RustraProvider, useRustraEngine } from './context.js';
24
24
  export { useCommand } from './useCommand.js';
25
25
  export { useMutation } from './useMutation.js';
26
+ export { useSuspenseCommand, invalidateCommands } from './useSuspenseCommand.js';
26
27
  export { useEvent } from './useEvent.js';
27
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Creates a render-stable key for command inputs.
3
+ *
4
+ * JSON.stringify throws for bigint values, which are a normal generated type
5
+ * for Rust i64/u64 fields. The tagged representation also avoids conflating a
6
+ * bigint with the same decimal string.
7
+ */
8
+ export declare function inputKey(value: unknown): string;
9
+ //# sourceMappingURL=input-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-key.d.ts","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM/C"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Creates a render-stable key for command inputs.
3
+ *
4
+ * JSON.stringify throws for bigint values, which are a normal generated type
5
+ * for Rust i64/u64 fields. The tagged representation also avoids conflating a
6
+ * bigint with the same decimal string.
7
+ */
8
+ export function inputKey(value) {
9
+ return (JSON.stringify(value, (_key, item) => typeof item === 'bigint' ? { $rustraBigInt: item.toString() } : item) ?? String(value));
10
+ }
11
+ //# sourceMappingURL=input-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-key.js","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAa,EAAE,EAAE,CAC5C,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,IAAI,MAAM,CAAC,KAAK,CAAC,CACnB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCommand.d.ts","sourceRoot":"","sources":["../src/useCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC7B,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC7C,KAAK,CAAC,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAuFrB"}
1
+ {"version":3,"file":"useCommand.d.ts","sourceRoot":"","sources":["../src/useCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC7B,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC7C,KAAK,CAAC,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAuFrB"}
@@ -1,6 +1,7 @@
1
1
  import { useState, useEffect, useCallback, useRef } from 'react';
2
2
  import { resolveCommandId } from '@rustra/types';
3
3
  import { useRustraEngine } from './context.js';
4
+ import { inputKey } from './input-key.js';
4
5
  export function useCommand(commandFn, input, options) {
5
6
  const engine = useRustraEngine();
6
7
  const [data, setData] = useState(undefined);
@@ -23,12 +24,12 @@ export function useCommand(commandFn, input, options) {
23
24
  // react-doctor/no-ref-current-in-render). useState 의 "이전 값과 같으면
24
25
  // 같은 참조 반환" 관례로 안정화한다: 키가 직전과 같으면 직전 state 를
25
26
  // 그대로 돌려받고, 다르면 setState 로 커밋 시점에 갱신한다.
26
- const inputKey = input === undefined ? undefined : JSON.stringify(input);
27
- const [stableInputBox, setStableInputBox] = useState(() => ({ key: inputKey, value: input }));
28
- if (stableInputBox.key !== inputKey) {
29
- setStableInputBox({ key: inputKey, value: input });
27
+ const serializedInput = input === undefined ? undefined : inputKey(input);
28
+ const [stableInputBox, setStableInputBox] = useState(() => ({ key: serializedInput, value: input }));
29
+ if (stableInputBox.key !== serializedInput) {
30
+ setStableInputBox({ key: serializedInput, value: input });
30
31
  }
31
- const stableInput = stableInputBox.key === inputKey ? stableInputBox.value : input;
32
+ const stableInput = stableInputBox.key === serializedInput ? stableInputBox.value : input;
32
33
  const execute = useCallback(async () => {
33
34
  if (abortControllerRef.current) {
34
35
  abortControllerRef.current.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"useCommand.js","sourceRoot":"","sources":["../src/useCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCommand.js","sourceRoot":"","sources":["../src/useCommand.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export type EventCallback<T = unknown> = (payload: T) => void;
2
2
  export type UnsubscribeFn = () => void;
3
- export type SubscribeFn<T = unknown> = (eventName: string, callback: EventCallback<T>) => UnsubscribeFn;
3
+ export type SubscribeResult = UnsubscribeFn | Promise<UnsubscribeFn>;
4
+ export type SubscribeFn<T = unknown> = (eventName: string, callback: EventCallback<T>) => SubscribeResult;
4
5
  /**
5
6
  * Subscribes to a Rustra event stream and automatically unregisters on unmount.
6
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useEvent.d.ts","sourceRoot":"","sources":["../src/useEvent.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AACvC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KACvB,aAAa,CAAC;AAEnB;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACzB,IAAI,CAgBN"}
1
+ {"version":3,"file":"useEvent.d.ts","sourceRoot":"","sources":["../src/useEvent.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AACvC,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,CACrC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KACvB,eAAe,CAAC;AAErB;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACzB,IAAI,CAsCN"}
package/dist/useEvent.js CHANGED
@@ -14,10 +14,32 @@ export function useEvent(eventName, callback, subscribe) {
14
14
  useEffect(() => {
15
15
  if (!subscribe)
16
16
  return;
17
- const unsubscribe = subscribe(eventName, (payload) => {
18
- callbackRef.current(payload);
17
+ let active = true;
18
+ let unsubscribe;
19
+ let result;
20
+ try {
21
+ result = subscribe(eventName, (payload) => {
22
+ callbackRef.current(payload);
23
+ });
24
+ }
25
+ catch (error) {
26
+ console.error(`Rustra: event subscription for "${eventName}" failed:`, error);
27
+ return () => {
28
+ active = false;
29
+ };
30
+ }
31
+ Promise.resolve(result).then((cleanup) => {
32
+ if (active)
33
+ unsubscribe = cleanup;
34
+ else
35
+ cleanup();
36
+ }, (error) => {
37
+ if (active) {
38
+ console.error(`Rustra: event subscription for "${eventName}" failed:`, error);
39
+ }
19
40
  });
20
41
  return () => {
42
+ active = false;
21
43
  unsubscribe?.();
22
44
  };
23
45
  }, [eventName, subscribe]);
@@ -1 +1 @@
1
- {"version":3,"file":"useEvent.js","sourceRoot":"","sources":["../src/useEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAS1C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,SAAiB,EACjB,QAA0B,EAC1B,SAA0B;IAE1B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACnD,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"useEvent.js","sourceRoot":"","sources":["../src/useEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAU1C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,SAAiB,EACjB,QAA0B,EAC1B,SAA0B;IAE1B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,WAAsC,CAAC;QAC3C,IAAI,MAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACxC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,SAAS,WAAW,EAAE,KAAK,CAAC,CAAC;YAC9E,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1B,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,MAAM;gBAAE,WAAW,GAAG,OAAO,CAAC;;gBAC7B,OAAO,EAAE,CAAC;QACjB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,SAAS,WAAW,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,KAAK,CAAC;YACf,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { InvokeOptions } from '@rustra/types';
2
+ import type { CommandFn, VoidCommandFn } from './useCommand.js';
3
+ /**
4
+ * Cache entry state machine — `pending` until the in-flight promise settles,
5
+ * then `fulfilled` (value stored) or `rejected` (error stored).
6
+ */
7
+ export interface SuspenseEntry<O = unknown> {
8
+ /** Owning command — `invalidateCommands` matches this field, not the key prefix. */
9
+ commandName: string;
10
+ promise: Promise<O>;
11
+ status: 'pending' | 'fulfilled' | 'rejected';
12
+ value?: O;
13
+ error?: unknown;
14
+ }
15
+ /**
16
+ * Pure cache state machine: returns the existing entry for `key` when present,
17
+ * otherwise creates one by invoking `start()` and drives it to its terminal
18
+ * state. Settling updates the entry in place, so later accessors read the
19
+ * cached value/error without re-invoking. Rejections are normalized to `Error`
20
+ * (matching `useCommand`/`useMutation`); the stored object is re-thrown as-is.
21
+ *
22
+ * Exported for testing — the hook stays thin, and this is testable without
23
+ * React (a thrown promise is awkward to exercise under SSR renderToString).
24
+ */
25
+ export declare function resolveSuspenseEntry<O>(key: string, commandName: string, start: () => Promise<O>): SuspenseEntry<O>;
26
+ /**
27
+ * Invalidate cached suspense entries.
28
+ *
29
+ * - `invalidateCommands('getItem')` — drop only that command's entries,
30
+ * matched by the entry's owning command (exact, so command names containing
31
+ * `::` cannot be over-matched by a shorter prefix).
32
+ * - `invalidateCommands()` — drop every cached entry.
33
+ *
34
+ * Works outside components (module-level cache), e.g. after a mutation.
35
+ */
36
+ export declare function invalidateCommands(commandName?: string): void;
37
+ /**
38
+ * Suspense-compatible command hook. Must be called under a Suspense boundary.
39
+ *
40
+ * First call starts the invocation and throws the in-flight promise —
41
+ * thrown-thenable Suspense on React 18, `use` on React 19. Once settled,
42
+ * subsequent calls return the cached value. A rejected invocation re-throws
43
+ * the same stored error object on every access (error boundary contract) until
44
+ * `invalidateCommands` clears it.
45
+ *
46
+ * `options` are honored only on the first invocation per key; later calls
47
+ * reuse the cached promise.
48
+ */
49
+ export declare function useSuspenseCommand<I, O>(commandFn: CommandFn<I, O> | VoidCommandFn<O>, input?: I, options?: InvokeOptions): O;
50
+ //# sourceMappingURL=useSuspenseCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSuspenseCommand.d.ts","sourceRoot":"","sources":["../src/useSuspenseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhE;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAeD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACtB,aAAa,CAAC,CAAC,CAAC,CAmBlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EACrC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC7C,KAAK,CAAC,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,CAYH"}
@@ -0,0 +1,85 @@
1
+ import { resolveCommandId } from '@rustra/types';
2
+ import { useRustraEngine } from './context.js';
3
+ import { inputKey } from './input-key.js';
4
+ /**
5
+ * Module-level suspense cache. Key is the resolved command name followed by
6
+ * `::` and the serialized input — an absent input collapses to the bare
7
+ * `commandName + '::'` suffix, otherwise `inputKey(input)` (bigint-safe).
8
+ *
9
+ * No eviction policy by design (YAGNI) — entries live for the session.
10
+ */
11
+ const cache = new Map();
12
+ function cacheKey(commandName, input) {
13
+ return `${commandName}::${input === undefined ? '' : inputKey(input)}`;
14
+ }
15
+ /**
16
+ * Pure cache state machine: returns the existing entry for `key` when present,
17
+ * otherwise creates one by invoking `start()` and drives it to its terminal
18
+ * state. Settling updates the entry in place, so later accessors read the
19
+ * cached value/error without re-invoking. Rejections are normalized to `Error`
20
+ * (matching `useCommand`/`useMutation`); the stored object is re-thrown as-is.
21
+ *
22
+ * Exported for testing — the hook stays thin, and this is testable without
23
+ * React (a thrown promise is awkward to exercise under SSR renderToString).
24
+ */
25
+ export function resolveSuspenseEntry(key, commandName, start) {
26
+ const existing = cache.get(key);
27
+ if (existing)
28
+ return existing;
29
+ const promise = start();
30
+ const entry = { commandName, promise, status: 'pending' };
31
+ cache.set(key, entry);
32
+ promise.then((value) => {
33
+ entry.status = 'fulfilled';
34
+ entry.value = value;
35
+ }, (err) => {
36
+ entry.status = 'rejected';
37
+ entry.error = err instanceof Error ? err : new Error(String(err));
38
+ });
39
+ return entry;
40
+ }
41
+ /**
42
+ * Invalidate cached suspense entries.
43
+ *
44
+ * - `invalidateCommands('getItem')` — drop only that command's entries,
45
+ * matched by the entry's owning command (exact, so command names containing
46
+ * `::` cannot be over-matched by a shorter prefix).
47
+ * - `invalidateCommands()` — drop every cached entry.
48
+ *
49
+ * Works outside components (module-level cache), e.g. after a mutation.
50
+ */
51
+ export function invalidateCommands(commandName) {
52
+ if (commandName === undefined) {
53
+ cache.clear();
54
+ return;
55
+ }
56
+ for (const [key, entry] of cache) {
57
+ if (entry.commandName === commandName)
58
+ cache.delete(key);
59
+ }
60
+ }
61
+ /**
62
+ * Suspense-compatible command hook. Must be called under a Suspense boundary.
63
+ *
64
+ * First call starts the invocation and throws the in-flight promise —
65
+ * thrown-thenable Suspense on React 18, `use` on React 19. Once settled,
66
+ * subsequent calls return the cached value. A rejected invocation re-throws
67
+ * the same stored error object on every access (error boundary contract) until
68
+ * `invalidateCommands` clears it.
69
+ *
70
+ * `options` are honored only on the first invocation per key; later calls
71
+ * reuse the cached promise.
72
+ */
73
+ export function useSuspenseCommand(commandFn, input, options) {
74
+ const engine = useRustraEngine();
75
+ // minify-안전 식별: 코드젠이 심은 commandId 를 우선한다 (Function.name 은
76
+ // 프로덕션 번들러 mangling 으로 바뀔 수 있다).
77
+ const commandName = resolveCommandId(commandFn);
78
+ const entry = resolveSuspenseEntry(cacheKey(commandName, input), commandName, () => engine.invoke(commandName, input, options));
79
+ if (entry.status === 'pending')
80
+ throw entry.promise;
81
+ if (entry.status === 'rejected')
82
+ throw entry.error;
83
+ return entry.value;
84
+ }
85
+ //# sourceMappingURL=useSuspenseCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSuspenseCommand.js","sourceRoot":"","sources":["../src/useSuspenseCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAe1C;;;;;;GAMG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;AAE/C,SAAS,QAAQ,CAAC,WAAmB,EAAE,KAAc;IACnD,OAAO,GAAG,WAAW,KAAK,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,WAAmB,EACnB,KAAuB;IAEvB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ;QAAE,OAAO,QAA4B,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,KAAK,GAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5E,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtB,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE;QACR,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;QACf,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC,CACF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAoB;IACrD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA6C,EAC7C,KAAS,EACT,OAAuB;IAEvB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,0DAA0D;IAC1D,iCAAiC;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,oBAAoB,CAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CACpF,MAAM,CAAC,MAAM,CAAI,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAC9C,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;QAAE,MAAM,KAAK,CAAC,KAAK,CAAC;IACnD,OAAO,KAAK,CAAC,KAAU,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rustra/react",
3
- "version": "0.4.1",
3
+ "version": "0.7.0",
4
4
  "description": "React and React Native bindings and hooks for rustra-bridge",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -18,26 +18,7 @@
18
18
  },
19
19
  "files": [
20
20
  "LICENSE",
21
- "dist/context.d.ts",
22
- "dist/context.d.ts.map",
23
- "dist/context.js",
24
- "dist/context.js.map",
25
- "dist/index.d.ts",
26
- "dist/index.d.ts.map",
27
- "dist/index.js",
28
- "dist/index.js.map",
29
- "dist/useCommand.d.ts",
30
- "dist/useCommand.d.ts.map",
31
- "dist/useCommand.js",
32
- "dist/useCommand.js.map",
33
- "dist/useEvent.d.ts",
34
- "dist/useEvent.d.ts.map",
35
- "dist/useEvent.js",
36
- "dist/useEvent.js.map",
37
- "dist/useMutation.d.ts",
38
- "dist/useMutation.d.ts.map",
39
- "dist/useMutation.js",
40
- "dist/useMutation.js.map"
21
+ "dist"
41
22
  ],
42
23
  "scripts": {
43
24
  "build": "tsc",
@@ -49,7 +30,7 @@
49
30
  "react": ">=18.0.0"
50
31
  },
51
32
  "dependencies": {
52
- "@rustra/types": "^0.5.0"
33
+ "@rustra/types": "^0.8.0"
53
34
  },
54
35
  "devDependencies": {
55
36
  "@types/react": "^19.0.0",