@rustra/react 0.8.1 → 0.8.3

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.ko.md CHANGED
@@ -82,5 +82,10 @@ TypeError로 거부한다. 엔진에는 원래 입력을 전달한다.
82
82
  완료하더라도 해당 호출에 귀속되어 실행한다. 중첩 호출은 현재 범위의 모든 호출이
83
83
  끝날 때까지 `loading`을 유지하고, 마지막 호출만 data/error를 갱신한다.
84
84
 
85
+ **엔진 정체성.** 엔진은 값이 아니라 객체 정체성(`WeakMap`)으로 구분한다. `RustraProvider` 에는
86
+ 모듈 상수나 `useMemo` 결과처럼 안정적인 엔진을 전달한다. 렌더링마다 새 객체가 만들어지는
87
+ 불안정한 `engine` prop 은 엔진 교체로 관측되어 매 렌더링 `useMutation` 상태를 초기화한다.
88
+ 의도한 교체에서 상태가 초기화되는 것은 설계된 동작이다.
89
+
85
90
  `useEvent`는 동기·비동기 구독 해제 등록을 지원한다. 이벤트·구독자 교체 또는 언마운트 시
86
91
  이전 구독의 전달을 즉시 차단하며, 늦게 도착한 정리 함수는 한 번 실행한다.
package/README.md CHANGED
@@ -91,6 +91,12 @@ are captured at invocation time and still belong to that invocation, including
91
91
  when it settles after a reset or scope change. Overlapping calls keep `loading`
92
92
  true until all current-scope calls settle; only the latest call updates data/error.
93
93
 
94
+ **Engine identity.** Engines are keyed by object identity (a `WeakMap`), not by
95
+ value. Pass a stable engine to `RustraProvider` — a module-level constant or a
96
+ `useMemo` result; an unstable `engine` prop (a new object every render) is
97
+ observed as an engine swap and resets `useMutation` state on every render.
98
+ Intentional swaps resetting state are by design.
99
+
94
100
  `useEvent` accepts synchronous or asynchronous unsubscribe registration. Replacing
95
101
  an event/subscriber or unmounting immediately disables delivery from the old
96
102
  subscription. A cleanup function that arrives afterward is invoked once.
@@ -3,6 +3,15 @@
3
3
  * user objects, so a record cannot impersonate a bigint, Set, or binary value.
4
4
  * Object keys are canonicalized; Map/Set iteration order and binary view type
5
5
  * are preserved because the original input is passed unchanged to the engine.
6
+ *
7
+ * Values without a structural serialization never throw: class instances,
8
+ * functions, and other exotic objects are keyed by a stable per-instance id from
9
+ * a module-level WeakMap (same instance → same key on every render, different
10
+ * instances → different keys; the WeakMap never retains a dead instance), and
11
+ * symbols are keyed by `String(symbol)`, which includes the description —
12
+ * description-less symbols therefore share a single key bucket. Only cycles
13
+ * remain a TypeError. Identity-keyed inputs are not stable serialization
14
+ * targets, so a dev-only console.warn is emitted once per derived key.
6
15
  */
7
16
  export declare function inputKey(value: unknown): string;
8
17
  //# sourceMappingURL=input-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-key.d.ts","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA2D/C"}
1
+ {"version":3,"file":"input-key.d.ts","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA8E/C"}
package/dist/input-key.js CHANGED
@@ -3,9 +3,42 @@
3
3
  * user objects, so a record cannot impersonate a bigint, Set, or binary value.
4
4
  * Object keys are canonicalized; Map/Set iteration order and binary view type
5
5
  * are preserved because the original input is passed unchanged to the engine.
6
+ *
7
+ * Values without a structural serialization never throw: class instances,
8
+ * functions, and other exotic objects are keyed by a stable per-instance id from
9
+ * a module-level WeakMap (same instance → same key on every render, different
10
+ * instances → different keys; the WeakMap never retains a dead instance), and
11
+ * symbols are keyed by `String(symbol)`, which includes the description —
12
+ * description-less symbols therefore share a single key bucket. Only cycles
13
+ * remain a TypeError. Identity-keyed inputs are not stable serialization
14
+ * targets, so a dev-only console.warn is emitted once per derived key.
6
15
  */
