@reactra/behaviours 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/observable.d.ts +4 -0
- package/dist/observable.d.ts.map +1 -0
- package/dist/observable.js +3 -0
- package/dist/observable.js.map +1 -0
- package/dist/persistent.d.ts +4 -0
- package/dist/persistent.d.ts.map +1 -0
- package/dist/persistent.js +3 -0
- package/dist/persistent.js.map +1 -0
- package/dist/plugin.d.ts +9 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +9 -0
- package/dist/plugin.js.map +1 -0
- package/dist/replayable.d.ts +240 -0
- package/dist/replayable.d.ts.map +1 -0
- package/dist/replayable.js +735 -0
- package/dist/replayable.js.map +1 -0
- package/dist/traceable.d.ts +4 -0
- package/dist/traceable.d.ts.map +1 -0
- package/dist/traceable.js +9 -0
- package/dist/traceable.js.map +1 -0
- package/dist/undoable.d.ts +57 -0
- package/dist/undoable.d.ts.map +1 -0
- package/dist/undoable.js +87 -0
- package/dist/undoable.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Akhil Shastri and the Reactra 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,17 @@
|
|
|
1
|
+
# @reactra/behaviours
|
|
2
|
+
|
|
3
|
+
> Reactra behaviour plugins — replayable, undoable, traceable, observable, persistent, and the plugin HOF contract.
|
|
4
|
+
|
|
5
|
+
**Alpha** — published under the npm dist-tag `alpha`. APIs may change before 1.0.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @reactra/behaviours@alpha
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Part of [Reactra](https://github.com/akhilshastri/reactra) — a compiler-first,
|
|
12
|
+
React-19-compatible framework. See the [documentation](https://reactra-docs.vercel.app) to get
|
|
13
|
+
started.
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
|
|
17
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../src/observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,eAAO,MAAM,UAAU,GAAI,CAAC,EAAG,WAAW,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAAc,CAAA;AAC1F,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../src/observable.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAK,SAA2B,EAAoB,EAAE,CAAC,SAAS,CAAA;AAC1F,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../src/persistent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,eAAO,MAAM,UAAU,GAAI,CAAC,EAAG,WAAW,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAAc,CAAA;AAC1F,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent.js","sourceRoot":"","sources":["../src/persistent.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAK,SAA2B,EAAoB,EAAE,CAAC,SAAS,CAAA;AAC1F,eAAe,UAAU,CAAA"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The plugin-behaviour contract (Behaviour Plugin spec §2): take a component,
|
|
4
|
+
* return a component of the SAME props type. Props pass through verbatim; the
|
|
5
|
+
* wrapped component renders on every non-error path; no reaching into the
|
|
6
|
+
* component's internals. See §2's laws for the full normative list.
|
|
7
|
+
*/
|
|
8
|
+
export type ReactraBehaviour = <P>(Component: ComponentType<P>) => ComponentType<P>;
|
|
9
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @reactra/behaviours/plugin — the plugin-behaviour contract type.
|
|
2
|
+
//
|
|
3
|
+
// Owner spec: reactra-behaviour-plugin-spec.md §2. A plugin behaviour (the
|
|
4
|
+
// `uses` class that wraps, vs the compiler-native class that instruments the
|
|
5
|
+
// body) is a props-preserving higher-order component. Behaviour authors import
|
|
6
|
+
// this type to satisfy the contract; the compiler never imports it (the wrap
|
|
7
|
+
// emission is plain JS — Behaviour Plugin §4).
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,+CAA+C"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/** A user-action boundary event — name + payload + body duration (§3). */
|
|
2
|
+
export interface ActionEvent {
|
|
3
|
+
type: "action";
|
|
4
|
+
name: string;
|
|
5
|
+
/** The call arguments — or the sentinel `["[redacted]"]` when payload redaction fires (§5). */
|
|
6
|
+
payload: unknown[];
|
|
7
|
+
/** Machine-readable redaction signal (§3, v1.2). Present only when redaction fired — never `false`. */
|
|
8
|
+
payloadRedacted?: true;
|
|
9
|
+
componentId: string;
|
|
10
|
+
timestamp: number;
|
|
11
|
+
/** ms spent in the action body; filled by the post-body `snapshot(_, t0)` call. */
|
|
12
|
+
duration: number;
|
|
13
|
+
}
|
|
14
|
+
/** A post-action state capture; PII fields are excluded before it lands (§3 / RLIM-01). */
|
|
15
|
+
export interface StateSnapshotEvent {
|
|
16
|
+
type: "state_snapshot";
|
|
17
|
+
componentId: string;
|
|
18
|
+
/** Full state on a keyframe; ONLY the changed keys on a delta (v1.6 — §3). */
|
|
19
|
+
state: Record<string, unknown>;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
/** v1.6: present = a fold-start point (full state); absent = a delta. */
|
|
22
|
+
keyframe?: true;
|
|
23
|
+
}
|
|
24
|
+
/** A resource lifecycle transition (§3). Stage 1 records `pending`/`resolved` (§4.3 rule 5). */
|
|
25
|
+
export interface ResourceEvent {
|
|
26
|
+
type: "resource";
|
|
27
|
+
name: string;
|
|
28
|
+
status: "pending" | "resolved" | "rejected";
|
|
29
|
+
data?: unknown;
|
|
30
|
+
error?: string;
|
|
31
|
+
componentId: string;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
}
|
|
34
|
+
/** A component mount/unmount bracket (§3). */
|
|
35
|
+
export interface MountEvent {
|
|
36
|
+
type: "mount";
|
|
37
|
+
componentId: string;
|
|
38
|
+
phase: "mount" | "unmount";
|
|
39
|
+
timestamp: number;
|
|
40
|
+
}
|
|
41
|
+
/** v1.5 — the rate guard's honest marker: N events were dropped before this point (§5). */
|
|
42
|
+
export interface GapEvent {
|
|
43
|
+
type: "gap";
|
|
44
|
+
/** The instance whose event tripped the guard. */
|
|
45
|
+
componentId: string;
|
|
46
|
+
/** Events dropped since the budget was exceeded. */
|
|
47
|
+
dropped: number;
|
|
48
|
+
/** When capacity returned. */
|
|
49
|
+
timestamp: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A command-transaction marker (forms / `command` primitive). NON-FOLDING by
|
|
53
|
+
* design: `ReplayPlayer.statesAt` folds only `state_snapshot`, so an "optimistic"
|
|
54
|
+
* mark is never returned as committed state — scrub/re-drive can't land on the
|
|
55
|
+
* optimistic transient. A "committed"/"rolledback" mark is emitted ALONGSIDE a
|
|
56
|
+
* real `state_snapshot` (the settle), which IS folded. New event type; old
|
|
57
|
+
* players ignore it (§3 forward-compat) — NO format-version bump.
|
|
58
|
+
*/
|
|
59
|
+
export interface TxMarkEvent {
|
|
60
|
+
type: "tx_mark";
|
|
61
|
+
componentId: string;
|
|
62
|
+
/** Groups the marks of one transaction (begin → optimistic → committed|rolledback). */
|
|
63
|
+
txId: string;
|
|
64
|
+
phase: "optimistic" | "committed" | "rolledback";
|
|
65
|
+
/** The optimistic delta (mark) or the settled state (commit/rollback), PII-filtered. */
|
|
66
|
+
state: Record<string, unknown>;
|
|
67
|
+
timestamp: number;
|
|
68
|
+
}
|
|
69
|
+
/** The recorded event stream union (§3). Unknown types must be IGNORED by players (§3 forward-compat). */
|
|
70
|
+
export type ReplayEvent = ActionEvent | StateSnapshotEvent | ResourceEvent | MountEvent | GapEvent | TxMarkEvent;
|
|
71
|
+
/** A finalized, serializable session — the upload/inspection unit (§3). */
|
|
72
|
+
export interface SessionBundle {
|
|
73
|
+
/** "2.1" = delta-aware (v1.6); players read "2.0" as all-keyframes. */
|
|
74
|
+
version: "2.0" | "2.1";
|
|
75
|
+
mode: "state-snapshot";
|
|
76
|
+
startTime: number;
|
|
77
|
+
duration: number;
|
|
78
|
+
sessionId: string;
|
|
79
|
+
/** Static component names that emitted into the session (no `#instance` suffix). */
|
|
80
|
+
components: string[];
|
|
81
|
+
events: ReplayEvent[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The live-streaming tap (§5, v1.3). `event` fires synchronously from the emit
|
|
85
|
+
* path — post-redaction, after the ring push — only while enabled; `finalize?`
|
|
86
|
+
* fires when `finalizeReplay()` produces a bundle. Transport concerns (WS
|
|
87
|
+
* framing, seq, beacon) are user-space code, never the runtime's.
|
|
88
|
+
*/
|
|
89
|
+
export interface ReplaySink {
|
|
90
|
+
/** Every recorded event, post-redaction, in recording order. `session` identity is stable per session; `meta` is the §5 v1.7 label set (never in the bundle). */
|
|
91
|
+
event(e: ReplayEvent, session: {
|
|
92
|
+
sessionId: string;
|
|
93
|
+
startTime: number;
|
|
94
|
+
meta?: Readonly<Record<string, string>>;
|
|
95
|
+
}): void;
|
|
96
|
+
/** End-of-session signal; never called on the disabled/null path. */
|
|
97
|
+
finalize?(bundle: SessionBundle): void;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Enable/configure session recording (Replay spec §5). `enabled` defaults to
|
|
101
|
+
* `false` — keep it off in production unless behind a sampling flag or a
|
|
102
|
+
* "report a bug" action. v1.5 adds the recording controls: exclusion
|
|
103
|
+
* (`excludeActions`/`excludeComponents`/`includeStateKeys`), coalescing
|
|
104
|
+
* (`coalesceMs`), session sampling (`sample`), and the per-second rate guard
|
|
105
|
+
* (`maxEventsPerSecond` → `gap` events).
|
|
106
|
+
*/
|
|
107
|
+
export declare const configureReplay: (opts: {
|
|
108
|
+
enabled?: boolean;
|
|
109
|
+
redactKeys?: readonly string[];
|
|
110
|
+
maxEvents?: number;
|
|
111
|
+
sink?: ReplaySink;
|
|
112
|
+
excludeActions?: readonly string[];
|
|
113
|
+
excludeComponents?: readonly string[];
|
|
114
|
+
includeStateKeys?: readonly string[];
|
|
115
|
+
coalesceMs?: number;
|
|
116
|
+
sample?: number;
|
|
117
|
+
maxEventsPerSecond?: number;
|
|
118
|
+
keyframeEvery?: number;
|
|
119
|
+
meta?: Readonly<Record<string, string>>;
|
|
120
|
+
}) => void;
|
|
121
|
+
/** A mounted instance's registered setters, keyed by state name (§4.3 rule 1). */
|
|
122
|
+
type SetterMap = Record<string, (value: unknown) => void>;
|
|
123
|
+
/**
|
|
124
|
+
* Suspend recording while a replay is being driven (§5). Without the gate,
|
|
125
|
+
* driving setters would pollute a session with feedback events — the driven
|
|
126
|
+
* state fires the per-resource status effects. Explicit pair: the mode
|
|
127
|
+
* outlives a single drive call while the user scrubs.
|
|
128
|
+
*/
|
|
129
|
+
export declare const enterReplayMode: () => void;
|
|
130
|
+
/** Resume recording after a replay drive (§5). */
|
|
131
|
+
export declare const exitReplayMode: () => void;
|
|
132
|
+
/**
|
|
133
|
+
* Streamed-mode ring trimming (§5 v1.6 — Stage R2). The TRANSPORT calls this
|
|
134
|
+
* with a durability watermark when the server acks: events at or below the
|
|
135
|
+
* watermark are dropped from the local ring, EXCEPT the newest keyframe per
|
|
136
|
+
* instance ≤ the watermark is retained as the local fold-start. An instance
|
|
137
|
+
* with no keyframe at/below the watermark keeps its oldest in-ring keyframe
|
|
138
|
+
* (above it) untrimmed naturally — its tail-start (C2). `finalizeReplay()`
|
|
139
|
+
* afterwards returns the TAIL bundle; the server is the durable store. The
|
|
140
|
+
* runtime stays ack-agnostic: this is a timestamp, never protocol detail.
|
|
141
|
+
*/
|
|
142
|
+
export declare const acknowledgeReplay: (uptoTimestamp: number) => void;
|
|
143
|
+
/**
|
|
144
|
+
* Drive every currently mounted instance of `componentName` to `state` through
|
|
145
|
+
* its registered setters (§5). Keys without a registered setter are ignored
|
|
146
|
+
* (cross-version bundles degrade gracefully); React 19 auto-batches the set
|
|
147
|
+
* calls into one re-render. Returns the number of instances driven.
|
|
148
|
+
*
|
|
149
|
+
* Per-key setter-drift warn (B4 §5): when a MOUNTED instance has no setter for
|
|
150
|
+
* a bundle key, the key silently won't re-drive — the recorded session is from a
|
|
151
|
+
* different component shape (renamed/removed `state`). We surface that per (component,
|
|
152
|
+
* key) once per session, dev-only. The whole-component zero-drive case is already
|
|
153
|
+
* surfaced by the caller via the returned count (timeTravel.ts), so this catches the
|
|
154
|
+
* partial-drift case: the component drives but a SUBSET of its keys have no setter.
|
|
155
|
+
*/
|
|
156
|
+
export declare const applyReplayState: (state: Record<string, unknown>, componentName: string) => number;
|
|
157
|
+
/** The per-component channel the compiler-emitted preamble binds as `__replay` (§4.1). */
|
|
158
|
+
export interface ReplayChannel {
|
|
159
|
+
/**
|
|
160
|
+
* Emit a `mount` event (driven by the emitted mount `useEffect`). `setters`
|
|
161
|
+
* is the compiler-emitted state→setter map (§4.3 rule 1, v1.4) — registering
|
|
162
|
+
* it makes the instance driveable by `applyReplayState`; omitting it is legal
|
|
163
|
+
* (a non-driveable instance).
|
|
164
|
+
*/
|
|
165
|
+
mount(setters?: SetterMap): void;
|
|
166
|
+
/** Emit an `unmount` event (the emitted effect's teardown) and deregister the instance. */
|
|
167
|
+
unmount(): void;
|
|
168
|
+
/**
|
|
169
|
+
* Emit an `action` event before the user body runs. `writes` is the action's
|
|
170
|
+
* compiler-emitted straight-line write-set (state-writers only — §4.3 rule 2);
|
|
171
|
+
* when it intersects `redactKeys` the payload is recorded as `["[redacted]"]`
|
|
172
|
+
* with `payloadRedacted: true` (§5).
|
|
173
|
+
*/
|
|
174
|
+
action(name: string, payload: unknown[], writes?: readonly string[]): void;
|
|
175
|
+
/** Emit a post-body `state_snapshot` and backfill the preceding action's duration (`t0` = pre-body `performance.now()`). */
|
|
176
|
+
snapshot(state: Record<string, unknown>, t0: number): void;
|
|
177
|
+
/** Emit a `resource` status transition. */
|
|
178
|
+
resource(name: string, status: "pending" | "resolved" | "rejected"): void;
|
|
179
|
+
/**
|
|
180
|
+
* Begin a command transaction (forms / `command` primitive). Records the
|
|
181
|
+
* invocation as an `action` event and returns a handle: `mark` records an
|
|
182
|
+
* optimistic apply as a NON-FOLDING `tx_mark` (never a snapshot); `commit` /
|
|
183
|
+
* `rollback` settle it as ONE recorded unit (a `tx_mark` + a real
|
|
184
|
+
* `state_snapshot`). The optimistic transient therefore never folds — only the
|
|
185
|
+
* settle does. `base` is the pre-transaction filtered state (informational).
|
|
186
|
+
*/
|
|
187
|
+
begin(name: string, payload: unknown[], base: Record<string, unknown>): CommandTransaction;
|
|
188
|
+
}
|
|
189
|
+
/** Handle for a command transaction — see `ReplayChannel.begin`. */
|
|
190
|
+
export interface CommandTransaction {
|
|
191
|
+
/** Optimistic apply — recorded as a non-folding `tx_mark`; never a `state_snapshot`. */
|
|
192
|
+
mark(state: Record<string, unknown>): void;
|
|
193
|
+
/** Settle success — `tx_mark` (committed) + a `state_snapshot` at the settled state (ONE undo/replay unit). */
|
|
194
|
+
commit(state: Record<string, unknown>): void;
|
|
195
|
+
/** Settle failure — `tx_mark` (rolledback) + a `state_snapshot` at base (empty delta → records nothing). */
|
|
196
|
+
rollback(state: Record<string, unknown>): void;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Create a replay channel bound to a freshly-minted `Name#N` instance id — the
|
|
200
|
+
* non-hook primitive `useReplayChannel` wraps. Useful for imperative/non-React
|
|
201
|
+
* contexts and for testing the recording pieces without a renderer.
|
|
202
|
+
*/
|
|
203
|
+
export declare const createReplayChannel: (componentName: string) => ReplayChannel;
|
|
204
|
+
/**
|
|
205
|
+
* Bind a per-instance replay channel (Replay spec §4.1). The compiler emits
|
|
206
|
+
* `const __replay = useReplayChannel("<ComponentName>")`; the runtime mints the
|
|
207
|
+
* stable `Name#N` instance id (the compiler never emits the instance suffix —
|
|
208
|
+
* §4.3 rule 1). The channel is created once per mounted instance (`useRef`), so
|
|
209
|
+
* the mount/unmount `useEffect` (emitted with `[]` deps) captures a stable handle.
|
|
210
|
+
*/
|
|
211
|
+
export declare const useReplayChannel: (componentName: string) => ReplayChannel;
|
|
212
|
+
/**
|
|
213
|
+
* Finalize the active session into a `SessionBundle` for upload/inspection
|
|
214
|
+
* (Replay spec §2/§5), then end it. Returns `null` when recording is disabled or
|
|
215
|
+
* no session was started — the documented "disabled = no bundle" contract
|
|
216
|
+
* (§8, RP-05). User-callable from `cleanup { … }` or a "report a bug" handler.
|
|
217
|
+
*/
|
|
218
|
+
export declare const finalizeReplay: () => Promise<SessionBundle | null>;
|
|
219
|
+
/** A plain-React value to register with the active session (§6). `redact` excludes it from the bundle. */
|
|
220
|
+
export interface ReplayCaptureField {
|
|
221
|
+
name: string;
|
|
222
|
+
value: unknown;
|
|
223
|
+
redact?: boolean;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Register plain-React state (held outside the DSL) with the active session so
|
|
227
|
+
* it appears in snapshots (Replay spec §6). Ordinary user-called hook code built
|
|
228
|
+
* from `useEffect` — emits a `state_snapshot` of the non-redacted fields whenever
|
|
229
|
+
* a captured value changes (no-op while recording is disabled). Fields marked
|
|
230
|
+
* `redact` (or matching `redactKeys`) are excluded.
|
|
231
|
+
*/
|
|
232
|
+
export declare const useReplayCapture: (fields: readonly ReplayCaptureField[]) => void;
|
|
233
|
+
/**
|
|
234
|
+
* Identity HOF kept for type-level `uses` resolution. `uses replayable` is
|
|
235
|
+
* compiler-native (inner-body emission — Replay spec §4), so this wrapper is NOT
|
|
236
|
+
* applied to the component; the real runtime is `useReplayChannel` above.
|
|
237
|
+
*/
|
|
238
|
+
export declare const replayable: <T>(component: T) => T;
|
|
239
|
+
export default replayable;
|
|
240
|
+
//# sourceMappingURL=replayable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replayable.d.ts","sourceRoot":"","sources":["../src/replayable.ts"],"names":[],"mappings":"AAuBA,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,+FAA+F;IAC/F,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,uGAAuG;IACvG,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,2FAA2F;AAC3F,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB;AAED,gGAAgG;AAChG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,CAAA;IACX,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,CAAA;IAChD,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,0GAA0G;AAC1G,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,kBAAkB,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEhH,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,EAAE,KAAK,GAAG,KAAK,CAAA;IACtB,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAQD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,iKAAiK;IACjK,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;IACvH,qEAAqE;IACrE,QAAQ,CAAC,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;CACvC;AAsID;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACxC,KAAG,IA0CH,CAAA;AAQD,kFAAkF;AAClF,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;AAMzD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,IAElC,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,cAAc,QAAO,IAEjC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,KAAG,IAgBzD,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,eAAe,MAAM,KACpB,MAYF,CAAA;AA0PD,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAChC,2FAA2F;IAC3F,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC1E,4HAA4H;IAC5H,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAA;IACzE;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAA;CAC3F;AAED,oEAAoE;AACpE,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC1C,+GAA+G;IAC/G,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5C,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC/C;AA6MD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,eAAe,MAAM,KAAG,aACD,CAAA;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,eAAe,MAAM,KAAG,aAIxD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,aAAa,GAAG,IAAI,CA2BnE,CAAA;AAED,0GAA0G;AAC1G,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,kBAAkB,EAAE,KAAG,IAiBxE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,WAAW,CAAC,KAAG,CAAc,CAAA;AAC3D,eAAe,UAAU,CAAA"}
|