@rewindkit/runtime 0.1.0-alpha.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ashastri
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,178 @@
1
+ # @rewindkit/runtime
2
+
3
+ Record Redux actions and state snapshots from your React app — including across
4
+ Module Federation remotes — into a single origin-tagged session, and time-travel
5
+ through them in-page.
6
+
7
+ **What this adds over Redux DevTools:** zero-config injection (coming in the Vite
8
+ plugin), cross-remote Module Federation capture into one session, component render
9
+ instrumentation, configurable redaction, and shareable session bundles. This is not
10
+ a Redux DevTools replacement — it builds on top of Redux's own store, and
11
+ the DevTools remain the right tool for inspecting individual actions and state diffs.
12
+
13
+ > The "compiler" mentioned in some docs is a Vite plugin + Babel/SWC transform, not
14
+ > a DSL compiler. This alpha is **manual wiring** — the zero-config Vite plugin that
15
+ > auto-injects the enhancer and panel is a future release.
16
+
17
+ ## Install
18
+
19
+ ```sh
20
+ npm install @rewindkit/runtime@alpha
21
+ # or
22
+ bun add @rewindkit/runtime@alpha
23
+ ```
24
+
25
+ Peer dependencies: `redux ^5`, `react ^18 || ^19` (react is optional — only needed
26
+ for the `./react` subpath).
27
+
28
+ ## Quickstart
29
+
30
+ ### 1. Add the enhancer and configure recording
31
+
32
+ ```ts
33
+ import { configureStore } from "@reduxjs/toolkit";
34
+ import { replayEnhancer, configureReplay } from "@rewindkit/runtime";
35
+
36
+ export const store = configureStore({
37
+ reducer: {
38
+ orders: ordersReducer,
39
+ trades: tradesReducer,
40
+ positions: positionsReducer,
41
+ watchlist: watchlistReducer,
42
+ },
43
+ // replayEnhancer wraps the store so snapshot-restore round-trips work.
44
+ // Prepend it so it sits closest to the base reducer/dispatch.
45
+ enhancers: (getDefaultEnhancers) =>
46
+ getDefaultEnhancers().prepend(replayEnhancer),
47
+ });
48
+
49
+ // Opt-in recording — OFF by default (privacy-safe).
50
+ const replayHandle = configureReplay({
51
+ store,
52
+ includeStateKeys: ["orders", "trades", "positions", "watchlist"],
53
+ keyframeEvery: 1, // snapshot every action (suitable for low-frequency stores)
54
+ force: true, // enable in dev even though isProd() returns false
55
+ });
56
+
57
+ // Recording does not auto-start. Call start() when ready.
58
+ replayHandle.start();
59
+ ```
60
+
61
+ **Recording is OFF by default.** Nothing is captured until you call
62
+ `configureReplay()` and `start()`. This is intentional — state may contain PII,
63
+ and opt-in is the safe default. See [Privacy & Redaction](#privacy--redaction).
64
+
65
+ ### 2. Time-travel (re-drive)
66
+
67
+ Use the player API to restore the app to any recorded point:
68
+
69
+ ```ts
70
+ import { createPlayer, seek, returnToLive } from "@rewindkit/runtime";
71
+
72
+ const player = createPlayer(bundle); // a SessionBundle from exportBundle()
73
+ seek(player, 5); // jump to event index 5
74
+ returnToLive(); // back to the live store
75
+ ```
76
+
77
+ ### 3. React companion (`./react`)
78
+
79
+ ```ts
80
+ import { useReplayMode } from "@rewindkit/runtime/react";
81
+
82
+ const MyComponent = () => {
83
+ const mode = useReplayMode(); // "live" | "history"
84
+ // Use mode to show replay chrome, disable inputs, etc.
85
+ };
86
+ ```
87
+
88
+ `useReplayMode` is for **rendering UI chrome only** (badges, disabled inputs,
89
+ replay overlays). It must NOT be used to gate side-channel handlers like WebSocket
90
+ `onmessage` callbacks — see the next section.
91
+
92
+ ## Replaying apps with live data
93
+
94
+ If your app has live data feeds (WebSockets, polling, SSE), a naive replay will be
95
+ stomped within a frame as live data overwrites the restored state. You need an
96
+ **app-owned feed gate**:
97
+
98
+ ```ts
99
+ import { getReplayMode } from "@rewindkit/runtime";
100
+
101
+ // In your WebSocket onmessage handler:
102
+ socket.onmessage = (event) => {
103
+ // Read getReplayMode() SYNCHRONOUSLY — not useReplayMode().
104
+ // A React render lags the event loop, so useReplayMode() can read stale "live"
105
+ // and let a tick stomp the re-driven state.
106
+ if (getReplayMode() === "history") return;
107
+
108
+ // Process the tick normally...
109
+ dispatch(updateQuote(JSON.parse(event.data)));
110
+ };
111
+ ```
112
+
113
+ **Why `getReplayMode()` and not `useReplayMode()`?** The hook is a React render
114
+ subscription — it lags the event loop by a frame. A side-channel handler that reads
115
+ the hook's value can see stale `"live"` after a seek and let a live tick overwrite
116
+ restored history. `getReplayMode()` reads the current value synchronously and is the
117
+ correct gate for non-React code paths.
118
+
119
+ ## Privacy & Redaction
120
+
121
+ RewindKit captures Redux state, which may contain PII. The privacy posture:
122
+
123
+ - **Client-only by default.** No data leaves the browser unless you add a transport.
124
+ - **Allowlist-first.** Use `includeStateKeys` to capture only the slices you intend.
125
+ In production, an allowlist is required — omitting it logs a warning.
126
+ - **Redaction.** Use `redactKeys` to mask sensitive fields before capture.
127
+ - **No tokens in web storage.** Session bundles never persist auth tokens.
128
+
129
+ See [PRIVACY.md](../../docs/PRIVACY.md) for the full privacy posture.
130
+
131
+ ## Session bundles (export / import)
132
+
133
+ ```ts
134
+ import { exportBundle, importBundle } from "@rewindkit/runtime";
135
+
136
+ // Export the current session
137
+ const json = exportBundle();
138
+
139
+ // Import a shared session
140
+ const bundle = importBundle(jsonString);
141
+ const player = createPlayer(bundle);
142
+ ```
143
+
144
+ Bundles are JSON-serializable and can be saved to a file or shared between
145
+ developers. They contain recorded actions, state snapshots, and metadata — but
146
+ never auth tokens or fields matched by `redactKeys`.
147
+
148
+ ## ESM only
149
+
150
+ This package is ESM-only (`"type": "module"`). It works with Vite, esbuild, and
151
+ any bundler that supports ESM. A `require()` call will get `ERR_REQUIRE_ESM` —
152
+ this is intentional to prevent the dual-package hazard (two recorder instances).
153
+
154
+ ## API overview
155
+
156
+ ### Core (`@rewindkit/runtime`)
157
+
158
+ | Export | Description |
159
+ |---|---|
160
+ | `replayEnhancer` | Redux store enhancer — prepend to your enhancers |
161
+ | `configureReplay(opts)` | Configure and return a `ReplayHandle` (start/stop/export) |
162
+ | `registerStore(name, store)` | Register a remote's store (Module Federation) |
163
+ | `createPlayer(bundle)` | Create a player for time-travel |
164
+ | `seek(player, index)` | Jump to an event index |
165
+ | `returnToLive()` | Return to the live store state |
166
+ | `exportBundle()` / `importBundle(json)` | Session bundle I/O |
167
+ | `getReplayMode()` / `subscribeReplayMode()` | Synchronous replay mode signal |
168
+ | `VERSION`, `SCHEMA_VERSION`, `DELTA_FORMAT_VERSION` | Versioning constants |
169
+
170
+ ### React companion (`@rewindkit/runtime/react`)
171
+
172
+ | Export | Description |
173
+ |---|---|
174
+ | `useReplayMode()` | Hook returning `"live"` or `"history"` (render-only) |
175
+
176
+ ## License
177
+
178
+ [MIT](./LICENSE)
@@ -0,0 +1,8 @@
1
+ import type { SessionBundle } from "./bundle";
2
+ export declare class BundleValidationError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export declare const validateBundle: (b: unknown) => SessionBundle;
6
+ export declare const exportBundle: () => SessionBundle;
7
+ export declare const importBundle: (json: string | SessionBundle) => SessionBundle;
8
+ //# sourceMappingURL=bundle-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-io.d.ts","sourceRoot":"","sources":["../src/bundle-io.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM9C,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,cAAc,MAAO,OAAO,KAAG,aAsB3C,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,aAG/B,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,GAAG,aAAa,KAAG,aAG3D,CAAC"}
@@ -0,0 +1,83 @@
1
+ export type ReplayEventType = "action" | "state_snapshot" | "component_render" | "route" | "feed_message";
2
+ export interface BaseEvent {
3
+ type: ReplayEventType | (string & {});
4
+ tsMs: number;
5
+ origin: "host" | string;
6
+ storeKey: string;
7
+ seq: number;
8
+ }
9
+ export interface ActionEvent extends BaseEvent {
10
+ type: "action";
11
+ action: {
12
+ type: string;
13
+ payload?: unknown;
14
+ };
15
+ }
16
+ export interface StateSnapshotEvent extends BaseEvent {
17
+ type: "state_snapshot";
18
+ kind: "keyframe" | "delta";
19
+ slices: Record<string, unknown>;
20
+ removedSlices?: string[];
21
+ }
22
+ export interface ComponentRenderEvent extends BaseEvent {
23
+ type: "component_render";
24
+ componentId: string;
25
+ props?: Record<string, unknown>;
26
+ }
27
+ export interface RouteEvent extends BaseEvent {
28
+ type: "route";
29
+ path: string;
30
+ search?: string;
31
+ }
32
+ export interface FeedMessageEvent extends BaseEvent {
33
+ type: "feed_message";
34
+ channel: "sow_page" | "tick" | "ack" | "oof";
35
+ topic: string;
36
+ request?: {
37
+ filter?: string;
38
+ orderBy?: string;
39
+ topN?: number;
40
+ skipN?: number;
41
+ };
42
+ rows?: unknown[];
43
+ matched?: number;
44
+ key?: string;
45
+ data?: unknown;
46
+ feedSeq?: number;
47
+ }
48
+ export type ReplayEvent = ActionEvent | StateSnapshotEvent | ComponentRenderEvent | RouteEvent | FeedMessageEvent | BaseEvent;
49
+ export interface RemoteInfo {
50
+ name: string;
51
+ storeKey: string;
52
+ registeredAtMs?: number;
53
+ }
54
+ export interface SessionBundle {
55
+ version: "1.0";
56
+ schemaVersion: number;
57
+ mode: "state-snapshot";
58
+ sessionId: string;
59
+ startTime: number;
60
+ duration: number;
61
+ remotes: RemoteInfo[];
62
+ events: ReplayEvent[];
63
+ }
64
+ export declare const SCHEMA_VERSION = 2;
65
+ export declare const DELTA_FORMAT_VERSION: "1.0";
66
+ export interface RawSnapshot {
67
+ readonly __brand: "raw";
68
+ readonly slices: Record<string, unknown>;
69
+ }
70
+ export interface DisplaySnapshot {
71
+ readonly __brand: "display";
72
+ readonly slices: Record<string, unknown>;
73
+ }
74
+ export interface FeedView {
75
+ rows: unknown[];
76
+ matched: number;
77
+ }
78
+ export interface BundleDiff {
79
+ added: ReplayEvent[];
80
+ removed: ReplayEvent[];
81
+ changedStoreKeys: string[];
82
+ }
83
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Store } from "redux";
2
+ import type { ReplaySink } from "./recorder";
3
+ import type { SessionBundle } from "./bundle";
4
+ export interface ConfigureReplayOptions {
5
+ store?: Store;
6
+ sink?: ReplaySink;
7
+ redactKeys?: string[];
8
+ includeStateKeys?: string[];
9
+ includeFeedTopics?: string[];
10
+ keyframeEvery?: number;
11
+ fullKeyframeRatio?: number;
12
+ sample?: number;
13
+ maxEventsPerSecond?: number;
14
+ origin?: string;
15
+ now?: () => number;
16
+ force?: boolean;
17
+ }
18
+ export interface ReplayHandle {
19
+ start(): void;
20
+ stop(): void;
21
+ isRecording(): boolean;
22
+ getBundle(): SessionBundle;
23
+ }
24
+ export declare const configureReplay: (opts?: ConfigureReplayOptions) => ReplayHandle;
25
+ export declare const registerStore: (name: string, store: Store) => void;
26
+ export declare const unregisterStore: (name: string) => void;
27
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,WAAW,IAAI,OAAO,CAAC;IACvB,SAAS,IAAI,aAAa,CAAC;CAC5B;AAED,eAAO,MAAM,eAAe,UAAU,sBAAsB,KAAQ,YA6CnE,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,MAAM,SAAS,KAAK,KAAG,IAE1D,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,IAE9C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { StoreEnhancer } from "redux";
2
+ export declare const RESTORE_TYPE = "__REPLAYKIT_RESTORE";
3
+ export interface RestoreAction {
4
+ type: typeof RESTORE_TYPE;
5
+ slices: Record<string, unknown>;
6
+ removedSlices?: string[];
7
+ [extra: string]: unknown;
8
+ }
9
+ export declare const replayEnhancer: StoreEnhancer;
10
+ //# sourceMappingURL=enhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhancer.d.ts","sourceRoot":"","sources":["../src/enhancer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAW,aAAa,EAA4C,MAAM,OAAO,CAAC;AAG9F,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,YAAY,CAAC;IAE1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AA+CD,eAAO,MAAM,cAAc,EAAE,aAAyC,CAAC"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare const isProd: () => boolean;
2
+ export declare const warnOnce: (message: string) => void;
3
+ export declare const __resetWarnOnce: () => void;
4
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,QAAO,OAMzB,CAAC;AAKF,eAAO,MAAM,QAAQ,YAAa,MAAM,KAAG,IAM1C,CAAC;AAGF,eAAO,MAAM,eAAe,QAAO,IAElC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare const VERSION = "0.1.0-alpha.1";
2
+ export type { BaseEvent, ActionEvent, StateSnapshotEvent, ComponentRenderEvent, RouteEvent, FeedMessageEvent, ReplayEvent, ReplayEventType, RemoteInfo, SessionBundle, RawSnapshot, DisplaySnapshot, FeedView, BundleDiff, } from "./bundle";
3
+ export { SCHEMA_VERSION, DELTA_FORMAT_VERSION } from "./bundle";
4
+ export { configureReplay, registerStore, unregisterStore } from "./configure";
5
+ export type { ConfigureReplayOptions, ReplayHandle } from "./configure";
6
+ export { replayEnhancer } from "./enhancer";
7
+ export type { ReplaySink } from "./recorder";
8
+ export { getReplayMode, subscribeReplayMode, applyReplayState, seek, returnToLive, } from "./replay";
9
+ export type { ReplayMode } from "./replay";
10
+ export { createPlayer, foldStateAt, foldFeedAt, routeAt, diffBundles } from "./player";
11
+ export type { ReplayPlayer } from "./player";
12
+ export { exportBundle, importBundle } from "./bundle-io";
13
+ export { __redact, serializeForDisplay } from "./redaction";
14
+ export type { RedactOptions, DisplayOptions } from "./redaction";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAGvC,YAAY,EACV,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvF,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}