16
+ const instanceIds = new WeakMap();
17
+ let nextInstanceId = 0;
18
+ const warnedKeys = new Set();
19
+ const warnedKeyLimit = 100;
20
+ function instanceId(item) {
21
+ let id = instanceIds.get(item);
22
+ if (id === undefined) {
23
+ id = String(nextInstanceId++);
24
+ instanceIds.set(item, id);
25
+ }
26
+ return id;
27
+ }
28
+ function warnUnstableIdentityKey(key) {
29
+ const env = globalThis.process?.env;
30
+ if (env?.NODE_ENV === 'production')
31
+ return;
32
+ // Warn once per key so re-renders do not spam; the set is capped so apps that
33
+ // mint throwaway instances on every render cannot grow it without bound.
34
+ if (warnedKeys.has(key) || warnedKeys.size >= warnedKeyLimit)
35
+ return;
36
+ warnedKeys.add(key);
37
+ console.warn('[rustra] command input contains a class instance, function, or symbol; it is keyed by identity and is not a stable serialization target');
38
+ }
7
39
  export function inputKey(value) {
8
40
  const ancestors = new Set();
41
+ let usesIdentityKey = false;
9
42
  function encode(item) {
10
43
  if (item === null)
11
44
  return ['null'];
@@ -20,9 +53,13 @@ export function inputKey(value) {
20
53
  return ['bigint', item.toString()];
21
54
  case 'number':
22
55
  return ['number', Object.is(item, -0) ? '-0' : String(item)];
23
- case 'function':
24
56
  case 'symbol':
25
- throw new TypeError('Rustra command inputs cannot contain functions or symbols');
57
+ // Includes the description; description-less symbols share a bucket.
58
+ usesIdentityKey = true;
59
+ return ['symbol', String(item)];
60
+ case 'function':
61
+ usesIdentityKey = true;
62
+ return ['ref', instanceId(item)];
26
63
  }
27
64
  if (ancestors.has(item))
28
65
  throw new TypeError('Rustra command inputs cannot contain cycles');
@@ -48,22 +85,38 @@ export function inputKey(value) {
48
85
  }
49
86
  const prototype = Object.getPrototypeOf(item);
50
87
  if (prototype !== Object.prototype && prototype !== null) {
51
- throw new TypeError('Rustra command inputs must use supported values or plain records');
52
- }
53
- if (Object.getOwnPropertySymbols(item).length > 0) {
54
- throw new TypeError('Rustra command inputs cannot contain symbol keys');
88
+ // Class instances and host/exotic objects: identity-keyed, non-throwing.
89
+ usesIdentityKey = true;
90
+ return ['ref', instanceId(item)];
55
91
  }
92
+ const entries = Object.keys(item)
93
+ .sort()
94
+ .map((key) => [key, encode(item[key])]);
95
+ const symbolKeys = Object.getOwnPropertySymbols(item);
96
+ if (symbolKeys.length === 0)
97
+ return ['object', entries];
98
+ // Symbol-keyed properties join the key via String(symbol) instead of
99
+ // throwing; they share the description-less bucket caveat of symbols.
100
+ usesIdentityKey = true;
56
101
  return [
57
102
  'object',
58
- Object.keys(item)
59
- .sort()
60
- .map((key) => [key, encode(item[key])]),
103
+ [
104
+ ...entries,
105
+ ...symbolKeys.map((symbol) => [
106
+ 'symbol',
107
+ String(symbol),
108
+ encode(item[symbol]),
109
+ ]),
110
+ ],
61
111
  ];
62
112
  }
63
113
  finally {
64
114
  ancestors.delete(item);
65
115
  }
66
116
  }
