@scayle/storefront-devtools 0.2.0-alpha.1 → 0.2.0-alpha.2

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +113 -83
  3. package/dist/_chunks/coalesce-cmmfn4qq.mjs +1585 -0
  4. package/dist/group.d.ts +29 -21
  5. package/dist/group.d.ts.map +1 -1
  6. package/dist/index.d.ts +4 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.mjs +40 -65
  9. package/dist/inertia/channel.d.ts +54 -0
  10. package/dist/inertia/channel.d.ts.map +1 -0
  11. package/dist/inertia/client/index.d.ts +1 -6
  12. package/dist/inertia/client/index.d.ts.map +1 -1
  13. package/dist/inertia/client/index.mjs +246 -109
  14. package/dist/inertia/client/publish.d.ts +24 -0
  15. package/dist/inertia/client/publish.d.ts.map +1 -0
  16. package/dist/inertia/core/network.d.ts +1 -1
  17. package/dist/inertia/core/network.d.ts.map +1 -1
  18. package/dist/inertia/core/response.d.ts +3 -3
  19. package/dist/inertia/core/response.d.ts.map +1 -1
  20. package/dist/inertia/plugin.d.ts +8 -6
  21. package/dist/inertia/plugin.d.ts.map +1 -1
  22. package/dist/orpc/channel.d.ts +29 -0
  23. package/dist/orpc/channel.d.ts.map +1 -0
  24. package/dist/orpc/client/index.d.ts +1 -6
  25. package/dist/orpc/client/index.d.ts.map +1 -1
  26. package/dist/orpc/client/index.mjs +152 -137
  27. package/dist/orpc/client/publish.d.ts +15 -0
  28. package/dist/orpc/client/publish.d.ts.map +1 -0
  29. package/dist/orpc/core/serialize.d.ts +1 -1
  30. package/dist/orpc/core/stats.d.ts +10 -0
  31. package/dist/orpc/core/stats.d.ts.map +1 -0
  32. package/dist/orpc/core/store.d.ts +1 -2
  33. package/dist/orpc/core/store.d.ts.map +1 -1
  34. package/dist/orpc/plugin.d.ts +8 -5
  35. package/dist/orpc/plugin.d.ts.map +1 -1
  36. package/dist/shared/clipboard.d.ts +2 -3
  37. package/dist/shared/clipboard.d.ts.map +1 -1
  38. package/dist/shared/coalesce.d.ts +14 -0
  39. package/dist/shared/coalesce.d.ts.map +1 -0
  40. package/dist/shared/panel-channel.d.ts +49 -0
  41. package/dist/shared/panel-channel.d.ts.map +1 -0
  42. package/dist/shared/publish-options.d.ts +13 -0
  43. package/dist/shared/publish-options.d.ts.map +1 -0
  44. package/dist/shared/safe-clone.d.ts +2 -1
  45. package/dist/shared/safe-clone.d.ts.map +1 -1
  46. package/dist/storefront/plugin.d.ts +6 -4
  47. package/dist/storefront/plugin.d.ts.map +1 -1
  48. package/dist/ui/assets/App-BlEKD1MK.js +4 -0
  49. package/dist/ui/assets/App-C1rr07m5.js +1 -0
  50. package/dist/ui/assets/App-C5-JscO0.css +1 -0
  51. package/dist/ui/assets/App-M0iU7c4p.css +1 -0
  52. package/dist/ui/assets/App-VElUrn9P.js +5 -0
  53. package/dist/ui/assets/App-jiQKInbo.css +1 -0
  54. package/dist/ui/assets/_plugin-vue_export-helper-BDNMzG2s.js +1 -0
  55. package/dist/ui/assets/channel-D7V7aU79.js +1 -0
  56. package/dist/ui/assets/clipboard-BnEeWyfh.css +1 -0
  57. package/dist/ui/assets/clipboard-n-T06WI3.js +1 -0
  58. package/dist/ui/assets/panel-channel-DjMENemf.js +2 -0
  59. package/dist/ui/assets/panels-B4LTsmli.css +1 -0
  60. package/dist/ui/assets/panels-BLV_p6Kz.js +2 -0
  61. package/dist/ui/assets/preload-helper-J6bGWMBq.js +2 -0
  62. package/dist/{vue-devtools/ui/assets/index-Dby9TIQH.js → ui/assets/vue-BAMMushd.js} +19 -20
  63. package/dist/{vue-devtools/ui/assets/index-sSkqWPzY.css → ui/assets/vue-Kq4tvBbL.css} +1 -1
  64. package/dist/ui/panels/index.html +15 -0
  65. package/dist/{vue-devtools/ui → ui/vue}/index.html +4 -2
  66. package/dist/vue-devtools/client/index.mjs +0 -1
  67. package/dist/vue-devtools/plugin.d.ts +10 -9
  68. package/dist/vue-devtools/plugin.d.ts.map +1 -1
  69. package/package.json +11 -29
  70. package/dist/_chunks/clipboard-DrVHc2QA.mjs +0 -61
  71. package/dist/_chunks/diff-DzJ5arJj.mjs +0 -169
  72. package/dist/_chunks/panel-uV5ITqhY.mjs +0 -51
  73. package/dist/_chunks/redact-DmIF-iyk.mjs +0 -96
  74. package/dist/_chunks/useStore-Db8RZW8T.mjs +0 -10
  75. package/dist/inertia/client/index.d.mts +0 -13
  76. package/dist/inertia/renderer/index.d.mts +0 -16
  77. package/dist/inertia/renderer/index.mjs +0 -771
  78. package/dist/orpc/client/index.d.mts +0 -13
  79. package/dist/orpc/renderer/index.d.mts +0 -16
  80. package/dist/orpc/renderer/index.mjs +0 -457
  81. package/dist/resource-center/client/index.mjs +0 -21
  82. package/dist/resource-center/client.d.ts +0 -3
  83. package/dist/resource-center/client.d.ts.map +0 -1
  84. package/dist/resource-center/plugin.d.ts +0 -12
  85. package/dist/resource-center/plugin.d.ts.map +0 -1
  86. package/dist/shared/use-window-store.d.ts +0 -18
  87. package/dist/shared/use-window-store.d.ts.map +0 -1
  88. package/dist/storefront/renderer/index.d.mts +0 -16
  89. package/dist/storefront/renderer/index.mjs +0 -124
  90. /package/dist/{vue-devtools/ui → ui}/assets/css-8QJvnqUH.js +0 -0
  91. /package/dist/{vue-devtools/ui → ui}/assets/css-CaJ9TzKE.js +0 -0
  92. /package/dist/{vue-devtools/ui → ui}/assets/diff-woXpYk--.js +0 -0
  93. /package/dist/{vue-devtools/ui → ui}/assets/html-BHDw6EPc.js +0 -0
  94. /package/dist/{vue-devtools/ui → ui}/assets/html-GueGcY0x.js +0 -0
  95. /package/dist/{vue-devtools/ui → ui}/assets/javascript-BzbQS41l.js +0 -0
  96. /package/dist/{vue-devtools/ui → ui}/assets/javascript-Yelw-5ZN.js +0 -0
  97. /package/dist/{vue-devtools/ui → ui}/assets/json-B88Oqtu5.js +0 -0
  98. /package/dist/{vue-devtools/ui → ui}/assets/json-CaljABEy.js +0 -0
  99. /package/dist/{vue-devtools/ui → ui}/assets/shellscript-CLZ0U2zV.js +0 -0
  100. /package/dist/{vue-devtools/ui → ui}/assets/typescript-Utq2Cl8c.js +0 -0
  101. /package/dist/{vue-devtools/ui → ui}/assets/typescript-j_1H8WHN.js +0 -0
  102. /package/dist/{vue-devtools/ui → ui}/assets/vitesse-dark-BZCL-v6S.js +0 -0
  103. /package/dist/{vue-devtools/ui → ui}/assets/vitesse-light-VbXTXTou.js +0 -0
  104. /package/dist/{vue-devtools/ui → ui}/assets/vue-B1Tf5CHw.js +0 -0
  105. /package/dist/{vue-devtools/ui → ui}/assets/vue-html-CGMs_6qn.js +0 -0
  106. /package/dist/{vue-devtools/ui → ui}/assets/yaml-rwi0_p6S.js +0 -0
@@ -0,0 +1,15 @@
1
+ import { PageScriptChannel } from 'devframe/in-page-channel';
2
+ import { PublishOptions } from '../../shared/publish-options';
3
+ import { OrpcStore } from '../core/store';
4
+ import { OrpcChannelProtocol } from '../channel';
5
+ /**
6
+ * Serves the oRPC capture to the oRPC panel over an in-page channel. The oRPC
7
+ * page script calls it once at startup. Each panel gets the current snapshot
8
+ * when it connects, and store updates go out as coalesced `state` snapshots.
9
+ *
10
+ * @param store - The oRPC capture store to publish.
11
+ * @param options - Endpoint options, used by tests to skip the window handshake.
12
+ * @returns The page-script endpoint.
13
+ */
14
+ export declare function publishOrpcState(store: OrpcStore, options?: PublishOptions): PageScriptChannel<OrpcChannelProtocol>;
15
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/orpc/client/publish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,YAAY,CAAA;AAOrE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,cAAmB,GAC3B,iBAAiB,CAAC,mBAAmB,CAAC,CA0BxC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Decodes an oRPC RPC payload, reconstructing the structured types (Date,
3
- * BigInt, Map, Set, and so on) that the `{ json, meta }` wire envelope encodes.
3
+ * BigInt, Map, Set, and so on) that the `{ json, meta }` envelope encodes.
4
4
  * Values that are not an envelope, and envelopes that fail to deserialize, are
5
5
  * returned unchanged so capture can never throw.
6
6
  *
@@ -0,0 +1,10 @@
1
+ import { OrpcCall, ProcedureStat } from './types';
2
+ /**
3
+ * Aggregates call count, failures, and timing per procedure. The oRPC panel's
4
+ * Stats tab runs it on every snapshot it receives.
5
+ *
6
+ * @param calls - Captured calls, oldest first.
7
+ * @returns One entry per procedure, in order of first appearance.
8
+ */
9
+ export declare function procedureStats(calls: readonly OrpcCall[]): ProcedureStat[];
10
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/orpc/core/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEtD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,aAAa,EAAE,CA0C1E"}
@@ -1,4 +1,4 @@
1
- import { OrpcCall, OrpcErrorKind, OrpcState, ProcedureStat, OrpcCallSummary } from './types';
1
+ import { OrpcCall, OrpcErrorKind, OrpcState, OrpcCallSummary } from './types';
2
2
  type Subscriber = (state: OrpcState) => void;
