@wolfcola/devtools-bridge 0.0.0 → 1.0.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/README.md ADDED
@@ -0,0 +1,213 @@
1
+ # @wolfcola/devtools-bridge
2
+
3
+ Opt-in SDK adapter that connects your Ping Identity / ForgeRock application to WolfCola DevTools — either the [browser extension](../devtools-extension) or the [VS Code extension](../vscode-extension). Add it to your app in one line — it is a no-op when the extension is not installed, so it is safe to ship in production builds.
4
+
5
+ ## Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Bridges](#bridges)
9
+ - [DaVinci — `attachDevToolsBridge`](#davinci--attachdevtoolsbridge)
10
+ - [AM Journey — `attachJourneyBridge`](#am-journey--attachjourneybridge)
11
+ - [OIDC / OAuth — `attachOidcBridge`](#oidc--oauth--attachoidcbridge)
12
+ - [Low-level API](#low-level-api)
13
+ - [How it works](#how-it-works)
14
+ - [Safety](#safety)
15
+
16
+ ---
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ pnpm add @wolfcola/devtools-bridge
22
+ ```
23
+
24
+ `effect` is a peer dependency. `@forgerock/davinci-client` is an optional peer dependency required only if you use `attachDevToolsBridge`.
25
+
26
+ ---
27
+
28
+ ## Bridges
29
+
30
+ ### DaVinci — `attachDevToolsBridge`
31
+
32
+ Subscribes to a DaVinci client store and emits `sdk:node-change` on every node status transition, plus `session:cookie` / `session:storage` diffs after each transition.
33
+
34
+ ```ts
35
+ import { davinci } from '@forgerock/davinci-client';
36
+ import { attachDevToolsBridge } from '@wolfcola/devtools-bridge';
37
+
38
+ const client = await davinci({ config });
39
+
40
+ // Pass config as the second argument — emitted once as sdk:config on the first transition
41
+ const bridge = attachDevToolsBridge(client, config);
42
+
43
+ // Unsubscribe when the component unmounts
44
+ bridge.detach();
45
+ ```
46
+
47
+ **What it captures per node transition:**
48
+
49
+ | Field | Source |
50
+ | ---------------- | --------------------------------------------- |
51
+ | `nodeStatus` | DaVinci node `.status` |
52
+ | `previousStatus` | Previous status (tracked locally) |
53
+ | `interactionId` | `server.interactionId` |
54
+ | `nodeName` | `client.name` |
55
+ | `collectors` | `client.collectors` (full objects) |
56
+ | `error` | `error.code / message / type` |
57
+ | `session` | `server.session` (DaVinci session token) |
58
+ | `responseBody` | Full DaVinci server response (from RTK cache) |
59
+
60
+ The bridge only emits when `nodeStatus` actually changes, so rapid store updates that don't advance the node do not generate noise.
61
+
62
+ ---
63
+
64
+ ### AM Journey — `attachJourneyBridge`
65
+
66
+ Subscribes to a Journey RTK store and emits `sdk:journey-step` for each mutation that settles (`fulfilled` or `rejected`). Each event carries the full AM step response including all callbacks with their `input`/`output` arrays.
67
+
68
+ ```ts
69
+ import { journey } from '@forgerock/journey-client'; // your RTK-based journey client
70
+ import { attachJourneyBridge } from '@wolfcola/devtools-bridge';
71
+
72
+ const client = await journey({ config });
73
+
74
+ attachJourneyBridge(client, config);
75
+ ```
76
+
77
+ **`JourneySubscribable` interface** — any object with this shape works:
78
+
79
+ ```ts
80
+ interface JourneySubscribable {
81
+ subscribe: (listener: () => void) => () => void;
82
+ getState: () => unknown; // must expose { journeyReducer: { mutations: Record<string, MutationEntry> } }
83
+ }
84
+ ```
85
+
86
+ **Emitted events by step type:**
87
+
88
+ | `stepType` | When | Notable fields |
89
+ | -------------- | --------------------------------- | ------------------------------------------ |
90
+ | `Step` | AM returns `authId` | `callbacks`, `authId`, `stage`, `header` |
91
+ | `LoginSuccess` | AM returns `tokenId` | `tokenId`, `successUrl` |
92
+ | `LoginFailure` | AM returns an error / RTK rejects | `errorCode`, `errorMessage`, `errorReason` |
93
+
94
+ ---
95
+
96
+ ### OIDC / OAuth — `attachOidcBridge`
97
+
98
+ Subscribes to an OIDC client RTK store and emits `sdk:oidc-state` for each settled mutation. Maps RTK endpoint names to human-readable phases.
99
+
100
+ ```ts
101
+ import { oidcClient } from '@forgerock/oidc-client'; // your RTK-based OIDC client
102
+ import { attachOidcBridge } from '@wolfcola/devtools-bridge';
103
+
104
+ const client = oidcClient({ config });
105
+
106
+ attachOidcBridge(client, config);
107
+ ```
108
+
109
+ **`OidcSubscribable` interface:**
110
+
111
+ ```ts
112
+ interface OidcSubscribable {
113
+ subscribe: (listener: () => void) => () => void;
114
+ getState: () => unknown; // must expose { oidc: { mutations: Record<string, MutationEntry> } }
115
+ }
116
+ ```
117
+
118
+ **Endpoint → phase mapping:**
119
+
120
+ | RTK endpoint name | Emitted phase |
121
+ | ----------------- | ------------- |
122
+ | `authorizeFetch` | `authorize` |
123
+ | `authorizeIframe` | `authorize` |
124
+ | `exchange` | `exchange` |
125
+ | `revoke` | `revoke` |
126
+ | `userInfo` | `userinfo` |
127
+ | `endSession` | `logout` |
128
+
129
+ Pass `config.clientId` to surface it in the extension's node detail card:
130
+
131
+ ```ts
132
+ attachOidcBridge(client, { clientId: 'my-spa-client', ...rest });
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Low-level API
138
+
139
+ If you need to emit events from outside a supported client, use the primitives directly.
140
+
141
+ ```ts
142
+ import { emitAuthEvent, emitConfigEvent, DEVTOOLS_EVENT_NAME } from '@wolfcola/devtools-bridge';
143
+
144
+ emitAuthEvent({
145
+ id: crypto.randomUUID(),
146
+ timestamp: performance.now(),
147
+ type: 'sdk:node-change',
148
+ source: 'sdk',
149
+ flowId: null,
150
+ causedBy: null,
151
+ data: { _tag: 'sdk', nodeStatus: 'next' },
152
+ flags: { isCors: false, isError: false, isAuthRelated: true },
153
+ });
154
+
155
+ emitConfigEvent({ clientId: 'my-app', environment: 'dev' });
156
+ ```
157
+
158
+ Both functions dispatch a `CustomEvent` named `DEVTOOLS_EVENT_NAME` (`'pingDevtools'`) on `window`. The content script picks this up and forwards it to the extension service worker.
159
+
160
+ ---
161
+
162
+ ## How it works
163
+
164
+ ```
165
+ Your app
166
+ ├── attachDevToolsBridge(davinciClient) ─┐
167
+ ├── attachJourneyBridge(journeyClient) ─┤─ emitAuthEvent()
168
+ └── attachOidcBridge(oidcClient) ─┘
169
+
170
+ │ window.dispatchEvent(new CustomEvent('pingDevtools', { detail: event }))
171
+
172
+ content-script.js
173
+
174
+ │ chrome.runtime.sendMessage({ type: 'SDK_EVENT', payload: event })
175
+
176
+ service-worker.ts ──(validates via AuthEventSchema)──▶ EventStore
177
+
178
+ │ chrome.runtime.sendMessage({ type: 'EVENTS_UPDATED' })
179
+
180
+ panel (Elm) ── Timeline view + Flow view
181
+
182
+ ── OR (VS Code extension) ──
183
+
184
+ Your app
185
+ └── emitAuthEvent()
186
+
187
+ │ window.postMessage({ type: '__pingDevtools', ... })
188
+
189
+ CDP-injected script (Page.addScriptToEvaluateOnNewDocument)
190
+
191
+ │ Runtime.bindingCalled('__wolfcolaBridge', payload)
192
+
193
+ VS Code extension host ──▶ TreeView + WebView (Elm)
194
+ ```
195
+
196
+ The VS Code extension captures SDK events via a CDP-injected script that listens for the same `__pingDevtools` postMessage — no browser extension needed.
197
+
198
+ Each bridge function:
199
+
200
+ 1. Subscribes to the client store
201
+ 2. Validates the current state with an Effect Schema decoder (returns `Option.none` on mismatch — never throws)
202
+ 3. Deduplicates by tracking already-emitted request IDs in a `Set`
203
+ 4. Trims that `Set` to only IDs still present in the store, bounding memory use
204
+ 5. Dispatches the event only when `window.__PING_DEVTOOLS_EXTENSION__` is present
205
+
206
+ ---
207
+
208
+ ## Safety
209
+
210
+ - **No-op without the extension** — all bridges check for `window.__PING_DEVTOOLS_EXTENSION__` before dispatching. If the marker is absent, nothing is emitted.
211
+ - **No-op in SSR / Node** — all bridges return `{ detach: () => undefined }` immediately when `typeof window === 'undefined'`.
212
+ - **Tree-shakeable** — `sideEffects: false` in `package.json`; unused bridges are eliminated by your bundler.
213
+ - **No sensitive data leakage** — the bridge never reads passwords or form values; it only observes the client's Redux/RTK state.
@@ -1,9 +1,6 @@
1
- export { attachDevToolsBridge } from './lib/bridge.js';
2
- export type { BridgeHandle } from './lib/bridge.js';
1
+ export { attachDaVinciBridge } from './lib/davinci-bridge.js';
3
2
  export { attachJourneyBridge } from './lib/journey-bridge.js';
4
- export type { JourneyBridgeHandle } from './lib/journey-bridge.js';
5
3
  export { attachOidcBridge } from './lib/oidc-bridge.js';
6
- export type { OidcBridgeHandle } from './lib/oidc-bridge.js';
7
- export { DEVTOOLS_EVENT_NAME, emitAuthEvent, emitConfigEvent, configureDevtools, } from './lib/emit.js';
8
- export type { DevtoolsOptions } from './lib/emit.js';
4
+ export { DEVTOOLS_EVENT_NAME, emitAuthEvent, emitConfigEvent } from './lib/emit.js';
5
+ export type { BridgeHandle, DevtoolsOptions } from './lib/emit.js';
9
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { attachDevToolsBridge } from './lib/bridge.js';
1
+ export { attachDaVinciBridge } from './lib/davinci-bridge.js';
2
2
  export { attachJourneyBridge } from './lib/journey-bridge.js';
3
3
  export { attachOidcBridge } from './lib/oidc-bridge.js';
4
- export { DEVTOOLS_EVENT_NAME, emitAuthEvent, emitConfigEvent, configureDevtools, } from './lib/emit.js';
4
+ export { DEVTOOLS_EVENT_NAME, emitAuthEvent, emitConfigEvent } from './lib/emit.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Schema } from 'effect';
2
2
  import type { SdkData } from '@wolfcola/devtools-types';
3
- import type { DevtoolsOptions } from './emit.js';
3
+ import type { BridgeHandle, DevtoolsOptions } from './emit.js';
4
4
  interface Subscribable {
5
5
  subscribe: (listener: () => void) => () => void;
6
6
  getNode: () => unknown;
@@ -8,9 +8,6 @@ interface Subscribable {
8
8
  getCache: (requestId: string) => unknown;
9
9
  };
10
10
  }
11
- export interface BridgeHandle {
12
- detach: () => void;
13
- }
14
11
  export interface SdkConfig {
15
12
  clientId?: string;
16
13
  redirectUri?: string;
@@ -57,6 +54,6 @@ export declare function nodeToSdkData(node: DaVinciNode, previousStatus: string
57
54
  *
58
55
  * Returns a no-op handle when run outside a browser. Always call `detach()` on cleanup.
59
56
  */
60
- export declare function attachDevToolsBridge(client: Subscribable, config?: object, devtoolsOptions?: DevtoolsOptions): BridgeHandle;
57
+ export declare function attachDaVinciBridge(client: Subscribable, config?: object, devtoolsOptions?: DevtoolsOptions): BridgeHandle;
61
58
  export {};
62
- //# sourceMappingURL=bridge.d.ts.map
59
+ //# sourceMappingURL=davinci-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"davinci-bridge.d.ts","sourceRoot":"","sources":["../../../src/lib/davinci-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE/D,UAAU,YAAY;IACpB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE;QACN,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBrB,CAAC;AAEH,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAQhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAmBT;AA2GD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,eAAe,GAChC,YAAY,CA8Cd"}
@@ -1,6 +1,6 @@
1
1
  import { Schema, Option, pipe } from 'effect';
2
2
  import { SdkErrorSchema, SdkAuthorizationSchema } from '@wolfcola/devtools-types';
3
- import { emitAuthEvent, emitConfigEvent, configureDevtools } from './emit.js';
3
+ import { emitAuthEvent, emitConfigEvent } from './emit.js';
4
4
  // ---------------------------------------------------------------------------
5
5
  // DaVinci node schema — local structural contract, not a public type
6
6
  // ---------------------------------------------------------------------------
@@ -49,14 +49,26 @@ export function nodeToSdkData(node, previousStatus, responseBody) {
49
49
  }
50
50
  function snapshotSession() {
51
51
  const storage = {};
52
- for (let i = 0; i < localStorage.length; i++) {
53
- const k = localStorage.key(i);
54
- if (k)
55
- storage[k] = localStorage.getItem(k) ?? '';
52
+ try {
53
+ for (let i = 0; i < localStorage.length; i++) {
54
+ const k = localStorage.key(i);
55
+ if (k)
56
+ storage[k] = localStorage.getItem(k) ?? '';
57
+ }
58
+ }
59
+ catch {
60
+ // localStorage access blocked (e.g. privacy mode, opaque origin)
61
+ }
62
+ let cookie = '';
63
+ try {
64
+ cookie = document.cookie;
56
65
  }
57
- return { cookie: document.cookie, storage };
66
+ catch {
67
+ // cookie access blocked
68
+ }
69
+ return { cookie, storage };
58
70
  }
59
- function emitSessionDiffs(before, after, flowId) {
71
+ function emitSessionDiffs(before, after, flowId, options) {
60
72
  if (before.cookie !== after.cookie) {
61
73
  emitAuthEvent({
62
74
  id: crypto.randomUUID(),
@@ -72,7 +84,7 @@ function emitSessionDiffs(before, after, flowId) {
72
84
  after: after.cookie || undefined,
73
85
  },
74
86
  flags: { isCors: false, isError: false, isAuthRelated: true },
75
- });
87
+ }, options);
76
88
  }
77
89
  const allKeys = new Set([...Object.keys(before.storage), ...Object.keys(after.storage)]);
78
90
  for (const key of allKeys) {
@@ -88,14 +100,14 @@ function emitSessionDiffs(before, after, flowId) {
88
100
  causedBy: null,
89
101
  data: { _tag: 'session', key, before: beforeVal, after: afterVal },
90
102
  flags: { isCors: false, isError: false, isAuthRelated: true },
91
- });
103
+ }, options);
92
104
  }
93
105
  }
94
106
  }
95
107
  // ---------------------------------------------------------------------------
96
108
  // Event builders
97
109
  // ---------------------------------------------------------------------------
98
- function emitNodeChange(data) {
110
+ function emitNodeChange(data, options) {
99
111
  emitAuthEvent({
100
112
  id: crypto.randomUUID(),
101
113
  timestamp: performance.now(),
@@ -109,7 +121,7 @@ function emitNodeChange(data) {
109
121
  isError: data.nodeStatus === 'error' || data.nodeStatus === 'failure',
110
122
  isAuthRelated: true,
111
123
  },
112
- });
124
+ }, options);
113
125
  }
114
126
  // ---------------------------------------------------------------------------
115
127
  // Bridge
@@ -123,13 +135,10 @@ function emitNodeChange(data) {
123
135
  *
124
136
  * Returns a no-op handle when run outside a browser. Always call `detach()` on cleanup.
125
137
  */
126
- export function attachDevToolsBridge(client, config, devtoolsOptions) {
138
+ export function attachDaVinciBridge(client, config, devtoolsOptions) {
127
139
  if (typeof window === 'undefined') {
128
140
  return { detach: () => undefined };
129
141
  }
130
- if (devtoolsOptions) {
131
- configureDevtools(devtoolsOptions);
132
- }
133
142
  let previousStatus;
134
143
  let configEmitted = false;
135
144
  let lastSnapshot = snapshotSession();
@@ -147,18 +156,18 @@ export function attachDevToolsBridge(client, config, devtoolsOptions) {
147
156
  }), Option.filter(() => '__PING_DEVTOOLS_EXTENSION__' in window), Option.map((data) => {
148
157
  if (config && !configEmitted) {
149
158
  configEmitted = true;
150
- emitConfigEvent(config);
159
+ emitConfigEvent(config, devtoolsOptions);
151
160
  }
152
- emitNodeChange(data);
161
+ emitNodeChange(data, devtoolsOptions);
153
162
  // Snapshot before deferring so mutations in the same call stack are captured.
154
163
  const snapshotBefore = lastSnapshot;
155
164
  setTimeout(() => {
156
165
  const snapshotAfter = snapshotSession();
157
- emitSessionDiffs(snapshotBefore, snapshotAfter, data.interactionId ?? null);
166
+ emitSessionDiffs(snapshotBefore, snapshotAfter, data.interactionId ?? null, devtoolsOptions);
158
167
  lastSnapshot = snapshotAfter;
159
168
  }, 0);
160
169
  }));
161
170
  });
162
171
  return { detach: unsubscribe };
163
172
  }
164
- //# sourceMappingURL=bridge.js.map
173
+ //# sourceMappingURL=davinci-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"davinci-bridge.js","sourceRoot":"","sources":["../../../src/lib/davinci-bridge.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,14 @@ export declare const DEVTOOLS_EVENT_NAME = "pingDevtools";
3
3
  export interface DevtoolsOptions {
4
4
  consoleLog?: boolean;
5
5
  }
6
+ export interface BridgeHandle {
7
+ detach: () => void;
8
+ }
6
9
  declare global {
7
10
  interface Window {
8
11
  __PING_DEVTOOLS_STATE__?: AuthEvent[];
9
12
  }
10
13
  }
11
- export declare function configureDevtools(opts: DevtoolsOptions): void;
12
- export declare function emitAuthEvent(event: AuthEvent): void;
13
- export declare function emitConfigEvent(config: object): void;
14
+ export declare function emitAuthEvent(event: AuthEvent, options?: DevtoolsOptions): void;
15
+ export declare function emitConfigEvent(config: object, options?: DevtoolsOptions): void;
14
16
  //# sourceMappingURL=emit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/lib/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,uBAAuB,CAAC,EAAE,SAAS,EAAE,CAAC;KACvC;CACF;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAapD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAWpD"}
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/lib/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,uBAAuB,CAAC,EAAE,SAAS,EAAE,CAAC;KACvC;CACF;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAmB/E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAc/E"}
@@ -1,21 +1,21 @@
1
1
  export const DEVTOOLS_EVENT_NAME = 'pingDevtools';
2
- let options = {};
3
- export function configureDevtools(opts) {
4
- options = opts;
5
- }
6
- export function emitAuthEvent(event) {
2
+ const MAX_STATE_ENTRIES = 500;
3
+ export function emitAuthEvent(event, options) {
7
4
  if (typeof window === 'undefined')
8
5
  return;
9
6
  if (!window.__PING_DEVTOOLS_STATE__) {
10
7
  window.__PING_DEVTOOLS_STATE__ = [];
11
8
  }
12
9
  window.__PING_DEVTOOLS_STATE__.push(event);
13
- if (options.consoleLog) {
10
+ if (window.__PING_DEVTOOLS_STATE__.length > MAX_STATE_ENTRIES) {
11
+ window.__PING_DEVTOOLS_STATE__.splice(0, window.__PING_DEVTOOLS_STATE__.length - MAX_STATE_ENTRIES);
12
+ }
13
+ if (options?.consoleLog) {
14
14
  console.log('[ping-devtools]', event.type, event);
15
15
  }
16
16
  window.dispatchEvent(new CustomEvent(DEVTOOLS_EVENT_NAME, { detail: event }));
17
17
  }
18
- export function emitConfigEvent(config) {
18
+ export function emitConfigEvent(config, options) {
19
19
  emitAuthEvent({
20
20
  id: crypto.randomUUID(),
21
21
  timestamp: performance.now(),
@@ -25,6 +25,6 @@ export function emitConfigEvent(config) {
25
25
  causedBy: null,
26
26
  data: { _tag: 'sdk-config', config },
27
27
  flags: { isCors: false, isError: false, isAuthRelated: true },
28
- });
28
+ }, options);
29
29
  }
30
30
  //# sourceMappingURL=emit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../src/lib/emit.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAYlD,IAAI,OAAO,GAAoB,EAAE,CAAC;AAElC,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpC,MAAM,CAAC,uBAAuB,GAAG,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,aAAa,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KAC9D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../src/lib/emit.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAgBlD,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,aAAa,CAAC,KAAgB,EAAE,OAAyB;IACvE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpC,MAAM,CAAC,uBAAuB,GAAG,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAC9D,MAAM,CAAC,uBAAuB,CAAC,MAAM,CACnC,CAAC,EACD,MAAM,CAAC,uBAAuB,CAAC,MAAM,GAAG,iBAAiB,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAyB;IACvE,aAAa,CACX;QACE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KAC9D,EACD,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -1,11 +1,8 @@
1
- import type { DevtoolsOptions } from './emit.js';
2
- export interface JourneyBridgeHandle {
3
- detach: () => void;
4
- }
1
+ import type { BridgeHandle, DevtoolsOptions } from './emit.js';
5
2
  interface JourneySubscribable {
6
3
  subscribe: (listener: () => void) => () => void;
7
4
  getState: () => unknown;
8
5
  }
9
- export declare function attachJourneyBridge(client: JourneySubscribable, config?: object, devtoolsOptions?: DevtoolsOptions): JourneyBridgeHandle;
6
+ export declare function attachJourneyBridge(client: JourneySubscribable, config?: object, devtoolsOptions?: DevtoolsOptions): BridgeHandle;
10
7
  export {};
11
8
  //# sourceMappingURL=journey-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"journey-bridge.d.ts","sourceRoot":"","sources":["../../../src/lib/journey-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AA0FD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,eAAe,GAChC,mBAAmB,CA+ErB"}
1
+ {"version":3,"file":"journey-bridge.d.ts","sourceRoot":"","sources":["../../../src/lib/journey-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG/D,UAAU,mBAAmB;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AA0FD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,eAAe,GAChC,YAAY,CAiFd"}
@@ -1,5 +1,5 @@
1
1
  import { Schema, Option, pipe } from 'effect';
2
- import { emitAuthEvent, emitConfigEvent, configureDevtools } from './emit.js';
2
+ import { emitAuthEvent, emitConfigEvent } from './emit.js';
3
3
  // ---------------------------------------------------------------------------
4
4
  // Local schemas — structural contracts for RTK Query state, not public types
5
5
  // ---------------------------------------------------------------------------
@@ -79,9 +79,6 @@ export function attachJourneyBridge(client, config, devtoolsOptions) {
79
79
  if (typeof window === 'undefined') {
80
80
  return { detach: () => undefined };
81
81
  }
82
- if (devtoolsOptions) {
83
- configureDevtools(devtoolsOptions);
84
- }
85
82
  let configEmitted = false;
86
83
  let emittedRequests = new Set();
87
84
  const unsubscribe = client.subscribe(() => {
@@ -96,7 +93,7 @@ export function attachJourneyBridge(client, config, devtoolsOptions) {
96
93
  pipe(rawEntry, decodeMutationEntry, Option.filter((entry) => entry.status === 'fulfilled' || entry.status === 'rejected'), Option.map((entry) => {
97
94
  emittedRequests.add(requestId);
98
95
  if (config && !configEmitted) {
99
- emitConfigEvent(config);
96
+ emitConfigEvent(config, devtoolsOptions);
100
97
  configEmitted = true;
101
98
  }
102
99
  if (entry.status === 'fulfilled') {
@@ -116,7 +113,7 @@ export function attachJourneyBridge(client, config, devtoolsOptions) {
116
113
  isError: journeyData.stepType === 'LoginFailure',
117
114
  isAuthRelated: true,
118
115
  },
119
- });
116
+ }, devtoolsOptions);
120
117
  }
121
118
  else {
122
119
  const journeyData = {
@@ -133,7 +130,7 @@ export function attachJourneyBridge(client, config, devtoolsOptions) {
133
130
  causedBy: null,
134
131
  data: journeyData,
135
132
  flags: { isCors: false, isError: true, isAuthRelated: true },
136
- });
133
+ }, devtoolsOptions);
137
134
  }
138
135
  }));
139
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"journey-bridge.js","sourceRoot":"","sources":["../../../src/lib/journey-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journey-bridge.js","sourceRoot":"","sources":["../../../src/lib/journey-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,10 @@
1
- import type { DevtoolsOptions } from './emit.js';
2
- export interface OidcBridgeHandle {
3
- detach: () => void;
4
- }
1
+ import type { BridgeHandle, DevtoolsOptions } from './emit.js';
5
2
  interface OidcSubscribable {
6
3
  subscribe: (listener: () => void) => () => void;
7
4
  getState: () => unknown;
8
5
  }
9
6
  export declare function attachOidcBridge(client: OidcSubscribable, config?: {
10
7
  clientId?: string;
11
- } & object, devtoolsOptions?: DevtoolsOptions): OidcBridgeHandle;
8
+ } & object, devtoolsOptions?: DevtoolsOptions): BridgeHandle;
12
9
  export {};
13
10
  //# sourceMappingURL=oidc-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidc-bridge.d.ts","sourceRoot":"","sources":["../../../src/lib/oidc-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAqFD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EACvC,eAAe,CAAC,EAAE,eAAe,GAChC,gBAAgB,CAsElB"}
1
+ {"version":3,"file":"oidc-bridge.d.ts","sourceRoot":"","sources":["../../../src/lib/oidc-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG/D,UAAU,gBAAgB;IACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAqFD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EACvC,eAAe,CAAC,EAAE,eAAe,GAChC,YAAY,CAqEd"}
@@ -1,5 +1,5 @@
1
1
  import { Schema, Option, pipe } from 'effect';
2
- import { emitAuthEvent, emitConfigEvent, configureDevtools } from './emit.js';
2
+ import { emitAuthEvent, emitConfigEvent } from './emit.js';
3
3
  // ---------------------------------------------------------------------------
4
4
  // Local schemas — structural contracts for RTK Query state, not public types
5
5
  // ---------------------------------------------------------------------------
@@ -70,9 +70,6 @@ export function attachOidcBridge(client, config, devtoolsOptions) {
70
70
  if (typeof window === 'undefined') {
71
71
  return { detach: () => undefined };
72
72
  }
73
- if (devtoolsOptions) {
74
- configureDevtools(devtoolsOptions);
75
- }
76
73
  let configEmitted = false;
77
74
  let emittedRequests = new Set();
78
75
  const unsubscribe = client.subscribe(() => {
@@ -87,7 +84,7 @@ export function attachOidcBridge(client, config, devtoolsOptions) {
87
84
  pipe(rawEntry, decodeMutationEntry, Option.filter((entry) => entry.status === 'fulfilled' || entry.status === 'rejected'), Option.map((entry) => {
88
85
  emittedRequests.add(requestId);
89
86
  if (config && !configEmitted) {
90
- emitConfigEvent(config);
87
+ emitConfigEvent(config, devtoolsOptions);
91
88
  configEmitted = true;
92
89
  }
93
90
  const oidcData = mutationToOidcData(entry.endpointName, entry.status, entry.error, config?.clientId);
@@ -106,7 +103,7 @@ export function attachOidcBridge(client, config, devtoolsOptions) {
106
103
  isError: oidcData.status === 'error',
107
104
  isAuthRelated: true,
108
105
  },
109
- });
106
+ }, devtoolsOptions);
110
107
  }));
111
108
  }
112
109
  }));