67
- return JSON.stringify(encode(value));
117
+ const key = JSON.stringify(encode(value));
118
+ if (usesIdentityKey)
119
+ warnUnstableIdentityKey(key);
120
+ return key;
68
121
  }
69
122
  //# sourceMappingURL=input-key.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-key.js","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-key.js","sourceRoot":"","sources":["../src/input-key.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"suspense-cache.d.ts","sourceRoot":"","sources":["../src/suspense-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,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,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAsCD,mFAAmF;AACnF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,eAAqB,GAC1B,IAAI,CAgBN;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAWpF;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,YAAiC,GACxC,aAAa,CAAC,CAAC,CAAC,CA0DlB"}
1
+ {"version":3,"file":"suspense-cache.d.ts","sourceRoot":"","sources":["../src/suspense-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,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,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAsCD,mFAAmF;AACnF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,eAAqB,GAC1B,IAAI,CAgBN;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAWpF;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,YAAiC,GACxC,aAAa,CAAC,CAAC,CAAC,CAqElB"}
@@ -98,20 +98,36 @@ export function resolveSuspenseEntry(key, commandName, start, engine = getDefaul
98
98
  // Invalidated requests still settle for their callers but never reinsert.
99
99
  if (cache.entries.get(key) !== record)
100
100
  return;
101
+ if (record.expiry)
102
+ clearTimeout(record.expiry);
101
103
  record.expiresAt = Date.now() + cache.policy.ttlMs;
102
104
  record.expiry = setTimeout(() => remove(cache, key), cache.policy.ttlMs);
103
105
  // Node SSR must not remain alive solely for cache retention.
104
106
  record.expiry.unref?.();
105
107
  }
106
- promise.then((value) => {
107
- entry.status = 'fulfilled';
108
- entry.value = value;
109
- settled();
110
- }, (error) => {
108
+ function recordFailure(error) {
111
109
  entry.status = 'rejected';
112
110
  entry.error = error instanceof Error ? error : new Error(String(error));
113
111
  settled();
112
+ }
113
+ // The pending timeout is only a UI-state signal, not an abandonment: the
114
+ // Suspense caller still observes the timeout rejection, but the entry keeps
115
+ // following the original in-flight invocation so its eventual result or
116
+ // rejection still lands in the cache — the next render then sees the real
117
+ // outcome without a duplicate re-invoke.
118
+ deadline.catch((error) => {
119
+ if (entry.status !== 'pending')
120
+ return; // the real outcome already landed
121
+ recordFailure(error);
114
122
  });
123
+ // Callers may never attach to the raced promise; swallow its mirrored
124
+ // rejection here — outcomes are recorded from the source promises below.
125
+ promise.catch(() => { });
126
+ invocation.then((value) => {
127
+ entry.status = 'fulfilled';
128
+ entry.value = value;
129
+ settled();
130
+ }, recordFailure);
115
131
  return entry;
116
132
  }
117
133
  //# sourceMappingURL=suspense-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suspense-cache.js","sourceRoot":"","sources":["../src/suspense-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suspense-cache.js","sourceRoot":"","sources":["../src/suspense-cache.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rustra/react",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "React and React Native bindings and hooks for rustra-bridge",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,15 +30,15 @@
30
30
  "react": ">=18.0.0"
31
31
  },
32
32
  "dependencies": {
33
- "@rustra/types": "^0.11.0"
33
+ "@rustra/types": "^0.12.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/react": "^19.0.0",
37
- "react": "19.2.8",
37
+ "react": "19.3.0",
38
38
  "typescript": "^5.9.0",
39
- "react-dom": "19.2.8",
39
+ "react-dom": "19.3.0",
40
40
  "@types/react-dom": "^19.0.0",
41
- "react-test-renderer": "19.2.8",
41
+ "react-test-renderer": "19.3.0",
42
42
  "@types/react-test-renderer": "^19.0.0"
43
43
  },
44
44
  "keywords": [