3
3
  interface StartInit {
4
4
  procedure: string;
@@ -39,7 +39,6 @@ export declare class OrpcStore {
39
39
  getState(): OrpcState;
40
40
  startCall(init: StartInit): number;
41
41
  finishCall(id: number, result: FinishResult): void;
42
- getProcedureStats(): ProcedureStat[];
43
42
  subscribe(fn: Subscriber): () => void;
44
43
  setPaused(value: boolean): void;
45
44
  clear(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/orpc/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,SAAS,CAAA;AA0BhB,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE5C,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,SAAS,CAA2C;gBAEhD,QAAQ,GAAE,MAAkB;IAKxC,IAAI,KAAK,IAAI,QAAQ,EAAE,CAOtB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,oBAAoB,IAAI,eAAe,EAAE,CAE5C;IAED,QAAQ,IAAI,SAAS;IAOrB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAuBlC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAmBlD,iBAAiB,IAAI,aAAa,EAAE;IA2CpC,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,IAAI;IAOrC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK/B,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,MAAM;CAYf"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/orpc/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAA;AA0BhB,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE5C,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,SAAS,CAA2C;gBAEhD,QAAQ,GAAE,MAAkB;IAKxC,IAAI,KAAK,IAAI,QAAQ,EAAE,CAOtB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,oBAAoB,IAAI,eAAe,EAAE,CAE5C;IAED,QAAQ,IAAI,SAAS;IAOrB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAuBlC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAmBlD,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,IAAI;IAOrC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK/B,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,MAAM;CAYf"}
@@ -1,10 +1,13 @@
1
1
  import { Plugin } from 'vite';
2
2
  /**
3
- * Creates the Vite plugin that registers the oRPC devtools panel: a
4
- * custom-render dock entry whose renderer mounts the Vue panel directly into
5
- * the dock panel DOM, reading the capture store off `window`. The capture
6
- * client (a `window.fetch` patch) is injected into the app entry alongside the
7
- * other panels' clients; see `src/index.ts`.
3
+ * Creates the Vite plugin that registers the oRPC devtools panel: an
4
+ * iframe dock entry that loads the panel app's `orpc` view. The view
5
+ * gets the capture from the oRPC page script (a `window.fetch` patch)
6
+ * over the `storefront-devtools:orpc` channel. The page script is
7
+ * injected into the app entry alongside the other panels' clients; see
8
+ * `src/index.ts`.
9
+ *
10
+ * @returns A Vite plugin that registers the oRPC dock entry.
8
11
  */
9
12
  export declare function createOrpcPlugin(): Plugin;
10
13
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/orpc/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AASlC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/orpc/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AASlC;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC"}
@@ -1,7 +1,6 @@
1
1
  /**
2
- * Writes text to the clipboard when running in the browser. No-op during SSR
3
- * or when the Clipboard API is unavailable. Matches the SSR-guard idiom used
4
- * in `core/history-capture.ts` and `resource-center/client.ts`.
2
+ * Writes text to the clipboard for the panels' copy buttons. No-op when the
3
+ * Clipboard API is unavailable, as it is outside a secure context.
5
4
  *
6
5
  * @param text - The text to copy.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/shared/clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI3C"}
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/shared/clipboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAS3C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Wraps a function so that repeated calls within `delayMs` collapse into one
3
+ * call at the end of the window. The page scripts use it to send at most one
4
+ * state snapshot per window, however many capture events fire in between.
5
+ * It uses a timer, not `requestAnimationFrame`, because the browser pauses
6
+ * animation frames in background tabs while the dock can sit in a
7
+ * Picture-in-Picture window.
8
+ *
9
+ * @param fn - The function to run once per window.
10
+ * @param delayMs - Length of the window in milliseconds.
11
+ * @returns A function that schedules `fn`, unless a run is already pending.
12
+ */
13
+ export declare function coalesce(fn: () => void, delayMs: number): () => void;
14
+ //# sourceMappingURL=coalesce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalesce.d.ts","sourceRoot":"","sources":["../../src/shared/coalesce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI,CAWpE"}
@@ -0,0 +1,49 @@
1
+ import { PanelChannel } from 'devframe/in-page-channel';
2
+ import { ShallowRef } from 'vue';
3
+ /**
4
+ * A panel channel whose page script answers `getState` and pushes `state`
5
+ * snapshots. Every panel channel in this package has that shape.
6
+ */
7
+ export interface StatePanelChannel<TState> {
8
+ /** Asks the page script for its current state. */
9
+ call: (name: 'getState') => Promise<TState>;
10
+ /** Registers a listener for every state snapshot the page script sends. */
11
+ on: (name: 'state', listener: (state: TState) => void) => () => void;
12
+ /** Current connection status. */
13
+ status: PanelChannel<Record<string, never>>['status'];
14
+ /** Reports each connect and reconnect. */
15
+ events: PanelChannel<Record<string, never>>['events'];
16
+ }
17
+ /** A panel channel whose page script also runs a capture you can pause and clear. */
18
+ export interface CapturePanelChannel {
19
+ /** Clears the capture, or pauses and resumes it. */
20
+ call: ((name: 'clear') => Promise<void>) & ((name: 'setPaused', paused: boolean) => Promise<void>);
21
+ }
22
+ /** The actions a capture panel sends to its page script. */
23
+ export interface CaptureControls {
24
+ /** Clears the capture in the app. The next snapshot reflects it. */
25
+ clearCapture: () => void;
26
+ /** Pauses the capture with `true` and resumes it with `false`. */
27
+ setCapturePaused: (paused: boolean) => void;
28
+ }
29
+ /**
30
+ * Mirrors the page script's state into a Vue ref for a panel. Every panel's
31
+ * `store.ts` builds on it. The ref starts as `null`, loads the current state
32
+ * each time the channel connects, and takes every snapshot the page script
33
+ * sends afterwards.
34
+ *
35
+ * @param channel - The panel's connected channel.
36
+ * @returns A ref with the latest page state, `null` until the page script answers.
37
+ */
38
+ export declare function mirrorPageState<TState>(channel: StatePanelChannel<TState>): ShallowRef<TState | null>;
39
+ /**
40
+ * Creates the Clear and Pause actions of a capture panel. The Inertia and oRPC
41
+ * panels use it. A failed call only logs a warning, because the next snapshot
42
+ * shows whether the action took effect.
43
+ *
44
+ * @param channel - The panel's connected channel.
45
+ * @param captureName - Names the capture in warnings, for example `Inertia`.
46
+ * @returns The two actions.
47
+ */
48
+ export declare function captureControls(channel: CapturePanelChannel, captureName: string): CaptureControls;
49
+ //# sourceMappingURL=panel-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-channel.d.ts","sourceRoot":"","sources":["../../src/shared/panel-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,MAAM;IACvC,kDAAkD;IAClD,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3C,2EAA2E;IAC3E,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IACpE,iCAAiC;IACjC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IACrD,0CAA0C;IAC1C,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;CACtD;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GACtC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAC1D;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,kEAAkE;IAClE,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EACpC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,GACjC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,MAAM,GAClB,eAAe,CAkBjB"}
@@ -0,0 +1,13 @@
1
+ import { CreatePageScriptChannelOptions } from 'devframe/in-page-channel';
2
+ /**
3
+ * Delay in milliseconds that the page-script publishers pass to `coalesce`, so
4
+ * a burst of capture events sends one state snapshot.
5
+ */
6
+ export declare const SNAPSHOT_DELAY_MS = 16;
7
+ /**
8
+ * Endpoint options for the page-script publishers (`publishInertiaState`,
9
+ * `publishOrpcState`). Tests set `window: false` and `heartbeat: false` to
10
+ * connect over a `MessageChannel` directly.
11
+ */
12
+ export type PublishOptions = Pick<CreatePageScriptChannelOptions, 'window' | 'heartbeat'>;
13
+ //# sourceMappingURL=publish-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-options.d.ts","sourceRoot":"","sources":["../../src/shared/publish-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,8BAA8B,EAC9B,QAAQ,GAAG,WAAW,CACvB,CAAA"}
@@ -29,7 +29,8 @@ export interface SafeCloneOptions {
29
29
  * @param options - Copy options, notably `redactKey` for credential removal.
30
30
  * @param depth - Remaining depth budget; defaults to {@link MAX_CLONE_DEPTH}.
31
31
  * @param seen - Ancestor objects on the current path, used to detect cycles.
32
- * @returns A structure safe to store, diff, and serialize to JSON.
32
+ * @returns A structure safe to store, diff, serialize to JSON, and send
33
+ * through structured clone.
33
34
  */
34
35
  export declare function safeClone(value: unknown, options?: SafeCloneOptions, depth?: number, seen?: Set<object>): unknown;
35
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"safe-clone.d.ts","sourceRoot":"","sources":["../../src/shared/safe-clone.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,sEAAsE;AACtE,eAAO,MAAM,QAAQ,eAAe,CAAA;AAKpC,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAwDD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gBAAqB,EAC9B,KAAK,GAAE,MAAwB,EAC/B,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,OAAO,CAsBT;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB5E"}
1
+ {"version":3,"file":"safe-clone.d.ts","sourceRoot":"","sources":["../../src/shared/safe-clone.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,sEAAsE;AACtE,eAAO,MAAM,QAAQ,eAAe,CAAA;AAKpC,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CACrC;AAwDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gBAAqB,EAC9B,KAAK,GAAE,MAAwB,EAC/B,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,OAAO,CA8BT;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB5E"}
@@ -1,9 +1,11 @@
1
1
  import { Plugin } from 'vite';
2
2
  /**
3
- * Creates the Vite plugin that registers the Storefront context devtools
4
- * panel: a custom-render dock entry whose renderer mounts the Vue panel into
5
- * the dock panel DOM. The panel has no capture client of its own; it reads
6
- * the live Inertia page from the Inertia panel's capture store.
3
+ * Creates the Vite plugin that registers the Storefront context panel: an
4
+ * iframe dock entry that loads the panel app's `storefront` view. The view
5
+ * reads the current Inertia page from the Inertia page script over the
6
+ * `storefront-devtools:storefront` channel.
7
+ *
8
+ * @returns A Vite plugin that registers the Storefront context dock entry.
7
9
  */
8
10
  export declare function createStorefrontPlugin(): Plugin;
9
11
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/storefront/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AASlC;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/storefront/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AASlC;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C"}
@@ -0,0 +1,4 @@
1
+ import{H as e,K as t,N as n,U as r,_ as i,a,c as o,d as s,f as c,ft as l,g as u,k as d,lt as f,m as p,p as m,tt as h,u as g,v as _}from"./preload-helper-J6bGWMBq.js";import{t as v}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as y,r as b,t as x}from"./panel-channel-DjMENemf.js";import{n as S,r as C,t as w}from"./clipboard-n-T06WI3.js";var T=b({name:`storefront-devtools:orpc`,functions:{},events:{state:{}}}),E=x(T,`oRPC`),D=y(T),O=E.clearCapture,k=E.setCapturePaused,A=[`aria-activedescendant`],ee={class:`sf-dt-filters`,role:`group`,"aria-label":`Filter by domain`},te=[`aria-pressed`,`onClick`],j={key:0,class:`sf-dt-prev`},M=[`aria-expanded`],N={key:0,id:`sf-dt-prev-calls`,class:`sf-dt-prev-rows`},P={class:`sf-dt-method`},F={class:`sf-dt-proc`},I={key:0,class:`sf-dt-timing`},L={class:`sf-dt-rows`},R=[`id`,`aria-selected`,`onClick`],z={class:`sf-dt-method`},B={class:`sf-dt-proc`},V={class:`sf-dt-timing`},H={key:1,class:`sf-dt-empty`},U={class:`sf-dt-visually-hidden`,role:`status`,"aria-live":`polite`},W=v(_({__name:`CallList`,props:{calls:{},selectedId:{},paused:{type:Boolean}},emits:[`select`],setup(r,{expose:i,emit:c}){let _=r,v=c,y=h(``),b=h(`all`),x=h(!1),S=g(()=>{let e=new Set;for(let t of _.calls)e.add(t.procedure.split(`/`)[0]);return[`all`,...Array.from(e)]}),C=g(()=>_.calls.filter(e=>{let t=b.value===`all`||e.procedure.split(`/`)[0]===b.value,n=y.value.trim().toLowerCase(),r=!n||e.procedure.toLowerCase().includes(n);return t&&r})),w=g(()=>D.value?.previousSession??[]);function T(e){return e.ok?`is-ok`:e.errorKind===`validation`?`is-warn`:e.errorKind?`is-error`:``}function E(e){let t=C.value;if(!t.length)return;let n=t.findIndex(e=>e.id===_.selectedId);e.key===`ArrowDown`?(e.preventDefault(),v(`select`,t[Math.min(n+1,t.length-1)].id)):e.key===`ArrowUp`&&(e.preventDefault(),v(`select`,t[Math.max(n-1,0)].id))}let O=e(`listEl`);return i({focus:()=>O.value?.focus()}),(e,i)=>(d(),p(`div`,{ref_key:`listEl`,ref:O,class:`sf-dt-list`,tabindex:`0`,role:`listbox`,"aria-label":`oRPC calls`,"aria-activedescendant":r.selectedId==null?void 0:`sf-dt-call-${r.selectedId}`,onKeydown:E},[s(`div`,ee,[(d(!0),p(o,null,n(S.value,e=>(d(),p(`button`,{key:e,class:f([`sf-dt-filter`,{"is-active":b.value===e}]),"aria-pressed":b.value===e,onClick:t=>b.value=e},l(e),11,te))),128))]),t(s(`input`,{"onUpdate:modelValue":i[0]||=e=>y.value=e,class:`sf-dt-search`,type:`search`,placeholder:`Filter by procedure`,"aria-label":`Filter calls by procedure`},null,512),[[a,y.value]]),w.value.length?(d(),p(`div`,j,[s(`button`,{class:`sf-dt-prev-toggle`,"aria-expanded":x.value,"aria-controls":`sf-dt-prev-calls`,onClick:i[1]||=e=>x.value=!x.value},l(x.value?`▾`:`▸`)+` Previous session (`+l(w.value.length)+`) `,9,M),x.value?(d(),p(`ul`,N,[(d(!0),p(o,null,n(w.value,e=>(d(),p(`li`,{key:e.id,class:`sf-dt-prev-row`},[s(`span`,P,l(e.method),1),s(`span`,F,l(e.procedure),1),e.status?(d(),p(`span`,I,l(e.status),1)):m(``,!0)]))),128))])):m(``,!0)])):m(``,!0),s(`ul`,L,[(d(!0),p(o,null,n(C.value,e=>(d(),p(`li`,{id:`sf-dt-call-${e.id}`,key:e.id,class:f([`sf-dt-row`,{"is-selected":e.id===r.selectedId}]),role:`option`,"aria-selected":e.id===r.selectedId,onClick:t=>v(`select`,e.id)},[s(`span`,z,l(e.method),1),s(`span`,B,l(e.procedure),1),s(`span`,{class:f([`sf-dt-status`,T(e)])},l(e.status??`…`),3),s(`span`,V,l(e.duration==null?``:`${Math.round(e.duration)}ms`),1)],10,R))),128))]),C.value.length?m(``,!0):(d(),p(`div`,H,[_.calls.length?(d(),p(o,{key:0},[u(`No calls match this filter`)],64)):r.paused?(d(),p(o,{key:1},[u(` Capture is paused. Resume to see new calls. `)],64)):(d(),p(o,{key:2},[u(`Use the app to see oRPC calls appear here.`)],64))])),s(`div`,U,l(C.value.length)+` call`+l(C.value.length===1?``:`s`)+` captured `,1)],40,A))}}),[[`__scopeId`,`data-v-ae2504c0`]]);function G(e){return`'${e.replace(/'/g,`'\\''`)}'`}function K(e){let t=[`curl -X ${e.method} ${G(e.url)}`];return t.push(`-H ${G(`Content-Type: application/json`)}`),e.input!==void 0&&t.push(`-d ${G(JSON.stringify(e.input))}`),t.join(` `)}function q(e){let t;t=e.duration==null?e.finishedAt&&e.startedAt?`${Math.round(e.finishedAt-e.startedAt)}ms`:`in-flight`:`${Math.round(e.duration)}ms`;let n=`${e.method} ${e.url}`;e.status&&(n+=` → ${e.status}`),n+=` (${t})`;let r=[`## oRPC Call`,``,`**Procedure:** \`${e.procedure}\``,`**Request:** ${n}`];return e.errorKind&&r.push(`**Error kind:** ${e.errorKind}`),e.streaming&&r.push(`**Streaming:** Yes`),r.join(`
2
+ `)}function J(e,t){return`### ${e}\n\n\`\`\`json\n${JSON.stringify(t,null,2)}\n\`\`\``}function Y(e){let t=[q(e)];return e.input!==void 0&&t.push(J(`Input`,e.input)),e.error===void 0?e.output!==void 0&&t.push(J(`Output`,e.output)):t.push(J(`Error`,e.error)),e.headers&&Object.keys(e.headers).length>0&&t.push(J(`Request headers`,e.headers)),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&t.push(J(`Response headers`,e.responseHeaders)),t.join(`
3
+
4
+ `)}function X(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.code==`string`?{code:t.code,status:typeof t.status==`number`?t.status:void 0,message:typeof t.message==`string`?t.message:void 0,data:t.data}:null}var Z={class:`sf-dt-data-tab`},Q={class:`sf-dt-section`},ne={class:`sf-dt-section-head`},re={key:0,class:`sf-dt-section`},ie={key:0,class:`sf-dt-error-fields`},ae={key:1,class:`sf-dt-section`},oe={key:2,class:`sf-dt-section`},se={class:`sf-dt-section-head`},ce=`https://orpc.dev/docs/error-handling`,le=`https://orpc.dev/docs/event-iterator`,ue=v(_({__name:`DataTab`,props:{call:{}},setup(e){let t=e,n=h(!1),r=h(!1);function a(e,t){return e!==void 0&&JSON.stringify(e)!==JSON.stringify(t)}let c=g(()=>a(t.call.rawInput,t.call.input)),f=g(()=>a(t.call.rawOutput,t.call.output)),_=g(()=>X(t.call.error));return(t,a)=>(d(),p(`div`,Z,[s(`section`,Q,[s(`div`,ne,[a[2]||=s(`h4`,{class:`sf-dt-heading`},`Input`,-1),c.value?(d(),p(`button`,{key:0,class:`sf-dt-raw-toggle`,onClick:a[0]||=e=>n.value=!n.value},l(n.value?`decoded`:`raw envelope`),1)):m(``,!0)]),i(C,{label:n.value?`rawInput`:`input`,value:n.value?e.call.rawInput:e.call.input},null,8,[`label`,`value`])]),e.call.error===void 0?e.call.streaming?(d(),p(`section`,ae,[a[9]||=s(`h4`,{class:`sf-dt-heading`},`Output`,-1),s(`p`,{class:`sf-dt-muted`},[a[8]||=u(` (streaming response, body not captured) `,-1),s(`a`,{class:`sf-dt-doclink`,href:le,target:`_blank`,rel:`noreferrer`},`docs`)])])):(d(),p(`section`,oe,[s(`div`,se,[a[10]||=s(`h4`,{class:`sf-dt-heading`},`Output`,-1),f.value?(d(),p(`button`,{key:0,class:`sf-dt-raw-toggle`,onClick:a[1]||=e=>r.value=!r.value},l(r.value?`decoded`:`raw envelope`),1)):m(``,!0)]),i(C,{label:r.value?`rawOutput`:`output`,value:r.value?e.call.rawOutput:e.call.output},null,8,[`label`,`value`])])):(d(),p(`section`,re,[s(`div`,{class:`sf-dt-section-head`},[a[3]||=s(`h4`,{class:`sf-dt-heading`},`Error`,-1),s(`a`,{class:`sf-dt-doclink`,href:ce,target:`_blank`,rel:`noreferrer`},`docs`)]),_.value?(d(),p(`dl`,ie,[a[7]||=s(`dt`,null,`Code`,-1),s(`dd`,null,l(_.value.code),1),_.value.status?(d(),p(o,{key:0},[a[4]||=s(`dt`,null,`Status`,-1),s(`dd`,null,l(_.value.status),1)],64)):m(``,!0),_.value.message?(d(),p(o,{key:1},[a[5]||=s(`dt`,null,`Message`,-1),s(`dd`,null,l(_.value.message),1)],64)):m(``,!0),_.value.data===void 0?m(``,!0):(d(),p(o,{key:2},[a[6]||=s(`dt`,null,`Data`,-1),s(`dd`,null,[i(C,{label:`data`,value:_.value.data},null,8,[`value`])])],64))])):m(``,!0),i(C,{label:`error`,value:e.call.error},null,8,[`value`])]))]))}}),[[`__scopeId`,`data-v-11eb56d2`]]),de={class:`sf-dt-headers-tab`},fe={key:0,class:`sf-dt-section`},pe={key:1,class:`sf-dt-section`},me={key:2,class:`sf-dt-muted`},he=v(_({__name:`HeadersTab`,props:{call:{}},setup(e){return(t,n)=>(d(),p(`div`,de,[e.call.headers&&Object.keys(e.call.headers).length?(d(),p(`section`,fe,[n[0]||=s(`h4`,{class:`sf-dt-heading`},`Request headers`,-1),i(S,{headers:e.call.headers},null,8,[`headers`])])):m(``,!0),e.call.responseHeaders&&Object.keys(e.call.responseHeaders).length?(d(),p(`section`,pe,[n[1]||=s(`h4`,{class:`sf-dt-heading`},`Response headers`,-1),i(S,{headers:e.call.responseHeaders},null,8,[`headers`])])):m(``,!0),!Object.keys(e.call.headers??{}).length&&!Object.keys(e.call.responseHeaders??{}).length?(d(),p(`p`,me,` No headers captured for this call. `)):m(``,!0)]))}}),[[`__scopeId`,`data-v-57899919`]]),ge={class:`sf-dt-detail`},_e={class:`sf-dt-detail-head`},ve={key:0,class:`sf-dt-toast`,role:`status`},ye={class:`sf-dt-overview`},be={class:`sf-dt-subtabs`,role:`tablist`,"aria-label":`Call detail views`},xe=[`id`,`aria-selected`,`onClick`],Se=[`aria-labelledby`],Ce=v(_({__name:`CallDetail`,props:{call:{}},emits:[`back`],setup(e){let t=e,i=[`data`,`headers`],a=h(`data`);r(()=>t.call.id,()=>{a.value=`data`});let u=h(null),_;function v(){u.value=`Copied`,clearTimeout(_),_=setTimeout(()=>{u.value=null},2e3)}function y(){w(K(t.call)),v()}function b(){w(Y(t.call)),v()}let x=g(()=>t.call.headers?.[`x-shop-country-id`]);return(t,r)=>(d(),p(`div`,ge,[s(`div`,_e,[s(`button`,{class:`sf-dt-copy sf-dt-back`,onClick:r[0]||=e=>t.$emit(`back`)},` ← Back `),s(`button`,{class:`sf-dt-copy`,onClick:y},`Copy as curl`),s(`button`,{class:`sf-dt-copy`,onClick:b},`Copy as markdown`),u.value?(d(),p(`span`,ve,l(u.value),1)):m(``,!0)]),s(`section`,ye,[s(`dl`,null,[r[5]||=s(`dt`,null,`Procedure`,-1),s(`dd`,null,l(e.call.procedure),1),r[6]||=s(`dt`,null,`Method`,-1),s(`dd`,null,l(e.call.method),1),r[7]||=s(`dt`,null,`URL`,-1),s(`dd`,null,l(e.call.url),1),e.call.status?(d(),p(o,{key:0},[r[1]||=s(`dt`,null,`Status`,-1),s(`dd`,null,l(e.call.status),1)],64)):m(``,!0),e.call.duration==null?m(``,!0):(d(),p(o,{key:1},[r[2]||=s(`dt`,null,`Duration`,-1),s(`dd`,null,l(Math.round(e.call.duration))+`ms`,1)],64)),e.call.errorKind?(d(),p(o,{key:2},[r[3]||=s(`dt`,null,`Error`,-1),s(`dd`,null,l(e.call.errorKind),1)],64)):m(``,!0),x.value?(d(),p(o,{key:3},[r[4]||=s(`dt`,null,`Shop country`,-1),s(`dd`,null,l(x.value),1)],64)):m(``,!0)])]),r[8]||=s(`hr`,{class:`sf-dt-meta-divider`},null,-1),s(`nav`,be,[(d(),p(o,null,n(i,e=>s(`button`,{id:`sf-dt-subtab-${e}`,key:e,class:f([`sf-dt-subtab`,{"is-active":a.value===e}]),role:`tab`,"aria-selected":a.value===e,"aria-controls":`sf-dt-subtabpanel`,onClick:t=>a.value=e},l(e),11,xe)),64))]),s(`div`,{id:`sf-dt-subtabpanel`,class:`sf-dt-tabpanel`,role:`tabpanel`,"aria-labelledby":`sf-dt-subtab-${a.value}`},[a.value===`data`?(d(),c(ue,{key:0,call:e.call},null,8,[`call`])):(d(),c(he,{key:1,call:e.call},null,8,[`call`]))],8,Se)]))}}),[[`__scopeId`,`data-v-7a4da2d9`]]),we={class:`sf-dt-stats`},Te={key:0},Ee={class:`sf-dt-proc`},De={key:1,class:`sf-dt-empty`},$=v(_({__name:`ProcedureStats`,props:{stats:{}},setup(e){let t=e,r=h(`count`),i=h(!0);function a(e){r.value===e?i.value=!i.value:(r.value=e,i.value=!0)}function c(e){return r.value===e?i.value?` ▾`:` ▴`:``}let u=g(()=>{let e=i.value?1:-1;return[...t.stats].sort((t,n)=>(n[r.value]-t[r.value])*e)});return(e,t)=>(d(),p(`div`,we,[u.value.length?(d(),p(`table`,Te,[s(`thead`,null,[s(`tr`,null,[t[3]||=s(`th`,null,`Procedure`,-1),s(`th`,{class:f([`sf-dt-sortable`,{"is-active":r.value===`count`}]),onClick:t[0]||=e=>a(`count`)},` Count`+l(c(`count`)),3),s(`th`,{class:f([`sf-dt-sortable`,{"is-active":r.value===`errorCount`}]),onClick:t[1]||=e=>a(`errorCount`)},` Errors`+l(c(`errorCount`)),3),s(`th`,{class:f([`sf-dt-sortable`,{"is-active":r.value===`avgDuration`}]),onClick:t[2]||=e=>a(`avgDuration`)},` Avg`+l(c(`avgDuration`)),3),t[4]||=s(`th`,null,`Last`,-1)])]),s(`tbody`,null,[(d(!0),p(o,null,n(u.value,e=>(d(),p(`tr`,{key:e.procedure},[s(`td`,Ee,l(e.procedure),1),s(`td`,null,l(e.count),1),s(`td`,{class:f({"sf-dt-has-errors":e.errorCount>0})},l(e.errorCount),3),s(`td`,null,l(Math.round(e.avgDuration))+`ms`,1),s(`td`,null,l(Math.round(e.lastDuration))+`ms`,1)]))),128))])])):(d(),p(`div`,De,`No oRPC calls captured yet`))]))}}),[[`__scopeId`,`data-v-3d82d7d9`]]);function Oe(e){let t=new Map;for(let n of e){let e=t.get(n.procedure)??{count:0,errors:0,total:0,last:0,completedCount:0};e.count++,n.ok===!1&&e.errors++,n.duration!=null&&(e.total+=n.duration,e.completedCount++,e.last=n.duration),t.set(n.procedure,e)}let n=[];for(let[e,r]of t)n.push({procedure:e,count:r.count,errorCount:r.errors,avgDuration:r.completedCount>0?r.total/r.completedCount:0,lastDuration:r.last});return n}var ke={class:`sf-devtools`},Ae={class:`sf-dt-tabs`,role:`tablist`,"aria-label":`oRPC panel views`},je=[`aria-selected`],Me=[`aria-selected`],Ne=[`aria-pressed`],Pe={key:1,class:`sf-dt-empty`},Fe={key:1,id:`sf-dt-tabpanel-orpc`,class:`sf-dt-body`,role:`tabpanel`,"aria-labelledby":`sf-dt-tab-stats`},Ie=_({__name:`App`,setup(t){let n=D,r=h(`calls`),a=h(null),o=g(()=>n.value?.calls??[]),u=g(()=>n.value?.paused??!1),m=g(()=>o.value.find(e=>e.id===a.value)??null),_=g(()=>Oe(o.value));function v(){k(!u.value)}let y=e(`callList`);function b(){O(),a.value=null,y.value?.focus()}function x(){a.value=null}return(e,t)=>(d(),p(`div`,ke,[s(`nav`,Ae,[s(`button`,{id:`sf-dt-tab-calls`,class:f([`sf-dt-tab`,{"is-active":r.value===`calls`}]),role:`tab`,"aria-selected":r.value===`calls`,"aria-controls":`sf-dt-tabpanel-orpc`,onClick:t[0]||=e=>r.value=`calls`},` Calls `,10,je),s(`button`,{id:`sf-dt-tab-stats`,class:f([`sf-dt-tab`,{"is-active":r.value===`stats`}]),role:`tab`,"aria-selected":r.value===`stats`,"aria-controls":`sf-dt-tabpanel-orpc`,onClick:t[1]||=e=>r.value=`stats`},` Stats `,10,Me),s(`button`,{class:`sf-dt-tab sf-dt-tabs-spacer`,"aria-pressed":u.value,onClick:v},l(u.value?`Resume`:`Pause`),9,Ne),s(`button`,{class:`sf-dt-tab sf-dt-tabs-clear`,onClick:b},`Clear`)]),r.value===`calls`?(d(),p(`div`,{key:0,id:`sf-dt-tabpanel-orpc`,class:f([`sf-dt-body`,{"has-selection":m.value}]),role:`tabpanel`,"aria-labelledby":`sf-dt-tab-calls`},[i(W,{ref_key:`callList`,ref:y,calls:o.value,"selected-id":a.value,paused:u.value,onSelect:t[2]||=e=>a.value=e},null,8,[`calls`,`selected-id`,`paused`]),m.value?(d(),c(Ce,{key:0,call:m.value,onBack:x},null,8,[`call`])):(d(),p(`div`,Pe,`Select a call to inspect it`))],2)):(d(),p(`div`,Fe,[i($,{stats:_.value},null,8,[`stats`])]))]))}});export{Ie as default};
@@ -0,0 +1 @@
1
+ import{d as e,ft as t,k as n,m as r,u as i,v as a}from"./preload-helper-J6bGWMBq.js";import{t as o}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as s,r as c}from"./panel-channel-DjMENemf.js";import{n as l}from"./channel-D7V7aU79.js";var u=c({name:l,functions:{},events:{state:{}}}),d=s(u);function f(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function p(e){return typeof e==`string`?e:void 0}function m(e){return typeof e==`number`?e:void 0}function h(e){return typeof e==`boolean`?e:void 0}function g(e){let t=f(e);return t?Object.keys(t):[]}function _(e){let t=f(e),n=f(t?.props),r=f(n?.storefront),i=f(r?.config),a=f(r?.country),o=f(i?.oauth),s=f(n?.user),c=f(a?.publicFields),l=Object.keys(c??{}).filter(e=>e!==`consentManagementRequired`),u=n?.availableCountries,d=n?.availableLanguages,_=Array.isArray(s?.groups)?s.groups.filter(e=>typeof e==`string`):[];return{tenantSpace:p(i?.tenantSpace),shopKey:p(i?.shopKey),domain:p(i?.domain),oauthClientId:p(o?.clientId),countryCode:p(a?.countryCode),locale:p(a?.locale),currency:p(a?.currency),shopCountryId:m(a?.shopCountryId),isDefault:h(a?.isDefault),countrySelectorMode:p(i?.countrySelector),availableCountriesCount:Array.isArray(u)?u.length:void 0,availableLanguagesCount:Array.isArray(d)?d.length:void 0,consentManagementRequired:h(c?.consentManagementRequired),isLoggedIn:s!==void 0,isGuest:h(s?.isGuest),groups:_,configPublicFieldKeys:g(i?.publicFields),countryPublicFieldKeys:l,pageVersion:p(t?.version),currentUrl:p(t?.url)}}var v={class:`sf-devtools`},y={key:0,class:`sf-dt-empty`},b={key:1,class:`sf-dt-context`},x={class:`sf-dt-section`},S={class:`sf-dt-dl`},C={class:`sf-dt-col`},w={class:`sf-dt-section`},T={class:`sf-dt-dl`},E={class:`sf-dt-section`},D={class:`sf-dt-dl`},O=`https://scayle.dev/documentation/storefront/storefront-application/getting-started/what-is-storefront`,k=o(a({__name:`App`,setup(a){let o=d,s=i(()=>o.value!==null),c=i(()=>_(o.value?.currentPage??null));function l(e){return e===void 0?`—`:e?`yes`:`no`}function u(e){return e===void 0?`—`:String(e)}function f(e){return e.length?e.join(`, `):`none`}return(i,a)=>(n(),r(`div`,v,[e(`nav`,{class:`sf-dt-tabs`},[a[0]||=e(`span`,{class:`sf-dt-tab is-active`},`Context`,-1),e(`a`,{class:`sf-dt-tab sf-dt-doclink`,href:O,target:`_blank`,rel:`noreferrer`},` Storefront docs `)]),s.value?(n(),r(`div`,b,[e(`section`,x,[a[14]||=e(`h4`,{class:`sf-dt-heading`},`Shop & Locale`,-1),e(`dl`,S,[a[1]||=e(`dt`,null,`Tenant space`,-1),e(`dd`,null,t(u(c.value.tenantSpace)),1),a[2]||=e(`dt`,null,`Shop key`,-1),e(`dd`,null,t(u(c.value.shopKey)),1),a[3]||=e(`dt`,null,`Domain`,-1),e(`dd`,null,t(u(c.value.domain)),1),a[4]||=e(`dt`,null,`Country`,-1),e(`dd`,null,t(u(c.value.countryCode)),1),a[5]||=e(`dt`,null,`Locale`,-1),e(`dd`,null,t(u(c.value.locale)),1),a[6]||=e(`dt`,null,`Currency`,-1),e(`dd`,null,t(u(c.value.currency)),1),a[7]||=e(`dt`,null,`Shop-country ID`,-1),e(`dd`,null,t(u(c.value.shopCountryId)),1),a[8]||=e(`dt`,null,`Default country`,-1),e(`dd`,null,t(l(c.value.isDefault)),1),a[9]||=e(`dt`,null,`Country selector`,-1),e(`dd`,null,t(u(c.value.countrySelectorMode)),1),a[10]||=e(`dt`,null,`Available countries`,-1),e(`dd`,null,t(u(c.value.availableCountriesCount)),1),a[11]||=e(`dt`,null,`Available languages`,-1),e(`dd`,null,t(u(c.value.availableLanguagesCount)),1),a[12]||=e(`dt`,null,`Consent required`,-1),e(`dd`,null,t(l(c.value.consentManagementRequired)),1),a[13]||=e(`dt`,null,`OAuth client ID`,-1),e(`dd`,null,t(u(c.value.oauthClientId)),1)])]),e(`div`,C,[e(`section`,w,[a[18]||=e(`h4`,{class:`sf-dt-heading`},`Session`,-1),e(`dl`,T,[a[15]||=e(`dt`,null,`Logged in`,-1),e(`dd`,null,t(l(c.value.isLoggedIn)),1),a[16]||=e(`dt`,null,`Guest`,-1),e(`dd`,null,t(l(c.value.isGuest)),1),a[17]||=e(`dt`,null,`Groups`,-1),e(`dd`,null,t(f(c.value.groups)),1)])]),e(`section`,E,[a[23]||=e(`h4`,{class:`sf-dt-heading`},`Page`,-1),e(`dl`,D,[a[19]||=e(`dt`,null,`Current URL`,-1),e(`dd`,null,t(u(c.value.currentUrl)),1),a[20]||=e(`dt`,null,`Page version`,-1),e(`dd`,null,t(u(c.value.pageVersion)),1),a[21]||=e(`dt`,null,`Config public fields`,-1),e(`dd`,null,t(f(c.value.configPublicFieldKeys)),1),a[22]||=e(`dt`,null,`Country public fields`,-1),e(`dd`,null,t(f(c.value.countryPublicFieldKeys)),1)])])])])):(n(),r(`div`,y,` Waiting for the app page to connect. `))]))}}),[[`__scopeId`,`data-v-2d060a3b`]]);export{k as default};
@@ -0,0 +1 @@
1
+ .sf-dt-list[data-v-116309e0]{border-right:1px solid var(--sf-dt-border);flex-direction:column;width:40%;min-width:240px;display:flex}@container sf-devtools (width<400px){.sf-dt-body.has-selection .sf-dt-list[data-v-116309e0]{display:none}}.sf-dt-filters[data-v-116309e0]{border-bottom:1px solid var(--sf-dt-border);flex-wrap:wrap;gap:3px;padding:6px;display:flex}.sf-dt-filter[data-v-116309e0]{color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:3px;padding:2px 7px;font-size:11px}.sf-dt-filter.is-active[data-v-116309e0]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text)}.sf-dt-rows[data-v-116309e0]{flex:1;margin:0;padding:0;list-style:none;overflow:auto}.sf-dt-row[data-v-116309e0]{cursor:pointer;border-left:2px solid #0000;align-items:center;gap:8px;padding:5px 8px;display:flex}.sf-dt-row[data-v-116309e0]:hover{background:var(--sf-dt-bg-hover)}.sf-dt-row.is-selected[data-v-116309e0]{background:var(--sf-dt-accent-subtle);border-left-color:var(--sf-dt-accent)}.sf-dt-method[data-v-116309e0]{color:var(--sf-dt-accent-text);font-size:10px;font-weight:600}.sf-dt-url[data-v-116309e0]{text-overflow:ellipsis;white-space:nowrap;font-family:var(--sf-dt-mono);flex:1;overflow:hidden}.sf-dt-type[data-v-116309e0]{color:var(--sf-dt-text-faint);font-size:10px}.sf-dt-timing[data-v-116309e0]{color:var(--sf-dt-text-dim);font-size:10px}.sf-dt-diag-count[data-v-116309e0]{background:var(--sf-dt-warn);color:#000;border-radius:8px;padding:0 5px;font-size:10px;font-weight:700}.sf-dt-search[data-v-116309e0]{border:1px solid var(--sf-dt-border);background:var(--sf-dt-bg-elevated);color:var(--sf-dt-text);font:inherit;border-radius:3px;margin:0 6px 6px;padding:3px 6px;font-size:11px}.sf-dt-prev[data-v-116309e0]{border-bottom:1px solid var(--sf-dt-border)}.sf-dt-prev-toggle[data-v-116309e0]{text-align:left;width:100%;color:var(--sf-dt-text-faint);cursor:pointer;font:inherit;background:0 0;border:none;padding:5px 8px;font-size:11px}.sf-dt-prev-rows[data-v-116309e0]{margin:0;padding:0;list-style:none}.sf-dt-prev-row[data-v-116309e0]{opacity:.6;align-items:center;gap:8px;padding:4px 8px;display:flex}.sf-dt-row.is-child[data-v-116309e0]{padding-left:14px}.sf-dt-nest-marker[data-v-116309e0]{color:var(--sf-dt-text-faint);font-family:var(--sf-dt-mono);flex-shrink:0;font-size:13px;line-height:1}.sf-dt-evicted[data-v-116309e0]{color:var(--sf-dt-text-faint);border-top:1px solid var(--sf-dt-border);padding:5px 8px;font-size:10px}.sf-dt-badges[data-v-ead34302]{flex-wrap:wrap;gap:4px;display:flex}.sf-dt-badge-wrap[data-v-ead34302]{position:relative}.sf-dt-badge[data-v-ead34302]{border:1px solid var(--sf-dt-border);color:var(--sf-dt-accent-text);font:inherit;letter-spacing:.03em;cursor:default;background:0 0;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.sf-dt-badge.is-expandable[data-v-ead34302]{cursor:help}.sf-dt-badge-info[data-v-ead34302]{z-index:1;border:1px solid var(--sf-dt-border);background:var(--sf-dt-bg-elevated);border-radius:3px;width:max-content;max-width:280px;margin-top:4px;padding:6px 8px;display:none;position:absolute}.sf-dt-badge-wrap:hover .sf-dt-badge-info[data-v-ead34302],.sf-dt-badge:focus-visible+.sf-dt-badge-info[data-v-ead34302]{display:block}.sf-dt-badge-info p[data-v-ead34302]{color:var(--sf-dt-text-dim);margin:0 0 4px;font-size:11px}.sf-dt-diff[data-v-9d45ffac]{font-family:var(--sf-dt-mono);margin:0;padding:0;list-style:none}.sf-dt-diff-row[data-v-9d45ffac]{flex-wrap:wrap;gap:2px 6px;padding:1px 8px;display:flex}.sf-dt-diff-caret[data-v-9d45ffac]{width:10px;color:var(--sf-dt-text-faint);flex-shrink:0}.sf-dt-diff-marker[data-v-9d45ffac]{flex-shrink:0;font-weight:700}.sf-dt-diff-marker.is-added[data-v-9d45ffac]{color:var(--sf-dt-added)}.sf-dt-diff-marker.is-removed[data-v-9d45ffac]{color:var(--sf-dt-removed)}.sf-dt-diff-key[data-v-9d45ffac]{color:var(--sf-dt-text);flex-shrink:0}.sf-dt-diff-old[data-v-9d45ffac],.sf-dt-diff-new[data-v-9d45ffac],.sf-dt-diff-dim[data-v-9d45ffac]{overflow-wrap:break-word;min-width:0}.sf-dt-diff-old[data-v-9d45ffac]{color:var(--sf-dt-removed);text-decoration:line-through}.sf-dt-diff-new[data-v-9d45ffac]{color:var(--sf-dt-added)}.is-changed .sf-dt-diff-key[data-v-9d45ffac]{color:var(--sf-dt-changed)}.sf-dt-diff-arrow[data-v-9d45ffac]{color:var(--sf-dt-text-faint);flex-shrink:0}.sf-dt-diff-dim[data-v-9d45ffac]{color:var(--sf-dt-text-dim)}.sf-dt-diff-nested[data-v-9d45ffac]{border-left:1px solid var(--sf-dt-border);margin-left:8px;padding-left:16px}.sf-dt-diff-sides[data-v-9d45ffac]{border-left:1px solid var(--sf-dt-border);flex-wrap:wrap;gap:4px 16px;margin-left:8px;padding:2px 0 2px 16px;display:flex}.sf-dt-diff-sides[data-v-9d45ffac]>.sf-dt-tree{flex:200px;min-width:0}.sf-dt-diff-side[data-v-9d45ffac]{border-left:1px solid var(--sf-dt-border);margin-left:8px;padding:2px 0 2px 16px}.sf-dt-response-tab[data-v-4c5a9b98]{flex-direction:column;gap:8px;display:flex}.sf-dt-response-head[data-v-4c5a9b98]{justify-content:space-between;align-items:center;gap:8px;display:flex}.sf-dt-response-entries[data-v-4c5a9b98]{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.sf-dt-response-entry[data-v-4c5a9b98]{align-items:flex-start;gap:6px;display:flex}.sf-dt-response-entry[data-v-4c5a9b98] .sf-dt-tree{flex:1;min-width:0}.sf-dt-badge[data-v-4c5a9b98]{border:1px solid var(--sf-dt-border);color:var(--sf-dt-accent-text);letter-spacing:.03em;background:0 0;border-radius:3px;flex-shrink:0;margin-top:2px;padding:1px 6px;font-size:10px;font-weight:600}.sf-dt-response-note[data-v-4c5a9b98]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text);border-radius:4px;margin:0;padding:6px 10px;font-size:12px}.sf-dt-response-note.is-warning[data-v-4c5a9b98]{color:var(--sf-dt-warn)}.sf-dt-response-note code[data-v-4c5a9b98]{font-family:var(--sf-dt-mono);margin-right:4px}.sf-dt-headers-tab[data-v-e355455a]{flex-direction:column;gap:14px;display:flex}.sf-dt-muted[data-v-e355455a]{color:var(--sf-dt-text-faint);margin:0}.sf-dt-network-tab[data-v-e40bddfb]{flex-direction:column;gap:14px;display:flex}.sf-dt-kv[data-v-e40bddfb]{font-family:var(--sf-dt-mono);grid-template-columns:max-content 1fr;gap:2px 12px;margin:0;display:grid}.sf-dt-kv dt[data-v-e40bddfb]{color:var(--sf-dt-text-faint)}.sf-dt-kv dd[data-v-e40bddfb]{word-break:break-all;margin:0}.sf-dt-muted[data-v-e40bddfb]{color:var(--sf-dt-text-faint);margin:0}.sf-dt-events-tab[data-v-5f80fe16]{flex-direction:column;gap:14px;display:flex}.sf-dt-timeline[data-v-5f80fe16]{font-family:var(--sf-dt-mono);margin:0;padding:0;list-style:none}.sf-dt-timeline-step[data-v-5f80fe16]{border-left:2px solid var(--sf-dt-border);justify-content:space-between;padding:2px 8px;display:flex}.sf-dt-timeline-step.is-success[data-v-5f80fe16]{border-left-color:var(--sf-dt-success)}.sf-dt-timeline-step.is-error[data-v-5f80fe16]{border-left-color:var(--sf-dt-error)}.sf-dt-timeline-step.is-cancelled[data-v-5f80fe16]{border-left-color:var(--sf-dt-warn)}.sf-dt-timeline-name[data-v-5f80fe16]{color:var(--sf-dt-accent-text)}.sf-dt-timeline-offset[data-v-5f80fe16]{color:var(--sf-dt-text-faint)}.sf-dt-raw-events[data-v-5f80fe16]{margin:0;padding:0;list-style:none}.sf-dt-detail[data-v-193dc9e4]{flex-direction:column;flex:1;gap:14px;min-width:0;padding:10px 12px;display:flex;overflow:auto}.sf-dt-overview dl[data-v-193dc9e4]{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0;display:grid}.sf-dt-no-network[data-v-193dc9e4]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text);border-radius:4px;margin:0;padding:6px 10px;font-size:12px}.sf-dt-overview dt[data-v-193dc9e4]{color:var(--sf-dt-text-faint)}.sf-dt-overview dd[data-v-193dc9e4]{font-family:var(--sf-dt-mono);word-break:break-all;margin:0}.sf-dt-diags ul[data-v-193dc9e4]{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.sf-dt-diags li[data-v-193dc9e4]{border-left:3px solid;border-radius:3px;padding:4px 8px}.sf-dt-diags .is-error[data-v-193dc9e4]{border-color:var(--sf-dt-error);color:var(--sf-dt-error)}.sf-dt-diags .is-warning[data-v-193dc9e4]{border-color:var(--sf-dt-warn);color:var(--sf-dt-warn)}.sf-dt-diags .is-info[data-v-193dc9e4]{border-color:var(--sf-dt-info);color:var(--sf-dt-text-dim)}.sf-dt-subtabs[data-v-193dc9e4]{border-bottom:1px solid var(--sf-dt-border);gap:4px;padding-bottom:6px;display:flex}.sf-dt-subtab[data-v-193dc9e4]{color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;text-transform:capitalize;background:0 0;border:none;border-radius:4px;padding:3px 9px;font-size:11px}.sf-dt-subtab.is-active[data-v-193dc9e4]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text)}.sf-dt-tabpanel[data-v-193dc9e4]{flex:1}.sf-dt-detail-head[data-v-193dc9e4]{align-items:center;gap:8px;display:flex}.sf-dt-toast[data-v-193dc9e4]{color:var(--sf-dt-success);font-size:11px}.sf-dt-back[data-v-193dc9e4]{color:var(--sf-dt-accent-text);border-color:var(--sf-dt-accent-text);display:none}@container sf-devtools (width<400px){.sf-dt-back[data-v-193dc9e4]{display:inline-block}}.sf-dt-page-inner[data-v-fd14bde6]{flex-direction:column;flex:1;gap:10px;padding:10px 12px;display:flex;overflow:auto}
@@ -0,0 +1 @@
1
+ .sf-dt-empty[data-v-2d060a3b]{color:var(--sf-dt-text-faint);padding:12px;font-size:13px}.sf-dt-context[data-v-2d060a3b]{flex:1;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;gap:8px 24px;min-height:0;padding:10px 12px;display:grid;overflow:auto}.sf-dt-col[data-v-2d060a3b]{flex-direction:column;gap:16px;display:flex}.sf-dt-section[data-v-2d060a3b]{margin-bottom:16px}.sf-dt-col .sf-dt-section[data-v-2d060a3b]{margin-bottom:0}.sf-dt-dl[data-v-2d060a3b]{grid-template-columns:max-content 1fr;gap:4px 16px;margin:0;font-size:13px;display:grid}.sf-dt-dl dt[data-v-2d060a3b]{color:var(--sf-dt-text-faint)}.sf-dt-dl dd[data-v-2d060a3b]{color:var(--sf-dt-text);font-family:var(--sf-dt-mono);overflow-wrap:anywhere;margin:0}.sf-dt-doclink[data-v-2d060a3b]{align-items:center;margin-left:auto;display:inline-flex}
@@ -0,0 +1,5 @@
1
+ import{F as e,H as t,K as n,N as r,U as i,_ as a,a as o,c as s,ct as c,d as l,f as u,ft as d,g as f,k as p,lt as m,m as h,o as g,p as _,s as v,tt as y,u as b,v as x}from"./preload-helper-J6bGWMBq.js";import{t as S}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as C,r as w,t as T}from"./panel-channel-DjMENemf.js";import{t as E}from"./channel-D7V7aU79.js";import{n as D,r as O,t as k}from"./clipboard-n-T06WI3.js";var A=w({name:E,functions:{},events:{state:{}}}),j=T(A,`Inertia`),M=C(A),ee=j.clearCapture,te=j.setCapturePaused;function N(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function ne(e){let t=[],n=null;return N(e.deferredProps)?n=e.deferredProps:N(e.initialDeferredProps)&&(n=e.initialDeferredProps),n&&t.push({type:`deferred`,label:`DEFERRED`,details:{groups:n}}),e.mergeProps?.length&&t.push({type:`merge`,label:`MERGE`,details:{props:e.mergeProps}}),e.prependProps?.length&&t.push({type:`prepend`,label:`PREPEND`,details:{props:e.prependProps}}),e.deepMergeProps?.length&&t.push({type:`deep-merge`,label:`DEEP MERGE`,details:{props:e.deepMergeProps}}),N(e.scrollProps)&&t.push({type:`scroll`,label:`SCROLL`,details:{props:e.scrollProps}}),N(e.onceProps)&&t.push({type:`once`,label:`ONCE`,details:{props:e.onceProps}}),e.encryptHistory&&t.push({type:`encrypted`,label:`ENCRYPTED`}),e.clearHistory&&t.push({type:`clear-history`,label:`CLEAR HISTORY`}),N(e.flash)&&t.push({type:`flash`,label:`FLASH`,details:{flash:e.flash}}),N(e.rememberedState)&&t.push({type:`remember`,label:`REMEMBER`,details:{keys:Object.keys(e.rememberedState)}}),t}function P(e,t,n){if(typeof sessionStorage>`u`)return t;let r=sessionStorage.getItem(e);return r&&n.includes(r)?r:t}function F(e,t){typeof sessionStorage<`u`&&sessionStorage.setItem(e,t)}function re(e){let t=new Set(e.map(e=>e.visitId));return ae(e,ie(e,t),t)}function ie(e,t){let n=new Map;for(let r of e){let e=r.parentVisitId;if(e!=null&&t.has(e)){let t=n.get(e);t?t.push(r):n.set(e,[r])}}return n}function ae(e,t,n){let r=[];for(let i of e){let e=i.parentVisitId;if(e!=null&&n.has(e))continue;r.push({record:i,depth:0});let a=t.get(i.visitId);if(a)for(let e of a)r.push({record:e,depth:1})}return r}var oe=[`aria-activedescendant`],se={class:`sf-dt-filters`,role:`group`,"aria-label":`Filter by visit type`},ce=[`aria-pressed`,`onClick`],I={key:0,class:`sf-dt-prev`},L=[`aria-expanded`],R={key:0,id:`sf-dt-prev-rows`,class:`sf-dt-prev-rows`},z={class:`sf-dt-method`},B={class:`sf-dt-url`},V={class:`sf-dt-type`},H={key:0,class:`sf-dt-timing`},U={class:`sf-dt-rows`},W=[`id`,`aria-selected`,`onClick`],G={key:0,class:`sf-dt-nest-marker`},le={class:`sf-dt-method`},ue={class:`sf-dt-url`},de={class:`sf-dt-type`},fe={class:`sf-dt-timing`},pe={key:1,class:`sf-dt-diag-count`},me={key:1,class:`sf-dt-empty`},he={key:2,class:`sf-dt-evicted`},ge={class:`sf-dt-visually-hidden`,role:`status`,"aria-live":`polite`},_e=S(x({__name:`RequestList`,props:{requests:{},selectedId:{},paused:{type:Boolean}},emits:[`select`],setup(e,{expose:a,emit:c}){let u=e,g=c,v=[`all`,`full`,`partial`,`deferred`,`prefetch`,`redirect`,`client`],x=y(P(`inertia-devtools-filter`,`all`,v));i(x,e=>F(`inertia-devtools-filter`,e));let S=y(``),C=y(!1),w=b(()=>M.value?.previousSession??[]),T=b(()=>u.requests.filter(e=>{let t=x.value===`all`||e.type===x.value,n=S.value.trim().toLowerCase(),r=!n||e.url.toLowerCase().includes(n);return t&&r})),E=b(()=>x.value!==`all`||S.value.trim()!==``?T.value.map(e=>({record:e,depth:0})):re(T.value)),D=b(()=>M.value?.evictedCount??0);function O(e){let t=T.value;if(!t.length)return;let n=t.findIndex(e=>e.visitId===u.selectedId);e.key===`ArrowDown`?(e.preventDefault(),g(`select`,t[Math.min(n+1,t.length-1)].visitId)):e.key===`ArrowUp`&&(e.preventDefault(),g(`select`,t[Math.max(n-1,0)].visitId))}function k(e){return e.duration==null?e.finishedAt?``:`…`:`${Math.round(e.duration)}ms`}let A=t(`listEl`);return a({focus:()=>A.value?.focus()}),(t,i)=>(p(),h(`div`,{ref_key:`listEl`,ref:A,class:`sf-dt-list`,tabindex:`0`,role:`listbox`,"aria-label":`Requests`,"aria-activedescendant":e.selectedId==null?void 0:`sf-dt-request-${e.selectedId}`,onKeydown:O},[l(`div`,se,[(p(),h(s,null,r(v,e=>l(`button`,{key:e,class:m([`sf-dt-filter`,{"is-active":x.value===e}]),"aria-pressed":x.value===e,onClick:t=>x.value=e},d(e),11,ce)),64))]),n(l(`input`,{"onUpdate:modelValue":i[0]||=e=>S.value=e,class:`sf-dt-search`,type:`search`,placeholder:`Filter by URL`,"aria-label":`Filter requests by URL`},null,512),[[o,S.value]]),w.value.length?(p(),h(`div`,I,[l(`button`,{class:`sf-dt-prev-toggle`,"aria-expanded":C.value,"aria-controls":`sf-dt-prev-rows`,onClick:i[1]||=e=>C.value=!C.value},d(C.value?`▾`:`▸`)+` Previous session (`+d(w.value.length)+`) `,9,L),C.value?(p(),h(`ul`,R,[(p(!0),h(s,null,r(w.value,e=>(p(),h(`li`,{key:e.visitId,class:`sf-dt-prev-row`},[l(`span`,z,d(e.method),1),l(`span`,B,d(e.url),1),l(`span`,V,d(e.type),1),e.status?(p(),h(`span`,H,d(e.status),1)):_(``,!0)]))),128))])):_(``,!0)])):_(``,!0),l(`ul`,U,[(p(!0),h(s,null,r(E.value,t=>(p(),h(`li`,{id:`sf-dt-request-${t.record.visitId}`,key:t.record.visitId,class:m([`sf-dt-row`,{"is-selected":t.record.visitId===e.selectedId,"is-child":t.depth>0}]),role:`option`,"aria-selected":t.record.visitId===e.selectedId,onClick:e=>g(`select`,t.record.visitId)},[t.depth>0?(p(),h(`span`,G,`┗`)):_(``,!0),l(`span`,le,d(t.record.method),1),l(`span`,ue,d(t.record.url),1),l(`span`,de,d(t.record.type),1),l(`span`,fe,d(k(t.record)),1),t.record.diagnostics.length?(p(),h(`span`,pe,d(t.record.diagnostics.length),1)):_(``,!0)],10,W))),128))]),T.value.length?_(``,!0):(p(),h(`div`,me,[u.requests.length?(p(),h(s,{key:0},[f(`No requests match this filter`)],64)):e.paused?(p(),h(s,{key:1},[f(` Capture is paused. Resume to see new requests. `)],64)):(p(),h(s,{key:2},[f(`Navigate the app to see requests appear here.`)],64))])),D.value?(p(),h(`div`,he,d(D.value)+` earlier request(s) evicted `,1)):_(``,!0),l(`div`,ge,d(T.value.length)+` request`+d(T.value.length===1?``:`s`)+` captured `,1)],40,oe))}}),[[`__scopeId`,`data-v-116309e0`]]),ve={partial:{description:`Only specific props were requested, reducing response size.`,docsUrl:`https://inertiajs.com/partial-reloads`},deferred:{description:`Heavy props loaded asynchronously after initial page render.`,docsUrl:`https://inertiajs.com/deferred-props`},merge:{description:`Props merged with existing values instead of replacing.`,docsUrl:`https://inertiajs.com/merging-props`},"deep-merge":{description:`Props deep-merged with existing values.`,docsUrl:`https://inertiajs.com/merging-props`},prepend:{description:`New items prepended to an existing array prop.`,docsUrl:`https://inertiajs.com/merging-props`},scroll:{description:`Infinite-scroll merge metadata present on the page.`,docsUrl:`https://inertiajs.com/merging-props`},once:{description:`Props resolved once and reused on later visits.`,docsUrl:`https://inertiajs.com/the-protocol`},encrypted:{description:`History entry encrypted before storage.`,docsUrl:`https://inertiajs.com/history-encryption`},"clear-history":{description:`Encrypted history state cleared on this visit.`,docsUrl:`https://inertiajs.com/history-encryption`},prefetch:{description:`Response fetched ahead of navigation.`,docsUrl:`https://inertiajs.com/prefetching`},cached:{description:`Served from the prefetch cache, no network request.`,docsUrl:`https://inertiajs.com/prefetching`},flash:{description:`One-off flash data present on the page.`,docsUrl:`https://inertiajs.com/shared-data`},remember:{description:`Local component state persisted across history.`,docsUrl:`https://inertiajs.com/remembering-state`}};function K(e){return ve[e]}var ye={key:0,class:`sf-dt-badges`},be=[`id`,`tabindex`,`aria-describedby`],xe=[`id`],Se=[`href`],q=S(x({__name:`FeatureBadges`,props:{features:{}},setup(e){return(t,n)=>e.features.length?(p(),h(`div`,ye,[(p(!0),h(s,null,r(e.features,e=>(p(),h(`div`,{key:e.type,class:`sf-dt-badge-wrap`},[l(`span`,{id:`sf-dt-badge-${e.type}`,class:m([`sf-dt-badge`,{"is-expandable":c(K)(e.type)}]),tabindex:c(K)(e.type)?0:void 0,"aria-describedby":c(K)(e.type)?`sf-dt-badge-info-${e.type}`:void 0},d(e.label),11,be),c(K)(e.type)?(p(),h(`div`,{key:0,id:`sf-dt-badge-info-${e.type}`,class:`sf-dt-badge-info`,role:`tooltip`},[l(`p`,null,d(c(K)(e.type)?.description),1),l(`a`,{class:`sf-dt-doclink`,href:c(K)(e.type)?.docsUrl,target:`_blank`,rel:`noreferrer`},`Documentation`,8,Se)],8,xe)):_(``,!0)]))),128))])):_(``,!0)}}),[[`__scopeId`,`data-v-ead34302`]]);function Ce(e,t,n){return n.deepMergeProps?.includes(e)?`deep-merged`:n.prependProps?.includes(e)?`prepended`:n.mergeProps?.includes(e)?`merged`:t.type===`deferred`?`deferred`:t.type===`partial`&&t.only?.includes(e)?`partial`:`full`}function we(e){if(!e.responseProps)return null;let t=e.page??{},n=Object.entries(e.responseProps).map(([n,r])=>({key:n,value:r,kind:Ce(n,e,t)})),r=(e.only??[]).filter(t=>!(t in e.responseProps)).map(e=>({key:e})),i=new Set(Object.keys(e.responseProps));return{entries:n,missingOnly:r,carriedOverCount:(e.previousPage?Object.keys(e.previousPage.props):[]).filter(e=>!i.has(e)).length}}function J(e,t){if(!e&&!t)return[];if(!e)return Object.entries(t).map(([e,t])=>({type:`added`,key:e,newValue:t}));if(!t)return Object.entries(e).map(([e,t])=>({type:`removed`,key:e,oldValue:t}));let n=new Set([...Object.keys(e),...Object.keys(t)]),r=[];for(let i of n){let n=i in e,a=i in t,o=e[i],s=t[i];n?a?r.push(Y(i,o,s)):r.push({type:`removed`,key:i,oldValue:o}):r.push({type:`added`,key:i,newValue:s})}return r.toSorted((e,t)=>{let n={added:0,removed:1,changed:2,nested:3,unchanged:4},r=n[e.type]-n[t.type];return r===0?e.key.localeCompare(t.key):r})}function Y(e,t,n){if(X(t)&&X(n)){let r=J(t,n),i=r.some(e=>e.type!==`unchanged`);return{type:i?`nested`:`unchanged`,key:e,newValue:n,children:i?r:void 0}}return Array.isArray(t)&&Array.isArray(n)?Te(e,t,n):Ee(t,n)?{type:`unchanged`,key:e,newValue:n}:{type:`changed`,key:e,oldValue:t,newValue:n}}function Te(e,t,n){let r=Math.max(t.length,n.length),i=[];for(let e=0;e<r;e++){let r=`[${e}]`;e>=t.length?i.push({type:`added`,key:r,newValue:n[e]}):e>=n.length?i.push({type:`removed`,key:r,oldValue:t[e]}):i.push(Y(r,t[e],n[e]))}return i.every(e=>e.type===`unchanged`)?{type:`unchanged`,key:e,newValue:n}:{type:`nested`,key:e,newValue:n,children:i}}function X(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ee(e,t){return Z(e,t,new WeakSet)}function Z(e,t,n){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t)return!1;if(typeof e==`object`){if(n.has(e)||n.has(t))return!1;n.add(e),n.add(t)}try{if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((e,r)=>Z(e,t[r],n));if(X(e)&&X(t)){let r=Object.keys(e),i=Object.keys(t);return r.length===i.length&&r.every(r=>Z(e[r],t[r],n))}return!1}finally{typeof e==`object`&&(n.delete(e),n.delete(t))}}var De={class:`sf-dt-diff`},Oe=[`role`,`tabindex`,`aria-expanded`,`onClick`,`onKeydown`],ke={class:`sf-dt-diff-caret`},Ae={class:`sf-dt-diff-key`},je={class:`sf-dt-diff-old`},Me={class:`sf-dt-diff-new`},Ne={class:`sf-dt-diff-new`},Pe={class:`sf-dt-diff-old`},Fe={key:3,class:`sf-dt-diff-dim`},Ie={key:0,class:`sf-dt-diff-sides`},Le={key:1,class:`sf-dt-diff-side`},Re=S(x({name:`PropsDiff`,__name:`PropsDiff`,props:{before:{},after:{},nodesOverride:{}},setup(t){let n=t,i=b(()=>n.nodesOverride??J(n.before,n.after));function o(e){return typeof e==`object`&&!!e}function c(e){return!!e.children||o(e.oldValue)||o(e.newValue)}function f(e){return typeof e==`string`?`"${e}"`:Array.isArray(e)?`Array(${e.length})`:typeof e==`object`&&e?`{ ${Object.keys(e).length} }`:String(e)}function x(e){return e.type===`removed`?e.oldValue:e.newValue}function S(e){return Array.isArray(e)?e.map((e,t)=>[String(t),e]):typeof e==`object`&&e?Object.entries(e):[]}let C=y(new Set);function w(e){return c(e)&&C.value.has(e.key)}function T(e){if(!c(e))return;let t=new Set(C.value);t.has(e.key)?t.delete(e.key):t.add(e.key),C.value=t}return(t,n)=>{let y=e(`PropsDiff`,!0);return p(),h(`ul`,De,[(p(!0),h(s,null,r(i.value,e=>(p(),h(`li`,{key:e.key,class:m(`is-${e.type}`)},[l(`div`,{class:`sf-dt-diff-row`,role:c(e)?`button`:void 0,tabindex:c(e)?0:void 0,"aria-expanded":c(e)?w(e):void 0,onClick:t=>T(e),onKeydown:[g(t=>T(e),[`enter`]),g(v(t=>T(e),[`prevent`]),[`space`])]},[l(`span`,ke,d(c(e)?w(e)?`▾`:`▸`:``),1),l(`span`,Ae,d(e.key)+`:`,1),e.type===`changed`?(p(),h(s,{key:0},[l(`span`,je,d(f(e.oldValue)),1),n[0]||=l(`span`,{class:`sf-dt-diff-arrow`},`→`,-1),l(`span`,Me,d(f(e.newValue)),1)],64)):e.type===`added`?(p(),h(s,{key:1},[n[1]||=l(`span`,{class:`sf-dt-diff-marker is-added`},`+`,-1),l(`span`,Ne,d(f(e.newValue)),1)],64)):e.type===`removed`?(p(),h(s,{key:2},[n[2]||=l(`span`,{class:`sf-dt-diff-marker is-removed`},`−`,-1),l(`span`,Pe,d(f(e.oldValue)),1)],64)):e.type===`unchanged`?(p(),h(`span`,Fe,d(f(e.newValue)),1)):_(``,!0)],40,Oe),w(e)?(p(),h(s,{key:0},[e.type===`changed`&&o(e.newValue)?(p(),h(`div`,Ie,[a(O,{label:`before`,value:e.oldValue},null,8,[`value`]),a(O,{label:`after`,value:e.newValue},null,8,[`value`])])):e.type!==`changed`&&!e.children&&o(x(e))?(p(),h(`div`,Le,[(p(!0),h(s,null,r(S(x(e)),([e,t])=>(p(),u(O,{key:e,label:e,value:t},null,8,[`label`,`value`]))),128))])):_(``,!0),e.children?(p(),u(y,{key:2,class:`sf-dt-diff-nested`,"nodes-override":e.children},null,8,[`nodes-override`])):_(``,!0)],64)):_(``,!0)],2))),128))])}}}),[[`__scopeId`,`data-v-9d45ffac`]]),ze={class:`sf-dt-response-tab`},Be={class:`sf-dt-response-head`},Ve=[`aria-pressed`],He={class:`sf-dt-response-entries`},Ue={class:`sf-dt-badge`},We={key:0,class:`sf-dt-response-note is-warning`},Ge={key:1,class:`sf-dt-response-note`},Ke={key:2,class:`sf-dt-response-note`},qe=S(x({__name:`ResponseTab`,props:{record:{}},setup(e){let t=e,n=b(()=>we(t.record)),i=y(!1),o={full:`FULL`,partial:`PARTIAL`,deferred:`DEFERRED`,merged:`MERGED`,prepended:`PREPENDED`,"deep-merged":`DEEP MERGED`},c=b(()=>t.record.previousPage?.props),m=b(()=>t.record.page?.props);return(e,t)=>(p(),h(`div`,ze,[l(`div`,Be,[t[1]||=l(`h4`,{class:`sf-dt-heading`},`Response`,-1),l(`button`,{class:`sf-dt-copy`,"aria-pressed":i.value,onClick:t[0]||=e=>i.value=!i.value},d(i.value?`Show response`:`Show changes since last page`),9,Ve)]),i.value?(p(),u(Re,{key:0,before:c.value,after:m.value},null,8,[`before`,`after`])):n.value?(p(),h(s,{key:1},[l(`ul`,He,[(p(!0),h(s,null,r(n.value.entries,e=>(p(),h(`li`,{key:e.key,class:`sf-dt-response-entry`},[l(`span`,Ue,d(o[e.kind]),1),a(O,{label:e.key,value:e.value},null,8,[`label`,`value`])]))),128))]),n.value.missingOnly.length?(p(),h(`p`,We,[t[2]||=f(" Requested via `only` but not in the response: ",-1),(p(!0),h(s,null,r(n.value.missingOnly,e=>(p(),h(`code`,{key:e.key},d(e.key),1))),128))])):_(``,!0),n.value.carriedOverCount?(p(),h(`p`,Ge,d(n.value.carriedOverCount)+` prop`+d(n.value.carriedOverCount===1?``:`s`)+` carried over from the previous page, not part of this response. `,1)):_(``,!0)],64)):(p(),h(`p`,Ke,` No response body captured for this request. This happens when Inertia's internal interceptor registry isn't available (a production build, or an Inertia version that removed it). `))]))}}),[[`__scopeId`,`data-v-4c5a9b98`]]),Je={class:`sf-dt-headers-tab`},Ye={key:0,class:`sf-dt-section`},Xe={key:1,class:`sf-dt-section`},Ze={key:2,class:`sf-dt-muted`},Qe=S(x({__name:`HeadersTab`,props:{record:{}},setup(e){return(t,n)=>(p(),h(`div`,Je,[e.record.headers&&Object.keys(e.record.headers).length?(p(),h(`section`,Ye,[n[0]||=l(`h4`,{class:`sf-dt-heading`},`Request headers`,-1),a(D,{headers:e.record.headers},null,8,[`headers`])])):_(``,!0),e.record.responseHeaders&&Object.keys(e.record.responseHeaders).length?(p(),h(`section`,Xe,[n[1]||=l(`h4`,{class:`sf-dt-heading`},`Response headers`,-1),a(D,{headers:e.record.responseHeaders},null,8,[`headers`])])):_(``,!0),!Object.keys(e.record.headers??{}).length&&!Object.keys(e.record.responseHeaders??{}).length?(p(),h(`p`,Ze,` No headers captured for this request. `)):_(``,!0)]))}}),[[`__scopeId`,`data-v-e355455a`]]),$e={class:`sf-dt-network-tab`},et={class:`sf-dt-section`},tt={class:`sf-dt-kv`},nt={class:`sf-dt-section`},rt={key:0,class:`sf-dt-kv`},it={key:1,class:`sf-dt-muted`},at=S(x({__name:`NetworkTab`,props:{record:{}},setup(e){let t=e,n=b(()=>typeof t.record.visitOptions?.errorBag==`string`?t.record.visitOptions.errorBag:void 0),r=b(()=>Array.isArray(t.record.visitOptions?.reset)?t.record.visitOptions.reset:void 0);function i(e){return e&&e.length?e.join(`, `):`—`}return(t,a)=>(p(),h(`div`,$e,[l(`section`,et,[a[6]||=l(`h4`,{class:`sf-dt-heading`},`Protocol`,-1),l(`dl`,tt,[a[0]||=l(`dt`,null,`Type`,-1),l(`dd`,null,d(e.record.type),1),a[1]||=l(`dt`,null,`Asset version`,-1),l(`dd`,null,d(e.record.page?.version??`—`),1),a[2]||=l(`dt`,null,`Only`,-1),l(`dd`,null,d(i(e.record.only)),1),a[3]||=l(`dt`,null,`Except`,-1),l(`dd`,null,d(i(e.record.except)),1),a[4]||=l(`dt`,null,`Error bag`,-1),l(`dd`,null,d(n.value??`—`),1),a[5]||=l(`dt`,null,`Reset`,-1),l(`dd`,null,d(i(r.value)),1)])]),l(`section`,nt,[a[11]||=l(`h4`,{class:`sf-dt-heading`},`Timing`,-1),e.record.network?(p(),h(`dl`,rt,[a[7]||=l(`dt`,null,`Duration`,-1),l(`dd`,null,d(Math.round(e.record.network.duration))+`ms`,1),a[8]||=l(`dt`,null,`Transfer`,-1),l(`dd`,null,d(e.record.network.transferSize??0)+` B`,1),a[9]||=l(`dt`,null,`Started`,-1),l(`dd`,null,d(Math.round(e.record.network.startedAt)),1),a[10]||=l(`dt`,null,`Finished`,-1),l(`dd`,null,d(Math.round(e.record.network.finishedAt)),1)])):(p(),h(`p`,it,` No network timing (cache hit or client visit) `))]),a[12]||=l(`a`,{class:`sf-dt-doclink`,href:`https://inertiajs.com/the-protocol`,target:`_blank`,rel:`noreferrer`},` Inertia protocol reference `,-1)]))}}),[[`__scopeId`,`data-v-e40bddfb`]]),ot=new Set([`inertia:before`,`inertia:start`,`inertia:success`,`inertia:error`,`inertia:networkError`,`inertia:httpException`,`inertia:navigate`,`inertia:finish`]);function st(e){if(e===`inertia:success`)return`success`;if(e===`inertia:error`||e===`inertia:networkError`||e===`inertia:httpException`)return`error`}function ct(e){if(e.length===0)return[];let t=e[0].timestamp,n=[],r;for(let i of e){if(!ot.has(i.name))continue;let e=st(i.name);e&&(r=e),n.push({name:i.name.replace(`inertia:`,``),offset:`+${Math.round(i.timestamp-t)}ms`,terminal:e})}let i=n.at(-1);return r&&i&&(i.terminal=r),n}var lt={class:`sf-dt-events-tab`},ut={key:0,class:`sf-dt-section`},dt={class:`sf-dt-timeline`},ft={class:`sf-dt-timeline-name`},pt={class:`sf-dt-timeline-offset`},mt={class:`sf-dt-section`},ht={class:`sf-dt-raw-events`},gt=S(x({__name:`EventsTab`,props:{record:{}},setup(e){let t=e,n=b(()=>ct(t.record.events));return(t,i)=>(p(),h(`div`,lt,[n.value.length?(p(),h(`section`,ut,[i[0]||=l(`h4`,{class:`sf-dt-heading`},`Lifecycle`,-1),l(`ol`,dt,[(p(!0),h(s,null,r(n.value,(e,t)=>(p(),h(`li`,{key:t,class:m([`sf-dt-timeline-step`,e.terminal?`is-${e.terminal}`:``])},[l(`span`,ft,d(e.name),1),l(`span`,pt,d(e.offset),1)],2))),128))])])):_(``,!0),l(`section`,mt,[i[1]||=l(`h4`,{class:`sf-dt-heading`},`Events`,-1),l(`ul`,ht,[(p(!0),h(s,null,r(e.record.events,e=>(p(),h(`li`,{key:e.id},[a(O,{label:e.name,value:e.detail},null,8,[`label`,`value`])]))),128))])])]))}}),[[`__scopeId`,`data-v-5f80fe16`]]);function Q(e,t){return`### ${e}\n\n\`\`\`json\n${JSON.stringify(t,null,2)}\n\`\`\``}function _t(e){let t=e.method??`GET`,n=e.type===`full`&&e.duration===0&&e.completed,r=e.type===`client`,i;i=n?`initial page load`:r?`client-side`:e.duration==null?e.finishedAt&&e.startedAt?`${Math.round(e.finishedAt-e.startedAt)}ms`:`in-flight`:`${Math.round(e.duration)}ms`;let a=`${t} ${e.url}`;e.status&&(a+=` → ${e.status}`),a+=` (${i})`;let o=[`## Inertia Request`,``,`**Navigation:** ${a}`];if(e.page&&o.push(`**Component:** ${e.page.component}`),o.push(`**Type:** ${e.type}`),e.only?.length){let t=e.only.map(e=>`\`${e}\``).join(`, `);o.push(`**Only:** ${t}`)}if(e.except?.length){let t=e.except.map(e=>`\`${e}\``).join(`, `);o.push(`**Except:** ${t}`)}return e.cancelled&&o.push(`**Cancelled:** Yes`),e.interrupted&&o.push(`**Interrupted:** Yes`),o.join(`
2
+ `)}function vt(e){let t=[_t(e)];if(e.features.length>0){let n=e.features.map(e=>{let t=K(e.type),n=t?` — ${t.description}`:``;return`- **${e.type}**${n}`});t.push(`### Features\n\n${n.join(`
3
+ `)}`)}return e.error&&t.push(`### Error\n\n\`\`\`\n${String(e.error)}\n\`\`\``),e.page&&t.push(`### Page Object\n\n\`\`\`json\n${JSON.stringify(e.page,null,2)}\n\`\`\``),e.headers&&Object.keys(e.headers).length>0&&t.push(Q(`Request headers`,e.headers)),e.responseHeaders&&Object.keys(e.responseHeaders).length>0&&t.push(Q(`Response headers`,e.responseHeaders)),t.join(`
4
+
5
+ `)}var yt={class:`sf-dt-detail`},bt={class:`sf-dt-detail-head`},xt={key:0,class:`sf-dt-toast`,role:`status`},St={class:`sf-dt-overview`},Ct={key:0,class:`sf-dt-no-network`},wt={key:1,class:`sf-dt-diags`},Tt={class:`sf-dt-subtabs`,role:`tablist`,"aria-label":`Request detail views`},Et=[`id`,`aria-selected`,`onClick`],$=[`aria-labelledby`],Dt=S(x({__name:`RequestDetail`,props:{record:{}},emits:[`back`],setup(e){let t=e,n=[`response`,`headers`,`network`,`events`],o=y(`response`);i(()=>t.record.visitId,()=>{o.value=`response`});let c=b(()=>o.value===`network`||t.record.network?null:t.record.type===`client`?`Client-side visit. No network request sent, so it never appears in the Network tab.`:t.record.features.some(e=>e.type===`cached`)?`Served from the prefetch cache. No network request sent, so it never appears in the Network tab.`:`No network request captured for this visit (for example the initial page load, embedded in the HTML).`);function f(e){return e===`error`?`is-error`:e===`warning`?`is-warning`:`is-info`}let g=y(null),v;function x(){k(vt(t.record)),g.value=`Copied`,clearTimeout(v),v=setTimeout(()=>{g.value=null},2e3)}return(t,i)=>(p(),h(`div`,yt,[l(`div`,bt,[l(`button`,{class:`sf-dt-copy sf-dt-back`,onClick:i[0]||=e=>t.$emit(`back`)},` ← Back `),l(`button`,{class:`sf-dt-copy`,onClick:x},`Copy as Markdown`),g.value?(p(),h(`span`,xt,d(g.value),1)):_(``,!0)]),l(`section`,St,[l(`dl`,null,[i[5]||=l(`dt`,null,`Method`,-1),l(`dd`,null,d(e.record.method),1),i[6]||=l(`dt`,null,`URL`,-1),l(`dd`,null,d(e.record.url),1),i[7]||=l(`dt`,null,`Type`,-1),l(`dd`,null,d(e.record.type),1),e.record.status?(p(),h(s,{key:0},[i[1]||=l(`dt`,null,`Status`,-1),l(`dd`,null,d(e.record.status),1)],64)):_(``,!0),e.record.redirectUrl?(p(),h(s,{key:1},[i[2]||=l(`dt`,null,`Redirect`,-1),l(`dd`,null,d(e.record.redirectUrl),1)],64)):_(``,!0),e.record.page?(p(),h(s,{key:2},[i[3]||=l(`dt`,null,`Component`,-1),l(`dd`,null,d(e.record.page.component),1)],64)):_(``,!0),e.record.duration==null?_(``,!0):(p(),h(s,{key:3},[i[4]||=l(`dt`,null,`Duration`,-1),l(`dd`,null,d(Math.round(e.record.duration))+`ms`,1)],64))])]),i[9]||=l(`hr`,{class:`sf-dt-meta-divider`},null,-1),c.value?(p(),h(`p`,Ct,d(c.value),1)):_(``,!0),a(q,{features:e.record.features},null,8,[`features`]),e.record.diagnostics.length?(p(),h(`section`,wt,[i[8]||=l(`h4`,{class:`sf-dt-heading`},`Diagnostics`,-1),l(`ul`,null,[(p(!0),h(s,null,r(e.record.diagnostics,e=>(p(),h(`li`,{key:e.id,class:m(f(e.severity))},d(e.message),3))),128))])])):_(``,!0),l(`nav`,Tt,[(p(),h(s,null,r(n,e=>l(`button`,{id:`sf-dt-subtab-${e}`,key:e,class:m([`sf-dt-subtab`,{"is-active":o.value===e}]),role:`tab`,"aria-selected":o.value===e,"aria-controls":`sf-dt-subtabpanel`,onClick:t=>o.value=e},d(e),11,Et)),64))]),l(`div`,{id:`sf-dt-subtabpanel`,class:`sf-dt-tabpanel`,role:`tabpanel`,"aria-labelledby":`sf-dt-subtab-${o.value}`},[o.value===`response`?(p(),u(qe,{key:0,record:e.record},null,8,[`record`])):o.value===`headers`?(p(),u(Qe,{key:1,record:e.record},null,8,[`record`])):o.value===`network`?(p(),u(at,{key:2,record:e.record},null,8,[`record`])):(p(),u(gt,{key:3,record:e.record},null,8,[`record`]))],8,$)]))}}),[[`__scopeId`,`data-v-193dc9e4`]]),Ot={class:`sf-devtools`},kt={class:`sf-dt-tabs`,role:`tablist`,"aria-label":`Inertia panel views`},At=[`aria-selected`],jt=[`aria-selected`],Mt=[`aria-pressed`],Nt={key:1,class:`sf-dt-empty`},Pt={key:1,id:`sf-dt-tabpanel-inertia`,class:`sf-dt-body sf-dt-page`,role:`tabpanel`,"aria-labelledby":`sf-dt-tab-page`},Ft={key:0,class:`sf-dt-page-inner`},It={key:1,class:`sf-dt-empty`},Lt=S(x({__name:`App`,setup(e){let n=M,r=y(P(`inertia-devtools-tab`,`requests`,[`requests`,`page`]));i(r,e=>F(`inertia-devtools-tab`,e));let o=b(()=>n.value?.paused??!1);function s(){te(!o.value)}let c=y(null),f=b(()=>n.value?.requests??[]),g=b(()=>n.value?.currentPage??null),_=b(()=>f.value.find(e=>e.visitId===c.value)??null),v=b(()=>{let e=g.value;return e?ne(e):[]}),x=t(`requestList`);function S(){ee(),c.value=null,x.value?.focus()}function C(){c.value=null}return(e,t)=>(p(),h(`div`,Ot,[l(`nav`,kt,[l(`button`,{id:`sf-dt-tab-requests`,class:m([`sf-dt-tab`,{"is-active":r.value===`requests`}]),role:`tab`,"aria-selected":r.value===`requests`,"aria-controls":`sf-dt-tabpanel-inertia`,onClick:t[0]||=e=>r.value=`requests`},` Requests `,10,At),l(`button`,{id:`sf-dt-tab-page`,class:m([`sf-dt-tab`,{"is-active":r.value===`page`}]),role:`tab`,"aria-selected":r.value===`page`,"aria-controls":`sf-dt-tabpanel-inertia`,onClick:t[1]||=e=>r.value=`page`},` Page `,10,jt),l(`button`,{class:`sf-dt-tab sf-dt-tabs-spacer`,"aria-pressed":o.value,onClick:s},d(o.value?`Resume`:`Pause`),9,Mt),l(`button`,{class:`sf-dt-tab sf-dt-tabs-clear`,onClick:S},`Clear`)]),r.value===`requests`?(p(),h(`div`,{key:0,id:`sf-dt-tabpanel-inertia`,class:m([`sf-dt-body`,{"has-selection":_.value}]),role:`tabpanel`,"aria-labelledby":`sf-dt-tab-requests`},[a(_e,{ref_key:`requestList`,ref:x,requests:f.value,"selected-id":c.value,paused:o.value,onSelect:t[2]||=e=>c.value=e},null,8,[`requests`,`selected-id`,`paused`]),_.value?(p(),u(Dt,{key:0,record:_.value,onBack:C},null,8,[`record`])):(p(),h(`div`,Nt,`Select a request to inspect it`))],2)):(p(),h(`div`,Pt,[g.value?(p(),h(`div`,Ft,[a(q,{features:v.value},null,8,[`features`]),a(O,{label:`props`,value:g.value.props},null,8,[`value`])])):(p(),h(`div`,It,`No page captured yet`))]))]))}}),[[`__scopeId`,`data-v-fd14bde6`]]);export{Lt as default};
@@ -0,0 +1 @@
1
+ .sf-dt-list[data-v-ae2504c0]{border-right:1px solid var(--sf-dt-border);flex-direction:column;width:45%;min-width:260px;display:flex}@container sf-devtools (width<400px){.sf-dt-body.has-selection .sf-dt-list[data-v-ae2504c0]{display:none}}.sf-dt-filters[data-v-ae2504c0]{border-bottom:1px solid var(--sf-dt-border);flex-wrap:wrap;gap:3px;padding:6px;display:flex}.sf-dt-filter[data-v-ae2504c0]{color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:3px;padding:2px 7px;font-size:11px}.sf-dt-filter.is-active[data-v-ae2504c0]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text)}.sf-dt-search[data-v-ae2504c0]{border:1px solid var(--sf-dt-border);background:var(--sf-dt-bg-elevated);color:var(--sf-dt-text);font:inherit;border-radius:3px;margin:0 6px 6px;padding:3px 6px;font-size:11px}.sf-dt-prev[data-v-ae2504c0]{border-bottom:1px solid var(--sf-dt-border)}.sf-dt-prev-toggle[data-v-ae2504c0]{text-align:left;width:100%;color:var(--sf-dt-text-faint);cursor:pointer;font:inherit;background:0 0;border:none;padding:5px 8px;font-size:11px}.sf-dt-prev-rows[data-v-ae2504c0]{margin:0;padding:0;list-style:none}.sf-dt-prev-row[data-v-ae2504c0]{opacity:.6;align-items:center;gap:8px;padding:4px 8px;display:flex}.sf-dt-rows[data-v-ae2504c0]{flex:1;margin:0;padding:0;list-style:none;overflow:auto}.sf-dt-row[data-v-ae2504c0]{cursor:pointer;border-left:2px solid #0000;align-items:center;gap:8px;padding:5px 8px;display:flex}.sf-dt-row[data-v-ae2504c0]:hover{background:var(--sf-dt-bg-hover)}.sf-dt-row.is-selected[data-v-ae2504c0]{background:var(--sf-dt-accent-subtle);border-left-color:var(--sf-dt-accent)}.sf-dt-method[data-v-ae2504c0]{color:var(--sf-dt-accent-text);font-size:10px;font-weight:600}.sf-dt-proc[data-v-ae2504c0]{text-overflow:ellipsis;white-space:nowrap;font-family:var(--sf-dt-mono);flex:1;overflow:hidden}.sf-dt-status[data-v-ae2504c0]{color:var(--sf-dt-text-dim);font-size:10px}.sf-dt-status.is-ok[data-v-ae2504c0]{color:var(--sf-dt-success)}.sf-dt-status.is-warn[data-v-ae2504c0]{color:var(--sf-dt-warn)}.sf-dt-status.is-error[data-v-ae2504c0]{color:var(--sf-dt-error)}.sf-dt-timing[data-v-ae2504c0]{color:var(--sf-dt-text-dim);font-size:10px}.sf-dt-empty[data-v-ae2504c0]{color:var(--sf-dt-text-faint);text-align:center;padding:24px}.sf-dt-data-tab[data-v-11eb56d2]{flex-direction:column;gap:14px;display:flex}.sf-dt-muted[data-v-11eb56d2]{color:var(--sf-dt-text-faint);margin:0}.sf-dt-error-fields[data-v-11eb56d2]{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0 0 8px;display:grid}.sf-dt-error-fields dt[data-v-11eb56d2]{color:var(--sf-dt-text-faint)}.sf-dt-error-fields dd[data-v-11eb56d2]{font-family:var(--sf-dt-mono);word-break:break-all;margin:0}.sf-dt-section-head[data-v-11eb56d2]{align-items:baseline;gap:8px;display:flex}.sf-dt-raw-toggle[data-v-11eb56d2]{border:1px solid var(--sf-dt-border);color:var(--sf-dt-accent-text);font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:1px 6px;font-size:11px}.sf-dt-raw-toggle[data-v-11eb56d2]:hover{background:var(--sf-dt-bg-hover)}.sf-dt-headers-tab[data-v-57899919]{flex-direction:column;gap:14px;display:flex}.sf-dt-muted[data-v-57899919]{color:var(--sf-dt-text-faint);margin:0}.sf-dt-detail[data-v-7a4da2d9]{flex-direction:column;flex:1;gap:14px;min-width:0;padding:10px 12px;display:flex;overflow:auto}.sf-dt-detail-head[data-v-7a4da2d9]{align-items:center;gap:8px;display:flex}.sf-dt-toast[data-v-7a4da2d9]{color:var(--sf-dt-success);font-size:11px}.sf-dt-back[data-v-7a4da2d9]{color:var(--sf-dt-accent-text);border-color:var(--sf-dt-accent-text);display:none}@container sf-devtools (width<400px){.sf-dt-back[data-v-7a4da2d9]{display:inline-block}}.sf-dt-overview dl[data-v-7a4da2d9]{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0;display:grid}.sf-dt-overview dt[data-v-7a4da2d9]{color:var(--sf-dt-text-faint)}.sf-dt-overview dd[data-v-7a4da2d9]{font-family:var(--sf-dt-mono);word-break:break-all;margin:0}.sf-dt-subtabs[data-v-7a4da2d9]{border-bottom:1px solid var(--sf-dt-border);gap:4px;padding-bottom:6px;display:flex}.sf-dt-subtab[data-v-7a4da2d9]{color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;text-transform:capitalize;background:0 0;border:none;border-radius:4px;padding:3px 9px;font-size:11px}.sf-dt-subtab.is-active[data-v-7a4da2d9]{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text)}.sf-dt-tabpanel[data-v-7a4da2d9]{flex:1}.sf-dt-stats[data-v-3d82d7d9]{flex:1;padding:10px 12px;overflow:auto}table[data-v-3d82d7d9]{border-collapse:collapse;width:100%;font-size:11px}th[data-v-3d82d7d9]{text-align:left;color:var(--sf-dt-text-dim);border-bottom:1px solid var(--sf-dt-border);text-transform:uppercase;letter-spacing:.05em;padding:4px 8px;font-size:10px}.sf-dt-sortable[data-v-3d82d7d9]{cursor:pointer}.sf-dt-sortable.is-active[data-v-3d82d7d9]{color:var(--sf-dt-text)}td[data-v-3d82d7d9]{border-bottom:1px solid var(--sf-dt-border);padding:3px 8px}.sf-dt-proc[data-v-3d82d7d9]{font-family:var(--sf-dt-mono);color:var(--sf-dt-accent-text)}.sf-dt-has-errors[data-v-3d82d7d9]{color:var(--sf-dt-error);font-weight:600}.sf-dt-empty[data-v-3d82d7d9]{color:var(--sf-dt-text-faint);text-align:center;padding:24px}
@@ -0,0 +1 @@
1
+ var e=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};export{e as t};
@@ -0,0 +1 @@
1
+ var e=`storefront-devtools:inertia`,t=`storefront-devtools:storefront`;export{t as n,e as t};
@@ -0,0 +1 @@
1
+ .sf-dt-tree-row[data-v-5e2f5c37]{cursor:default;font-family:var(--sf-dt-mono);gap:6px;padding:1px 8px;display:flex}.sf-dt-tree-row[data-v-5e2f5c37]:hover{background:var(--sf-dt-bg-hover)}.sf-dt-tree-caret[data-v-5e2f5c37]{width:10px;color:var(--sf-dt-text-faint);flex-shrink:0}.sf-dt-tree-key[data-v-5e2f5c37]{color:var(--sf-dt-accent-text);flex-shrink:0}.sf-dt-tree-preview[data-v-5e2f5c37]{overflow-wrap:break-word;min-width:0;color:var(--sf-dt-text-dim)}.sf-dt-header-table[data-v-fcc3c901]{border-collapse:collapse;width:100%;font-family:var(--sf-dt-mono);font-size:12px}.sf-dt-header-table tr[data-v-fcc3c901]{border-bottom:1px solid var(--sf-dt-border)}.sf-dt-header-table tr[data-v-fcc3c901]:last-child{border-bottom:none}.sf-dt-header-table tr[data-v-fcc3c901]:nth-child(2n){background:var(--sf-dt-bg-hover)}.sf-dt-header-table tr[data-v-fcc3c901]:hover{background:var(--sf-dt-accent-subtle)}.sf-dt-header-table th[data-v-fcc3c901],.sf-dt-header-table td[data-v-fcc3c901]{text-align:left;vertical-align:top;padding:4px 8px}.sf-dt-header-table th[data-v-fcc3c901]{white-space:nowrap;width:1px;color:var(--sf-dt-accent-text);border-right:1px solid var(--sf-dt-accent);font-weight:600}.sf-dt-header-table td[data-v-fcc3c901]{color:var(--sf-dt-text);overflow-wrap:break-word;word-break:break-word}
@@ -0,0 +1 @@
1
+ import{F as e,N as t,c as n,d as r,dt as i,f as a,ft as o,k as s,m as c,o as l,p as u,s as d,tt as f,u as p,v as m}from"./preload-helper-J6bGWMBq.js";import{t as h}from"./_plugin-vue_export-helper-BDNMzG2s.js";var g={class:`sf-dt-tree`},_=[`role`,`tabindex`,`aria-expanded`],v={class:`sf-dt-tree-caret`},y={class:`sf-dt-tree-key`},b={class:`sf-dt-tree-preview`},x=h(m({name:`TreeView`,__name:`TreeView`,props:{label:{},value:{},depth:{}},setup(m){let h=m,x=p(()=>h.depth??0),S=f(!1),C=p(()=>Array.isArray(h.value)?`array`:h.value!==null&&typeof h.value==`object`?`object`:`primitive`),w=p(()=>C.value===`array`?h.value.map((e,t)=>[String(t),e]):C.value===`object`?Object.entries(h.value):[]),T=p(()=>C.value===`array`?`Array(${h.value.length})`:C.value===`object`?`{ ${Object.keys(h.value).length} }`:E(h.value));function E(e){return typeof e==`string`?`"${e}"`:String(e)}return(f,p)=>{let h=e(`TreeView`,!0);return s(),c(`div`,g,[r(`div`,{class:`sf-dt-tree-row`,style:i({paddingLeft:`${x.value*16}px`}),role:C.value===`primitive`?void 0:`button`,tabindex:C.value===`primitive`?void 0:0,"aria-expanded":C.value===`primitive`?void 0:S.value,onClick:p[0]||=e=>C.value!==`primitive`&&(S.value=!S.value),onKeydown:[p[1]||=l(e=>C.value!==`primitive`&&(S.value=!S.value),[`enter`]),p[2]||=l(d(e=>C.value!==`primitive`&&(S.value=!S.value),[`prevent`]),[`space`])]},[r(`span`,v,o(C.value===`primitive`?``:S.value?`▾`:`▸`),1),r(`span`,y,o(m.label)+`:`,1),r(`span`,b,o(T.value),1)],44,_),S.value&&C.value!==`primitive`?(s(!0),c(n,{key:0},t(w.value,([e,t])=>(s(),a(h,{key:e,label:e,value:t,depth:x.value+1},null,8,[`label`,`value`,`depth`]))),128)):u(``,!0)])}}}),[[`__scopeId`,`data-v-5e2f5c37`]]),S={class:`sf-dt-header-table`},C={scope:`row`},w=h(m({name:`HeaderTable`,__name:`HeaderTable`,props:{headers:{}},setup(e){return(i,a)=>(s(),c(`table`,S,[r(`tbody`,null,[(s(!0),c(n,null,t(e.headers,(e,t)=>(s(),c(`tr`,{key:t},[r(`th`,C,o(t),1),r(`td`,null,o(e),1)]))),128))])]))}}),[[`__scopeId`,`data-v-fcc3c901`]]);function T(e){navigator.clipboard&&navigator.clipboard.writeText(e).catch(e=>{console.warn(`[storefront-devtools] Could not copy to the clipboard`,e)})}export{w as n,x as r,T as t};
@@ -0,0 +1,2 @@
1
+ import{it as e}from"./preload-helper-J6bGWMBq.js";function t(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}var n={blue:t(34,39),cyan:t(36,39),gray:t(90,39),green:t(32,39),red:t(31,39),yellow:t(33,39),bold:t(1,22),dim:t(2,22),reset:t(0,0),underline:t(4,24)};function r(e,...t){return typeof e==`function`?e(...t):e}var i=Error.captureStackTrace,a=class e extends Error{name;code;docs;fix;sources;data;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.code=this.name=t.code,this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,this.data=t.data,i?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,data:this.data,stack:this.stack}}};function o(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function s(e){let t=e.reporters??[],n={},{docsBase:i}=e;for(let s of Object.keys(e.codes)){let c=e.codes[s],l=c.docs===!1?void 0:c.docs||o(i,s),u=(e={},n={})=>{let i=new a({code:s,why:r(c.why,e),fix:r(c.fix,e),docs:l,cause:e.cause,sources:e.sources,data:r(c.data,e)},u);for(let e of t)e(i,n);return i};n[s]=u}return n}function c(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
2
+ `)}}var l={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},u=c(n);function d(e,{method:t=`warn`}={}){console[t](u(e))}function f(e){return s({...e,reporters:[d,...e.reporters??[]]})}function p(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=Math.random.bind(Math),h=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function g(e=21){let t=``,n=e;for(;n--;)t+=h[m()*64|0];return t}var _=6e4,v=e=>e,y=v,{clearTimeout:b,setTimeout:x}=globalThis;function S(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=v,deserialize:s=y,resolver:c,bind:l=`rpc`,timeout:u=_,proxify:d=!0}=t,f=!1,m=new Map,h,S;async function C(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(h)try{await h}finally{h=void 0}let{promise:l,resolve:d,reject:_}=p(),v=g();s.i=v;let y;async function C(n=s){return u>=0&&(y=x(()=>{try{if(t.onTimeoutError?.call(S,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){_(e)}m.delete(v)},u),typeof y==`object`&&(y=y.unref?.())),m.set(v,{resolve:d,reject:_,timeoutId:y,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(S,s,C,d):await C()}catch(e){if(t.onGeneralError?.call(S,e)!==!0)throw e;return}finally{b(y),m.delete(v)}return l}let w={$call:(e,...t)=>C(e,t,!1),$callOptional:(e,...t)=>C(e,t,!1,!0),$callEvent:(e,...t)=>C(e,t,!0),$callRaw:e=>C(e.method,e.args,e.event,e.optional),$rejectPendingCalls:te,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};S=d?new Proxy({},{get(t,n){if(Object.hasOwn(w,n))return w[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>C(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>C(n,e,!1);return i.asEvent=r,i}}):w;function ee(e){f=!0,m.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),m.clear(),i(T)}function te(e){let t=Array.from(m.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return m.clear(),t}async function T(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(S,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(S,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?S:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(S,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(S,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(S,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=m.get(e);r&&(b(r.timeoutId),n?r.reject(n):r.resolve(t)),m.delete(e)}}return h=r(T),S}function C(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var w=Object.freeze({type:`object`,additionalProperties:!0});function ee(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return w}return w}function te(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;r<e.length;r++){let i=`arg${r}`;t[i]=ee(e[r]),n.push(i)}return{type:`object`,properties:t,required:n,additionalProperties:!1}}function T(e,t){if(Array.isArray(e))return e;if(e==null)return[];if(typeof e!=`object`)return;let n=e;if(t!=null)return Array.from({length:t},(e,t)=>n[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function ne(e,t){return T(e,t)??[e]}function re(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var ie=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function ae(e=21){let t=``,n=e;for(;n--;)t+=ie[Math.random()*64|0];return t}var E=Symbol.for(`immer-nothing`),D=Symbol.for(`immer-draftable`),O=Symbol.for(`immer-state`),oe=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function k(e,...t){{let n=oe[e],r=G(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var A=Object,j=A.getPrototypeOf,M=`constructor`,N=`prototype`,se=`configurable`,ce=`enumerable`,le=`writable`,P=`value`,F=e=>!!e&&!!e[O];function I(e){return e?fe(e)||V(e)||!!e[D]||!!e[M]?.[D]||H(e)||U(e):!1}var ue=A[N][M].toString(),de=new WeakMap;function fe(e){if(!e||!W(e))return!1;let t=j(e);if(t===null||t===A[N])return!0;let n=A.hasOwnProperty.call(t,M)&&t[M];if(n===Object)return!0;if(!G(n))return!1;let r=de.get(n);return r===void 0&&(r=Function.toString.call(n),de.set(n,r)),r===ue}function L(e,t,n=!0){R(e)===0?(n?Reflect.ownKeys(e):A.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function R(e){let t=e[O];return t?t.type_:V(e)?1:H(e)?2:U(e)?3:0}var z=(e,t,n=R(e))=>n===2?e.has(t):A[N].hasOwnProperty.call(e,t),B=(e,t,n=R(e))=>n===2?e.get(t):e[t],pe=(e,t,n,r=R(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function me(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var V=Array.isArray,H=e=>e instanceof Map,U=e=>e instanceof Set,W=e=>typeof e==`object`,G=e=>typeof e==`function`,he=e=>typeof e==`boolean`;function ge(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var _e=e=>W(e)?e?.[O]:null,K=e=>e.copy_||e.base_,ve=e=>e.modified_?e.copy_:e.base_;function ye(e,t){if(H(e))return new Map(e);if(U(e))return new Set(e);if(V(e))return Array[N].slice.call(e);let n=fe(e);if(t===!0||t===`class_only`&&!n){let t=A.getOwnPropertyDescriptors(e);delete t[O];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[le]===!1&&(a[le]=!0,a[se]=!0),(a.get||a.set)&&(t[i]={[se]:!0,[le]:!0,[ce]:a[ce],[P]:e[i]})}return A.create(j(e),t)}{let t=j(e);if(t!==null&&n)return{...e};let r=A.create(t);return A.assign(r,e)}}function be(e,t=!1){return Se(e)||F(e)||!I(e)?e:(R(e)>1&&A.defineProperties(e,{set:q,add:q,clear:q,delete:q}),A.freeze(e),t&&L(e,(e,t)=>{be(t,!0)},!1),e)}function xe(){k(2)}var q={[P]:xe};function Se(e){return e===null||!W(e)||A.isFrozen(e)}var Ce=`MapSet`,we=`Patches`,Te=`ArrayMethods`,Ee={};function J(e){let t=Ee[e];return t||k(0,e),t}var De=e=>!!Ee[e];function Oe(e,t){Ee[e]||(Ee[e]=t)}var Y,ke=()=>Y,Ae=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:De(Ce)?J(Ce):void 0,arrayMethodsPlugin_:De(Te)?J(Te):void 0});function je(e,t){t&&(e.patchPlugin_=J(we),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Me(e){Ne(e),e.drafts_.forEach(Fe),e.drafts_=null}function Ne(e){e===Y&&(Y=e.parent_)}var Pe=e=>Y=Ae(Y,e);function Fe(e){let t=e[O];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Ie(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[O].modified_&&(Me(t),k(4)),I(e)&&(e=Le(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[O].base_,e,t)}else e=Le(t,n);return Re(t,e,!0),Me(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===E?void 0:e}function Le(e,t){if(Se(t))return t;let n=t[O];if(!n)return Ke(t,e.handledSet_,e);if(!Be(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);We(n,e)}return n.copy_}function Re(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&be(t,n)}function ze(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Be=(e,t)=>e.scope_===t,Ve=[];function He(e,t,n,r){let i=K(e),a=e.type_;if(r!==void 0&&B(i,r,a)===t){pe(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;L(i,(e,n)=>{if(F(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??Ve;for(let e of o)pe(i,e,n,a)}function Ue(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Be(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ve(i);He(e,i.draft_??i,a,n),We(i,r)})}function We(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}ze(e)}}function Ge(e,t,n){let{scope_:r}=e;if(F(n)){let i=n[O];Be(i,r)&&i.callbacks_.push(function(){et(e),He(e,n,ve(i),t)})}else I(n)&&e.callbacks_.push(function(){let i=K(e);e.type_===3?i.has(n)&&Ke(n,r.handledSet_,r):B(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Ke(B(e.copy_,t,e.type_),r.handledSet_,r)})}function Ke(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||F(e)||t.has(e)||!I(e)||Se(e)?e:(t.add(e),L(e,(r,i)=>{if(F(i)){let t=i[O];Be(t,n)&&(pe(e,r,ve(t),e.type_),ze(t))}else I(i)&&Ke(i,t,n)}),e)}function qe(e,t){let n=V(e),r={type_:+!!n,scope_:t?t.scope_:ke(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Je;n&&(i=[r],a=X);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Je={get(e,t){if(t===O)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=K(e);if(!z(i,t,e.type_))return Ze(e,i,t);let a=i[t];if(e.finalized_||!I(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&ge(t))return a;if(a===Ye(e.base_,t)||Xe(e,t,a)){et(e);let n=e.type_===1?+t:t,r=nt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in K(e)},ownKeys(e){return Reflect.ownKeys(K(e))},set(e,t,n){let r=Qe(K(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Ye(K(e),t),i=r?.[O];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(me(n,r)&&(n!==void 0||z(e.base_,t,e.type_)))return!0;et(e),$e(e)}return e.copy_[t]===n&&(n!==void 0||z(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Ge(e,t,n),!0)},deleteProperty(e,t){return et(e),Ye(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),$e(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=K(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[le]:!0,[se]:e.type_!==1||t!==`length`,[ce]:r[ce],[P]:n[t]}},defineProperty(){k(11)},getPrototypeOf(e){return j(e.base_)},setPrototypeOf(){k(12)}},X={};for(let e in Je){let t=Je[e];X[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}X.deleteProperty=function(e,t){return isNaN(parseInt(t))&&k(13),X.set.call(this,e,t,void 0)},X.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&k(14),Je.set.call(this,e[0],t,n,e[0])};function Ye(e,t){let n=e[O];return(n?K(n):e)[t]}function Xe(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!I(n)||n[O]?!1:e.baseRefs_.has(n)}function Ze(e,t,n){let r=Qe(t,n);return r?P in r?r[P]:r.get?.call(e.draft_):void 0}function Qe(e,t){if(!(t in e))return;let n=j(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=j(n)}}function $e(e){e.modified_||(e.modified_=!0,e.parent_&&$e(e.parent_))}function et(e){e.copy_||=(e.assigned_=new Map,ye(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var tt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(G(e)&&!G(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}G(t)||k(6),n!==void 0&&!G(n)&&k(7);let r;if(I(e)){let i=Pe(this),a=nt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Me(i):Ne(i)}return je(i,n),Ie(r,i)}if(!e||!W(e)){if(r=t(e),r===void 0&&(r=e),r===E&&(r=void 0),this.autoFreeze_&&be(r,!0),n){let t=[],i=[];J(we).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}k(1,e)},this.produceWithPatches=(e,t)=>{if(G(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},he(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),he(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),he(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){I(e)||k(8),F(e)&&(e=rt(e));let t=Pe(this),n=nt(t,e,void 0);return n[O].isManual_=!0,Ne(t),n}finishDraft(e,t){let n=e&&e[O];(!n||!n.isManual_)&&k(9);let{scope_:r}=n;return je(r,t),Ie(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=J(we).applyPatches_;return F(e)?r(e,t):this.produce(e,e=>r(e,t))}};function nt(e,t,n,r){let[i,a]=H(t)?J(Ce).proxyMap_(t,n):U(t)?J(Ce).proxySet_(t,n):qe(t,n);return(n?.scope_??ke()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Ue(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function rt(e){return F(e)||k(10,e),it(e)}function it(e){if(!I(e)||Se(e))return e;let t=e[O],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=ye(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=ye(e,!0);return L(n,(e,t)=>{pe(n,e,it(t))},r),t&&(t.finalized_=!1),n}function at(){oe.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=_e(B(e,n.key_)),i=B(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||z(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=B(n,r),!W(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[O];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;L(e.assigned_,(e,l)=>{let u=B(o,e,c),f=B(s,e,c),p=l?z(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===E?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=R(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===M)&&k(19),G(o)&&n===N&&k(19),o=B(o,n),(o===null||!W(o))&&k(18,i.join(`/`))}let s=R(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:k(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:k(17,a)}}),e}function u(e){if(!I(e))return e;if(V(e))return e.map(u);if(H(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(U(e))return new Set(Array.from(e).map(u));let t=Object.create(j(e));for(let n in e)t[n]=u(e[n]);return z(e,D)&&(t[D]=e[D]),t}function d(e){return F(e)?u(e):e}Oe(we,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var Z=new tt,ot=Z.produce,st=Z.produceWithPatches.bind(Z),ct=Z.applyPatches.bind(Z),lt=1e3;function ut(e,t){if(e.add(t),e.size>lt){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function dt(e){let{enablePatches:t=!1}=e;t&&at();let n=re(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=ae())=>{i.has(t)||(at(),r=ct(r,e),ut(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=ae())=>{if(!i.has(a)){if(ut(i,a),t){let[t,i]=st(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=ot(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var ft=Symbol.for(`devframe:browser-agent-registry`),{tools:pt,listeners:mt}=globalThis[ft]??={tools:new Map,listeners:new Set};function ht(){for(let e of mt)e()}function gt(e){let t=Symbol(e.id);return pt.set(t,e),ht(),()=>{pt.delete(t)&&ht()}}var _t=f({docsBase:`https://devfra.me/errors`,codes:{DF0077:{why:e=>`In-page channel function "${e.name}" is not registered on this endpoint.`,fix:"Declare the function in this endpoint's `functions` option."},DF0080:{why:e=>`In-page channel function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it channel-only."}}}),vt=l.postMessage.inPageChannel;function yt(e){return!!e&&typeof e==`object`&&`__dfIpc`in e}function bt(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.channel===vt&&typeof t.name==`string`&&typeof t.panelId==`string`&&(t.kind===`hello`||t.kind===`grant`)}function xt(e,t){if(e?.length)return e;let n=t?.location?.origin;return n&&n!==`null`?[n]:[`*`]}function St(e){let t=[];try{let n=e;for(;n.parent&&n.parent!==n;)t.push(n.parent),n=n.parent}catch{}for(let n of[e,...t])try{let r=n.opener;r&&r!==e&&!t.includes(r)&&t.push(r)}catch{}return t}var Ct={intervalMs:5e3,timeoutMs:12e3};function wt(e){return e===!1?void 0:{...Ct,...e}}var Q=class extends Error{code;name=`InPageChannelError`;constructor(e,t,n){super(t,n),this.code=e}},Tt=new Set;function Et(e){Tt.has(e)||(Tt.add(e),console.warn(`[devframe] ${e}`))}function Dt(e,t,n){for(let r=0;r<e.length;r++){let i=kt(e[r],`${t}[${r}]`,n);if(i)return i}}function Ot(e,t,n){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)return`${t} is an instance of ${e.constructor?.name??`an exotic class`}`;for(let[r,i]of Object.entries(e)){let e=kt(i,`${t}.${r}`,n);if(e)return e}}function kt(e,t,n){if(e!==null&&typeof e!=`boolean`&&typeof e!=`string`)return typeof e==`number`?Number.isFinite(e)?void 0:`${t} is ${e}`:typeof e==`object`?n.has(e)?`${t} is circular`:(n.add(e),Array.isArray(e)?Dt(e,t,n):Ot(e,t,n)):`${t} is ${e===void 0?"`undefined`":`a ${typeof e}`}`}function At(e,t,n){let r=kt(e,t,new Set);if(r)throw new Q(`not-serializable`,`in-page function "${n}" is declared jsonSerializable, but ${r}`)}function jt(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function Mt(e,t,n){for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await i[`~standard`].validate(n[r]);if(a.issues)throw new Q(`invalid-args`,`in-page function "${e}" rejected argument ${r}: ${jt(a.issues)}`)}}function Nt(e,t){return e.serialize?t.map(e.serialize):t}function Pt(e,t){return e.deserialize&&t!==void 0?e.deserialize(t):t}function $(e,t){return`devframe:in-page:${e===`event`?`event`:`function`}:${t}`}var Ft=$(`function`,``);function It(e){let t=new Map,n=new Map;return{definitions:t,register(e){if(`agent`in e&&e.agent){if(e.jsonSerializable===!1)throw _t.DF0080({name:e.name});e.jsonSerializable=!0}t.set($(e.type,e.name),e)},registerInternal(e,n){t.set(e,{name:e,handler:n})},on(e,t){let r=$(`event`,e),i=n.get(r);return i||(i=new Set,n.set(r,i)),i.add(t),()=>{i.delete(t),i.size===0&&n.delete(r)}},resolve(r){let i=t.get(r),a=n.get(r);if(i||a?.size)return async(...t)=>{let a=e.deserialize?t.map(e.deserialize):t;i?.jsonSerializable&&At(a,`its arguments`,i.name),i?.args?.length&&await Mt(i.name,i.args,a);let o=await i?.handler?.(...a);for(let e of[...n.get(r)??[]])e(...a);if(i?.type!==`event`)return i?.jsonSerializable&&o!==void 0&&At(o,`its return value`,i.name),e.serialize&&o!==void 0?e.serialize(o):o}}}}function Lt(e,t){for(let n of t){let t=n(e);if(t)return t}if(e.startsWith(Ft))return()=>{throw _t.DF0077({name:e.slice(Ft.length)})}}function Rt(e,t){let n=[];for(let r of t.definitions.values()){if(r.type===`event`||!(`agent`in r)||!r.agent)continue;let i=r.agent;n.push(gt({id:`${e}:${r.name}`,title:i.title??r.name,description:i.description,safety:C(r.type,i),tags:i.tags,inputSchema:te(r.args),invoke:e=>{let n=ne(e,r.args?.length);return t.resolve($(r.type,r.name))(...n)}}))}return()=>n.forEach(e=>e())}function zt(e){return e instanceof DOMException&&e.name===`DataCloneError`?new Q(`not-cloneable`,`a payload could not be structured-cloned across the in-page channel: ${e.message}. Strip non-cloneable values (functions, DOM nodes, framework reactivity proxies) before sending: declare the function \`jsonSerializable: true\` for a precise error, or provide a \`serialize\` hook.`,{cause:e}):e}function Bt(e,t){let n,r=!1,i={rpc:S({},{post:t=>{try{e.postMessage(t)}catch(e){throw zt(e)}},on:e=>{n=e},off:()=>{n=void 0},timeout:-1,proxify:!1,resolver:(e,n)=>n??t.resolveLocal(e)}),lastActivity:Date.now(),postControl(t){try{e.postMessage({__dfIpc:t})}catch{}},dispose(t){if(r)return;r=!0,t?.bye&&i.postControl(`bye`);let n=new Q(`closed`,`in-page channel call dropped: ${t?.reason??`the in-page channel port was closed`}`);i.rpc.$rejectPendingCalls(({reject:e})=>e(n)),i.rpc.$close(),e.removeEventListener(`message`,a),e.removeEventListener(`close`,o);try{e.close()}catch{}}};function a(e){i.lastActivity=Date.now();let r=e.data;if(yt(r)){r.__dfIpc===`bye`?t.onPeerClosed():t.onControl(r.__dfIpc);return}n?.(r)}function o(){t.onPeerClosed()}return e.addEventListener(`message`,a),e.addEventListener(`close`,o),e.start?.(),i}function Vt(e,t,n){return t<=0?e:new Promise((r,i)=>{let a=setTimeout(()=>i(new Q(`timeout`,n())),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})})}var Ht={subscribe:`devframe:in-page:page-state:subscribe`,set:`devframe:in-page:page-state:set`,patch:`devframe:in-page:page-state:patch`};function Ut(e){let t=new Map,n=new Set,r=new Map,i=new Set;function a(e){n.add(e);let t=r.get(e);if(t){r.delete(e);for(let e of t)e()}}function o(e,n){let r=t.get(e);if(r&&n!==void 0){let e=ae();i.add(e),r.mutate(()=>n,e)}a(e)}function s(t){e.call(Ht.subscribe,[t]).then(e=>o(t,e)).catch(e=>{console.warn(`[devframe] in-page shared state "${t}": subscribe failed`,e)})}return{handlers:{[l.inPageChannel.panelStateUpdated]:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>n,r),a(e)},[l.inPageChannel.panelStatePatch]:(e,n,r)=>{t.get(e)?.patch(n,r),a(e)}},resubscribe(){for(let e of t.keys())s(e)},get:(a,o)=>{let c=t.get(a);if(c)return Promise.resolve(c);let l=dt({initialValue:o?.initialValue,enablePatches:!0});return t.set(a,l),l.on(`updated`,(t,n,r)=>{i.delete(r)||e.isConnected()&&(n?e.callEvent(Ht.patch,[a,n,r]):e.callEvent(Ht.set,[a,t,r]))}),e.isConnected()&&s(a),o?.initialValue===void 0?new Promise(e=>{if(n.has(a)){e(l);return}let t=r.get(a)??[];t.push(()=>e(l)),r.set(a,t)}):Promise.resolve(l)}}}var Wt=300,Gt=3e3,Kt=64;function qt(e){let{name:t}=e,n=e.callTimeoutMs??15e3,r=e.eventBufferLimit??Kt,i=e.window===!1?void 0:e.window??(typeof window>`u`?void 0:window),a=xt(e.allowedOrigins,i),o=wt(e.heartbeat),s={serialize:e.serialize,deserialize:e.deserialize},c=ae(),l=e.targets??(i?St(i):[]),u=!!i&&l.length>0,d=re(),f=It(s);for(let[t,n]of Object.entries(e.functions))f.register({...n,name:t});for(let[t,n]of Object.entries(e.events??{}))f.register({...n,name:t,type:`event`});let p=Rt(t,f),m=`connecting`,h,g,_,v,y=!1,b=[],x=[],S=[];function C(e){m!==e&&(m=e,d.emit(`status:updated`,e))}let w=Ut({isConnected:()=>m===`connected`,callEvent:(e,t)=>T(e,Nt(s,t)),call:(e,t)=>ne(e,Nt(s,t))}),ee=It(s);for(let[e,t]of Object.entries(w.handlers))ee.registerInternal(e,t);function te(e,t){h?.rpc.$callRaw({method:e,args:t,event:!0,optional:!0}).catch(()=>{})}function T(e,n){if(m!==`closed`){if(m===`connected`&&h){te(e,n);return}x.length>=r&&(x.shift(),y||(y=!0,console.warn(`[devframe] in-page channel "${t}": event buffer overflowed while connecting, so the oldest events are being dropped (limit ${r})`))),x.push({method:e,args:n})}}function ne(e,r){return m===`closed`?Promise.reject(new Q(`closed`,`in-page channel "${t}": call "${e}" rejected because the channel is closed`)):Vt(new Promise((t,n)=>{let i=()=>{h.rpc.$call(e,...r).then(e=>t(Pt(s,e)),n)};m===`connected`&&h?i():b.push({run:i,reject:n})}),n,()=>`in-page channel "${t}": call "${e}" timed out after ${n}ms (status: ${m}${m===`connecting`?`; is the page script loaded?`:``})`)}function ie(e,t){h?.dispose({bye:!0,reason:`the panel adopted a newer port`}),h=Bt(e,{resolveLocal:e=>Lt(e,[ee.resolve,f.resolve]),onControl:e=>{e===`ping`&&h?.postControl(`pong`)},onPeerClosed:()=>D(`the page script went away`)}),g=t,E(),C(`connected`),o&&(v=setInterval(()=>{h&&(Date.now()-h.lastActivity>o.timeoutMs?D(`the page script went silent (heartbeat timeout)`):h.postControl(`ping`))},o.intervalMs));for(let e of b.splice(0))e.run();for(let{method:e,args:t}of x.splice(0))te(e,t);w.resubscribe();for(let e of S.splice(0))e.resolve()}function E(){_&&=(clearTimeout(_),void 0),v&&=(clearInterval(v),void 0)}function D(e){m!==`closed`&&(h?.dispose({reason:e}),h=void 0,g=void 0,E(),C(`connecting`),u?O():Et(`in-page channel "${t}": transport lost (${e}) and the panel has no handshake targets, so it stays disconnected`))}function O(){if(_||!u||m!==`connecting`)return;let n=e.helloIntervalMs??Wt,r=()=>{let i={channel:vt,v:2,kind:`hello`,name:t,panelId:c,instanceId:e.instanceId};for(let e of l)for(let t of a)try{e.postMessage(i,t)}catch{}n=Math.min(n*1.5,Gt),_=setTimeout(r,n)};r()}let oe=n=>{if(m===`closed`)return;let r=n.data;if(!bt(r)||r.kind!==`grant`||r.name!==t||r.panelId!==c)return;if(r.v!==2){Et(`in-page channel "${t}": ignoring a grant with protocol version ${r.v} (this side speaks 2); align the devframe versions of the page script and the panel`);return}if(!a.includes(`*`)&&!a.includes(n.origin)){Et(`in-page channel "${t}": ignoring a grant from disallowed origin "${n.origin}"`);return}if(e.instanceId&&r.instanceId!==e.instanceId)return;let i=n.ports?.[0];i&&ie(i,{instanceId:r.instanceId})};return i?.addEventListener(`message`,oe),e.transport?ie(e.transport):u?O():Et(`in-page channel "${t}": the panel has no handshake targets (not embedded, no opener) and no transport, so calls will buffer until a transport appears or the channel is closed`),{name:t,get status(){return m},get pageScript(){return g},events:{on:d.on,once:d.once},whenConnected:e=>m===`connected`?Promise.resolve():m===`closed`?Promise.reject(new Q(`closed`,`in-page channel "${t}" is closed`)):new Promise((n,r)=>{let i={resolve:n,reject:r};S.push(i),e!==void 0&&e>0&&setTimeout(()=>{let n=S.indexOf(i);n>=0&&(S.splice(n,1),r(new Q(`timeout`,`in-page channel "${t}": no page script answered within ${e}ms; it may not be loaded in this context (render a fallback state)`)))},e)}),call:(e,...t)=>ne($(`function`,e),Nt(s,t)),emit:(e,...t)=>T($(`event`,e),Nt(s,t)),on:(e,t)=>f.on(e,t),sharedState:w,close:()=>{if(m===`closed`)return;C(`closed`),p(),E(),i?.removeEventListener(`message`,oe),h?.dispose({bye:!0,reason:`the panel closed the channel`}),h=void 0,g=void 0;let e=new Q(`closed`,`in-page channel "${t}" was closed`);for(let t of b.splice(0))t.reject(e);x.length=0;for(let t of S.splice(0))t.reject(e)}}}function Jt(t){let n=e(null);t.on(`state`,e=>{n.value=e});async function r(){try{n.value=await t.call(`getState`)}catch(e){console.warn(`[storefront-devtools] Could not load panel state`,e)}}return t.events.on(`status:updated`,e=>{e===`connected`&&r()}),t.status===`connected`&&r(),n}function Yt(e,t){function n(e){return t=>{console.warn(`[storefront-devtools] Could not ${e}`,t)}}return{clearCapture:()=>{e.call(`clear`).catch(n(`clear the ${t} capture`))},setCapturePaused:r=>{e.call(`setPaused`,r).catch(n(`change the ${t} capture pause state`))}}}export{Jt as n,qt as r,Yt as t};
@@ -0,0 +1 @@
1
+ .sf-devtools{--sf-dt-accent:#5328e1;--sf-dt-accent-hover:#6b45e8;--sf-dt-accent-subtle:#5328e133;--sf-dt-accent-text:#a48bff;--sf-dt-bg:#16151c;--sf-dt-bg-elevated:#1e1c26;--sf-dt-bg-hover:#272430;--sf-dt-border:#2e2b38;--sf-dt-text:#e7e5ee;--sf-dt-text-dim:#9b97ad;--sf-dt-text-faint:#948fa9;--sf-dt-error:#ff6b6b;--sf-dt-warn:#ffb454;--sf-dt-info:var(--sf-dt-accent);--sf-dt-success:#4ade80;--sf-dt-added:#4ade80;--sf-dt-removed:#ff6b6b;--sf-dt-changed:var(--sf-dt-warn);--sf-dt-mono:ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;background:var(--sf-dt-bg);color:var(--sf-dt-text);flex-direction:column;font-family:system-ui,-apple-system,sans-serif;font-size:12px;line-height:1.5;display:flex;position:absolute;inset:0;overflow:hidden;container:sf-devtools/inline-size}.sf-devtools *{box-sizing:border-box}.sf-devtools :focus-visible{outline:2px solid var(--sf-dt-accent-text);outline-offset:-2px}.sf-dt-tabs{border-bottom:1px solid var(--sf-dt-border);background:var(--sf-dt-bg-elevated);gap:4px;padding:6px 8px;display:flex}.sf-dt-tab{color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;padding:4px 10px}.sf-dt-tab.is-active{background:var(--sf-dt-accent-subtle);color:var(--sf-dt-text)}.sf-dt-tabs-spacer{margin-left:auto}.sf-dt-tabs [aria-pressed=true]:before{content:"▶ "}.sf-dt-tabs [aria-pressed=false]:before{content:"⏸ "}.sf-dt-tabs-clear:before{content:"✕ "}.sf-dt-body{flex:1;min-height:0;display:flex}.sf-dt-empty{color:var(--sf-dt-text-faint);text-align:center;padding:24px}.sf-dt-visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sf-dt-doclink{color:var(--sf-dt-accent-text);font-size:12px;text-decoration:none}.sf-dt-doclink:hover{text-decoration:underline}.sf-dt-doclink:after{content:" ↗";margin-left:2px}.sf-dt-copy{border:1px solid var(--sf-dt-border);color:var(--sf-dt-text-dim);cursor:pointer;font:inherit;background:0 0;border-radius:4px;padding:3px 9px;font-size:12px}.sf-dt-copy:hover{color:var(--sf-dt-text);background:var(--sf-dt-bg-hover)}.sf-dt-copy:not(.sf-dt-back):before{content:"⧉ "}.sf-dt-heading{color:var(--sf-dt-text);margin:0 0 8px;font-size:15px;font-weight:600}.sf-dt-meta-divider{border:none;border-top:1px solid var(--sf-dt-border);margin:0}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/App-VElUrn9P.js","assets/preload-helper-J6bGWMBq.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/panel-channel-DjMENemf.js","assets/channel-D7V7aU79.js","assets/clipboard-n-T06WI3.js","assets/clipboard-BnEeWyfh.css","assets/App-C5-JscO0.css","assets/App-BlEKD1MK.js","assets/App-jiQKInbo.css","assets/App-C1rr07m5.js","assets/App-M0iU7c4p.css"])))=>i.map(i=>d[i]);
2
+ import{r as e,t}from"./preload-helper-J6bGWMBq.js";var n={inertia:()=>t(()=>import(`./App-VElUrn9P.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])),orpc:()=>t(()=>import(`./App-BlEKD1MK.js`),__vite__mapDeps([8,1,2,3,5,6,9])),storefront:()=>t(()=>import(`./App-C1rr07m5.js`),__vite__mapDeps([10,1,2,3,4,11]))};function r(e){return Object.hasOwn(n,e)}var i=new URLSearchParams(location.search).get(`view`)??``,a=r(i)?n[i]:void 0;async function o(t){try{let{default:n}=await t();e(n).mount(`#app`)}catch(e){console.error(`[storefront-devtools] Could not load the panel view`,e)}}a?o(a):document.body.textContent=i?`Unknown Storefront DevTools view "${i}".`:`No Storefront DevTools view selected.`;