@workflow/web 4.1.0-beta.41 → 4.1.0-beta.42

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 (25) hide show
  1. package/build/client/assets/{highlighted-body-B3W2YXNL-DKVOCXmq.js → highlighted-body-B3W2YXNL-Zd0qPYE7.js} +1 -1
  2. package/build/client/assets/{home-MMGoJh7w.js → home-C-j1J39E.js} +1 -1
  3. package/build/client/assets/{manifest-678c3cbf.js → manifest-41615f41.js} +1 -1
  4. package/build/client/assets/mermaid-3ZIDBTTL-BMFG0Hnn.js +172 -0
  5. package/build/client/assets/{root-DQpGl57T.js → root-EzkmXyJV.js} +1 -1
  6. package/build/client/assets/root-SL7uvdv2.css +1 -0
  7. package/build/client/assets/run-detail-C0ZpSKc-.js +36 -0
  8. package/build/client/assets/server-build-d6BKG46c.css +1 -0
  9. package/build/client/assets/{use-workflow-graph-B8LKXrpA.js → use-workflow-graph-DXipnqlR.js} +1 -1
  10. package/build/server/assets/{app-Bdxmgv4c.js → app-BIqik-91.js} +1 -1
  11. package/build/server/assets/{highlighted-body-B3W2YXNL-uEj5-2nD.js → highlighted-body-B3W2YXNL-WkqeTqm-.js} +2 -2
  12. package/build/server/assets/{mermaid-3ZIDBTTL-BvjkIiuk.js → mermaid-3ZIDBTTL-ClaETQoK.js} +2 -2
  13. package/build/server/assets/{server-build-CKAakcyN.js → server-build-Cyb0dncG.js} +1310 -1063
  14. package/build/server/assets/{token-CNug9NIq.js → token-Bjyd4X_e.js} +3 -3
  15. package/build/server/assets/{token-DLqvw7I2.js → token-CTJIoJEi.js} +2 -2
  16. package/build/server/assets/{token-util-DMDYM1rE.js → token-util-D-4jXUkD.js} +2 -2
  17. package/build/server/assets/{token-util-DgFyM3ow.js → token-util-DoGNqK5w.js} +1 -1
  18. package/build/server/assets/{token-util-_HYGsI73.js → token-util-Dp_pg92C.js} +2 -2
  19. package/build/server/index.js +1 -1
  20. package/package.json +3 -3
  21. package/server.js +4 -2
  22. package/build/client/assets/mermaid-3ZIDBTTL-BPJg8vAL.js +0 -172
  23. package/build/client/assets/root-BMRA92qM.css +0 -1
  24. package/build/client/assets/run-detail-DZDSfYol.js +0 -46
  25. package/build/client/assets/server-build-ClfhJhzu.css +0 -1
@@ -14,7 +14,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
14
14
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
15
15
  var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
16
16
  var _a2, _reader;
17
- import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, M as Meta, L as Links, d as ScrollRestoration, e as Scripts, O as Outlet, u as useNavigate, f as useSearchParams, h as Link$1, i as useLocation, j as useParams } from "./app-Bdxmgv4c.js";
17
+ import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, M as Meta, L as Links, d as ScrollRestoration, e as Scripts, O as Outlet, u as useNavigate, f as useSearchParams, h as Link$1, i as useLocation, j as useParams } from "./app-BIqik-91.js";
18
18
  import require$$0$4, { PassThrough } from "node:stream";
19
19
  import require$$0 from "util";
20
20
  import require$$1$1 from "crypto";
@@ -25,7 +25,7 @@ import path$2, { join as join$1, resolve, dirname, isAbsolute, sep } from "node:
25
25
  import { fileURLToPath } from "node:url";
26
26
  import { createRequire } from "module";
27
27
  import require$$0$8, { readdir, readlink, readFile, mkdir, access, constants as constants$5, writeFile, unlink, rm } from "node:fs/promises";
28
- import crypto, { webcrypto } from "node:crypto";
28
+ import crypto, { createHash, webcrypto } from "node:crypto";
29
29
  import require$$1$2 from "tty";
30
30
  import require$$0$1 from "os";
31
31
  import { createRequire as createRequire$1 } from "node:module";
@@ -30198,7 +30198,7 @@ const createLucideIcon = (iconName, iconNode) => {
30198
30198
  * This source code is licensed under the ISC license.
30199
30199
  * See the LICENSE file in the root directory of this source tree.
30200
30200
  */
30201
- const __iconNode$A = [
30201
+ const __iconNode$z = [
30202
30202
  [
30203
30203
  "path",
30204
30204
  {
@@ -30207,14 +30207,14 @@ const __iconNode$A = [
30207
30207
  }
30208
30208
  ]
30209
30209
  ];
30210
- const Activity = createLucideIcon("activity", __iconNode$A);
30210
+ const Activity = createLucideIcon("activity", __iconNode$z);
30211
30211
  /**
30212
30212
  * @license lucide-react v0.575.0 - ISC
30213
30213
  *
30214
30214
  * This source code is licensed under the ISC license.
30215
30215
  * See the LICENSE file in the root directory of this source tree.
30216
30216
  */
30217
- const __iconNode$z = [
30217
+ const __iconNode$y = [
30218
30218
  ["path", { d: "M6.87 6.87a8 8 0 1 0 11.26 11.26", key: "3on8tj" }],
30219
30219
  ["path", { d: "M19.9 14.25a8 8 0 0 0-9.15-9.15", key: "15ghsc" }],
30220
30220
  ["path", { d: "m22 6-3-3", key: "1opdir" }],
@@ -30222,105 +30222,105 @@ const __iconNode$z = [
30222
30222
  ["path", { d: "m2 2 20 20", key: "1ooewy" }],
30223
30223
  ["path", { d: "M4 4 2 6", key: "1ycko6" }]
30224
30224
  ];
30225
- const AlarmClockOff = createLucideIcon("alarm-clock-off", __iconNode$z);
30225
+ const AlarmClockOff = createLucideIcon("alarm-clock-off", __iconNode$y);
30226
30226
  /**
30227
30227
  * @license lucide-react v0.575.0 - ISC
30228
30228
  *
30229
30229
  * This source code is licensed under the ISC license.
30230
30230
  * See the LICENSE file in the root directory of this source tree.
30231
30231
  */
30232
- const __iconNode$y = [
30232
+ const __iconNode$x = [
30233
30233
  ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }],
30234
30234
  ["path", { d: "M7 20V4", key: "1yoxec" }],
30235
30235
  ["path", { d: "M20 8h-5", key: "1vsyxs" }],
30236
30236
  ["path", { d: "M15 10V6.5a2.5 2.5 0 0 1 5 0V10", key: "ag13bf" }],
30237
30237
  ["path", { d: "M15 14h5l-5 6h5", key: "ur5jdg" }]
30238
30238
  ];
30239
- const ArrowDownAZ = createLucideIcon("arrow-down-a-z", __iconNode$y);
30239
+ const ArrowDownAZ = createLucideIcon("arrow-down-a-z", __iconNode$x);
30240
30240
  /**
30241
30241
  * @license lucide-react v0.575.0 - ISC
30242
30242
  *
30243
30243
  * This source code is licensed under the ISC license.
30244
30244
  * See the LICENSE file in the root directory of this source tree.
30245
30245
  */
30246
- const __iconNode$x = [
30246
+ const __iconNode$w = [
30247
30247
  ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }],
30248
30248
  ["path", { d: "M7 4v16", key: "1glfcx" }],
30249
30249
  ["path", { d: "M20 8h-5", key: "1vsyxs" }],
30250
30250
  ["path", { d: "M15 10V6.5a2.5 2.5 0 0 1 5 0V10", key: "ag13bf" }],
30251
30251
  ["path", { d: "M15 14h5l-5 6h5", key: "ur5jdg" }]
30252
30252
  ];
30253
- const ArrowUpAZ = createLucideIcon("arrow-up-a-z", __iconNode$x);
30253
+ const ArrowUpAZ = createLucideIcon("arrow-up-a-z", __iconNode$w);
30254
30254
  /**
30255
30255
  * @license lucide-react v0.575.0 - ISC
30256
30256
  *
30257
30257
  * This source code is licensed under the ISC license.
30258
30258
  * See the LICENSE file in the root directory of this source tree.
30259
30259
  */
30260
- const __iconNode$w = [
30260
+ const __iconNode$v = [
30261
30261
  ["path", { d: "M7 7h10v10", key: "1tivn9" }],
30262
30262
  ["path", { d: "M7 17 17 7", key: "1vkiza" }]
30263
30263
  ];
30264
- const ArrowUpRight = createLucideIcon("arrow-up-right", __iconNode$w);
30264
+ const ArrowUpRight = createLucideIcon("arrow-up-right", __iconNode$v);
30265
30265
  /**
30266
30266
  * @license lucide-react v0.575.0 - ISC
30267
30267
  *
30268
30268
  * This source code is licensed under the ISC license.
30269
30269
  * See the LICENSE file in the root directory of this source tree.
30270
30270
  */
30271
- const __iconNode$v = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
30272
- const Check = createLucideIcon("check", __iconNode$v);
30271
+ const __iconNode$u = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
30272
+ const Check = createLucideIcon("check", __iconNode$u);
30273
30273
  /**
30274
30274
  * @license lucide-react v0.575.0 - ISC
30275
30275
  *
30276
30276
  * This source code is licensed under the ISC license.
30277
30277
  * See the LICENSE file in the root directory of this source tree.
30278
30278
  */
30279
- const __iconNode$u = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
30280
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$u);
30279
+ const __iconNode$t = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
30280
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$t);
30281
30281
  /**
30282
30282
  * @license lucide-react v0.575.0 - ISC
30283
30283
  *
30284
30284
  * This source code is licensed under the ISC license.
30285
30285
  * See the LICENSE file in the root directory of this source tree.
30286
30286
  */
30287
- const __iconNode$t = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
30288
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$t);
30287
+ const __iconNode$s = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
30288
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$s);
30289
30289
  /**
30290
30290
  * @license lucide-react v0.575.0 - ISC
30291
30291
  *
30292
30292
  * This source code is licensed under the ISC license.
30293
30293
  * See the LICENSE file in the root directory of this source tree.
30294
30294
  */
30295
- const __iconNode$s = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
30296
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$s);
30295
+ const __iconNode$r = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
30296
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$r);
30297
30297
  /**
30298
30298
  * @license lucide-react v0.575.0 - ISC
30299
30299
  *
30300
30300
  * This source code is licensed under the ISC license.
30301
30301
  * See the LICENSE file in the root directory of this source tree.
30302
30302
  */
30303
- const __iconNode$r = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
30304
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$r);
30303
+ const __iconNode$q = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
30304
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$q);
30305
30305
  /**
30306
30306
  * @license lucide-react v0.575.0 - ISC
30307
30307
  *
30308
30308
  * This source code is licensed under the ISC license.
30309
30309
  * See the LICENSE file in the root directory of this source tree.
30310
30310
  */
30311
- const __iconNode$q = [
30311
+ const __iconNode$p = [
30312
30312
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30313
30313
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
30314
30314
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
30315
30315
  ];
30316
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$q);
30316
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$p);
30317
30317
  /**
30318
30318
  * @license lucide-react v0.575.0 - ISC
30319
30319
  *
30320
30320
  * This source code is licensed under the ISC license.
30321
30321
  * See the LICENSE file in the root directory of this source tree.
30322
30322
  */
30323
- const __iconNode$p = [
30323
+ const __iconNode$o = [
30324
30324
  [
30325
30325
  "path",
30326
30326
  {
@@ -30330,127 +30330,127 @@ const __iconNode$p = [
30330
30330
  ],
30331
30331
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
30332
30332
  ];
30333
- const CirclePlay = createLucideIcon("circle-play", __iconNode$p);
30333
+ const CirclePlay = createLucideIcon("circle-play", __iconNode$o);
30334
30334
  /**
30335
30335
  * @license lucide-react v0.575.0 - ISC
30336
30336
  *
30337
30337
  * This source code is licensed under the ISC license.
30338
30338
  * See the LICENSE file in the root directory of this source tree.
30339
30339
  */
30340
- const __iconNode$o = [
30340
+ const __iconNode$n = [
30341
30341
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30342
30342
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
30343
30343
  ["path", { d: "M12 17h.01", key: "p32p05" }]
30344
30344
  ];
30345
- const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$o);
30345
+ const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$n);
30346
30346
  /**
30347
30347
  * @license lucide-react v0.575.0 - ISC
30348
30348
  *
30349
30349
  * This source code is licensed under the ISC license.
30350
30350
  * See the LICENSE file in the root directory of this source tree.
30351
30351
  */
30352
- const __iconNode$n = [
30352
+ const __iconNode$m = [
30353
30353
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30354
30354
  ["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
30355
30355
  ];
30356
- const CircleStop = createLucideIcon("circle-stop", __iconNode$n);
30356
+ const CircleStop = createLucideIcon("circle-stop", __iconNode$m);
30357
30357
  /**
30358
30358
  * @license lucide-react v0.575.0 - ISC
30359
30359
  *
30360
30360
  * This source code is licensed under the ISC license.
30361
30361
  * See the LICENSE file in the root directory of this source tree.
30362
30362
  */
30363
- const __iconNode$m = [
30363
+ const __iconNode$l = [
30364
30364
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30365
30365
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
30366
30366
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
30367
30367
  ];
30368
- const CircleX = createLucideIcon("circle-x", __iconNode$m);
30368
+ const CircleX = createLucideIcon("circle-x", __iconNode$l);
30369
30369
  /**
30370
30370
  * @license lucide-react v0.575.0 - ISC
30371
30371
  *
30372
30372
  * This source code is licensed under the ISC license.
30373
30373
  * See the LICENSE file in the root directory of this source tree.
30374
30374
  */
30375
- const __iconNode$l = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
30376
- const Circle = createLucideIcon("circle", __iconNode$l);
30375
+ const __iconNode$k = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
30376
+ const Circle = createLucideIcon("circle", __iconNode$k);
30377
30377
  /**
30378
30378
  * @license lucide-react v0.575.0 - ISC
30379
30379
  *
30380
30380
  * This source code is licensed under the ISC license.
30381
30381
  * See the LICENSE file in the root directory of this source tree.
30382
30382
  */
30383
- const __iconNode$k = [
30383
+ const __iconNode$j = [
30384
30384
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30385
30385
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
30386
30386
  ];
30387
- const Clock = createLucideIcon("clock", __iconNode$k);
30387
+ const Clock = createLucideIcon("clock", __iconNode$j);
30388
30388
  /**
30389
30389
  * @license lucide-react v0.575.0 - ISC
30390
30390
  *
30391
30391
  * This source code is licensed under the ISC license.
30392
30392
  * See the LICENSE file in the root directory of this source tree.
30393
30393
  */
30394
- const __iconNode$j = [
30394
+ const __iconNode$i = [
30395
30395
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
30396
30396
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
30397
30397
  ];
30398
- const Copy = createLucideIcon("copy", __iconNode$j);
30398
+ const Copy = createLucideIcon("copy", __iconNode$i);
30399
30399
  /**
30400
30400
  * @license lucide-react v0.575.0 - ISC
30401
30401
  *
30402
30402
  * This source code is licensed under the ISC license.
30403
30403
  * See the LICENSE file in the root directory of this source tree.
30404
30404
  */
30405
- const __iconNode$i = [
30405
+ const __iconNode$h = [
30406
30406
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
30407
30407
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
30408
30408
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
30409
30409
  ];
30410
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$i);
30410
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$h);
30411
30411
  /**
30412
30412
  * @license lucide-react v0.575.0 - ISC
30413
30413
  *
30414
30414
  * This source code is licensed under the ISC license.
30415
30415
  * See the LICENSE file in the root directory of this source tree.
30416
30416
  */
30417
- const __iconNode$h = [
30417
+ const __iconNode$g = [
30418
30418
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
30419
30419
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
30420
30420
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
30421
30421
  ];
30422
- const GitBranch = createLucideIcon("git-branch", __iconNode$h);
30422
+ const GitBranch = createLucideIcon("git-branch", __iconNode$g);
30423
30423
  /**
30424
30424
  * @license lucide-react v0.575.0 - ISC
30425
30425
  *
30426
30426
  * This source code is licensed under the ISC license.
30427
30427
  * See the LICENSE file in the root directory of this source tree.
30428
30428
  */
30429
- const __iconNode$g = [
30429
+ const __iconNode$f = [
30430
30430
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
30431
30431
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
30432
30432
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
30433
30433
  ];
30434
- const Info$2 = createLucideIcon("info", __iconNode$g);
30434
+ const Info$2 = createLucideIcon("info", __iconNode$f);
30435
30435
  /**
30436
30436
  * @license lucide-react v0.575.0 - ISC
30437
30437
  *
30438
30438
  * This source code is licensed under the ISC license.
30439
30439
  * See the LICENSE file in the root directory of this source tree.
30440
30440
  */
30441
- const __iconNode$f = [
30441
+ const __iconNode$e = [
30442
30442
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
30443
30443
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
30444
30444
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
30445
30445
  ];
30446
- const Link2 = createLucideIcon("link-2", __iconNode$f);
30446
+ const Link2 = createLucideIcon("link-2", __iconNode$e);
30447
30447
  /**
30448
30448
  * @license lucide-react v0.575.0 - ISC
30449
30449
  *
30450
30450
  * This source code is licensed under the ISC license.
30451
30451
  * See the LICENSE file in the root directory of this source tree.
30452
30452
  */
30453
- const __iconNode$e = [
30453
+ const __iconNode$d = [
30454
30454
  ["path", { d: "M3 5h.01", key: "18ugdj" }],
30455
30455
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
30456
30456
  ["path", { d: "M3 19h.01", key: "noohij" }],
@@ -30458,26 +30458,15 @@ const __iconNode$e = [
30458
30458
  ["path", { d: "M8 12h13", key: "1za7za" }],
30459
30459
  ["path", { d: "M8 19h13", key: "m83p4d" }]
30460
30460
  ];
30461
- const List$1 = createLucideIcon("list", __iconNode$e);
30461
+ const List$1 = createLucideIcon("list", __iconNode$d);
30462
30462
  /**
30463
30463
  * @license lucide-react v0.575.0 - ISC
30464
30464
  *
30465
30465
  * This source code is licensed under the ISC license.
30466
30466
  * See the LICENSE file in the root directory of this source tree.
30467
30467
  */
30468
- const __iconNode$d = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
30469
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$d);
30470
- /**
30471
- * @license lucide-react v0.575.0 - ISC
30472
- *
30473
- * This source code is licensed under the ISC license.
30474
- * See the LICENSE file in the root directory of this source tree.
30475
- */
30476
- const __iconNode$c = [
30477
- ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
30478
- ["path", { d: "M7 11V7a5 5 0 0 1 9.9-1", key: "1mm8w8" }]
30479
- ];
30480
- const LockOpen = createLucideIcon("lock-open", __iconNode$c);
30468
+ const __iconNode$c = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
30469
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$c);
30481
30470
  /**
30482
30471
  * @license lucide-react v0.575.0 - ISC
30483
30472
  *
@@ -33964,792 +33953,6 @@ const Lr = /* @__PURE__ */ K$3(() => {
33964
33953
  function kn$1(t, e, n) {
33965
33954
  return e !== "normal" && !(e != null && e.endsWith("px")) && n(`${t} was not resolved to pixel value correctly`, e, Ct$1.WARN), e === "normal" ? 0 : parseInt(e != null ? e : "0", 10);
33966
33955
  }
33967
- var __create = Object.create;
33968
- var __defProp2 = Object.defineProperty;
33969
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
33970
- var __getOwnPropNames = Object.getOwnPropertyNames;
33971
- var __getProtoOf2 = Object.getPrototypeOf;
33972
- var __hasOwnProp = Object.prototype.hasOwnProperty;
33973
- var __commonJS = (cb, mod) => function __require() {
33974
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
33975
- };
33976
- var __export = (target2, all2) => {
33977
- for (var name2 in all2)
33978
- __defProp2(target2, name2, { get: all2[name2], enumerable: true });
33979
- };
33980
- var __copyProps = (to2, from, except, desc) => {
33981
- if (from && typeof from === "object" || typeof from === "function") {
33982
- for (let key of __getOwnPropNames(from))
33983
- if (!__hasOwnProp.call(to2, key) && key !== except)
33984
- __defProp2(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
33985
- }
33986
- return to2;
33987
- };
33988
- var __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf2(mod)) : {}, __copyProps(
33989
- // If the importer is in node compatibility mode or this is not an ESM
33990
- // file that has been converted to a CommonJS file using a Babel-
33991
- // compatible transform (i.e. "__esModule" has not been set), then set
33992
- // "default" to the CommonJS "module.exports" for node compatibility.
33993
- __defProp2(target2, "default", { value: mod, enumerable: true }),
33994
- mod
33995
- ));
33996
- var require_is_object = __commonJS({
33997
- "node_modules/is-object/index.js"(exports$1, module) {
33998
- module.exports = function isObject2(x2) {
33999
- return typeof x2 === "object" && x2 !== null;
34000
- };
34001
- }
34002
- });
34003
- var require_is_window = __commonJS({
34004
- "node_modules/is-window/index.js"(exports$1, module) {
34005
- module.exports = function(obj) {
34006
- if (obj == null) {
34007
- return false;
34008
- }
34009
- var o = Object(obj);
34010
- return o === o.window;
34011
- };
34012
- }
34013
- });
34014
- var require_is_dom = __commonJS({
34015
- "node_modules/is-dom/index.js"(exports$1, module) {
34016
- var isObject2 = require_is_object();
34017
- var isWindow = require_is_window();
34018
- function isNode2(val) {
34019
- if (!isObject2(val) || !isWindow(window) || typeof window.Node !== "function") {
34020
- return false;
34021
- }
34022
- return typeof val.nodeType === "number" && typeof val.nodeName === "string";
34023
- }
34024
- module.exports = isNode2;
34025
- }
34026
- });
34027
- var themes_exports = {};
34028
- __export(themes_exports, {
34029
- chromeDark: () => theme,
34030
- chromeLight: () => theme2
34031
- });
34032
- var theme = {
34033
- BASE_FONT_FAMILY: "Menlo, monospace",
34034
- BASE_FONT_SIZE: "11px",
34035
- BASE_LINE_HEIGHT: 1.2,
34036
- BASE_BACKGROUND_COLOR: "rgb(36, 36, 36)",
34037
- BASE_COLOR: "rgb(213, 213, 213)",
34038
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
34039
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
34040
- OBJECT_NAME_COLOR: "rgb(227, 110, 236)",
34041
- OBJECT_VALUE_NULL_COLOR: "rgb(127, 127, 127)",
34042
- OBJECT_VALUE_UNDEFINED_COLOR: "rgb(127, 127, 127)",
34043
- OBJECT_VALUE_REGEXP_COLOR: "rgb(233, 63, 59)",
34044
- OBJECT_VALUE_STRING_COLOR: "rgb(233, 63, 59)",
34045
- OBJECT_VALUE_SYMBOL_COLOR: "rgb(233, 63, 59)",
34046
- OBJECT_VALUE_NUMBER_COLOR: "hsl(252, 100%, 75%)",
34047
- OBJECT_VALUE_BOOLEAN_COLOR: "hsl(252, 100%, 75%)",
34048
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(85, 106, 242)",
34049
- HTML_TAG_COLOR: "rgb(93, 176, 215)",
34050
- HTML_TAGNAME_COLOR: "rgb(93, 176, 215)",
34051
- HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
34052
- HTML_ATTRIBUTE_NAME_COLOR: "rgb(155, 187, 220)",
34053
- HTML_ATTRIBUTE_VALUE_COLOR: "rgb(242, 151, 102)",
34054
- HTML_COMMENT_COLOR: "rgb(137, 137, 137)",
34055
- HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
34056
- ARROW_COLOR: "rgb(145, 145, 145)",
34057
- ARROW_MARGIN_RIGHT: 3,
34058
- ARROW_FONT_SIZE: 12,
34059
- ARROW_ANIMATION_DURATION: "0",
34060
- TREENODE_FONT_FAMILY: "Menlo, monospace",
34061
- TREENODE_FONT_SIZE: "11px",
34062
- TREENODE_LINE_HEIGHT: 1.2,
34063
- TREENODE_PADDING_LEFT: 12,
34064
- TABLE_BORDER_COLOR: "rgb(85, 85, 85)",
34065
- TABLE_TH_BACKGROUND_COLOR: "rgb(44, 44, 44)",
34066
- TABLE_TH_HOVER_COLOR: "rgb(48, 48, 48)",
34067
- TABLE_SORT_ICON_COLOR: "black",
34068
- //'rgb(48, 57, 66)',
34069
- TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0) 50%, rgba(51, 139, 255, 0.0980392) 50%, rgba(51, 139, 255, 0.0980392))",
34070
- TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
34071
- };
34072
- var theme2 = {
34073
- BASE_FONT_FAMILY: "Menlo, monospace",
34074
- BASE_FONT_SIZE: "11px",
34075
- BASE_LINE_HEIGHT: 1.2,
34076
- BASE_BACKGROUND_COLOR: "white",
34077
- BASE_COLOR: "black",
34078
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
34079
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
34080
- OBJECT_NAME_COLOR: "rgb(136, 19, 145)",
34081
- OBJECT_VALUE_NULL_COLOR: "rgb(128, 128, 128)",
34082
- OBJECT_VALUE_UNDEFINED_COLOR: "rgb(128, 128, 128)",
34083
- OBJECT_VALUE_REGEXP_COLOR: "rgb(196, 26, 22)",
34084
- OBJECT_VALUE_STRING_COLOR: "rgb(196, 26, 22)",
34085
- OBJECT_VALUE_SYMBOL_COLOR: "rgb(196, 26, 22)",
34086
- OBJECT_VALUE_NUMBER_COLOR: "rgb(28, 0, 207)",
34087
- OBJECT_VALUE_BOOLEAN_COLOR: "rgb(28, 0, 207)",
34088
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(13, 34, 170)",
34089
- HTML_TAG_COLOR: "rgb(168, 148, 166)",
34090
- HTML_TAGNAME_COLOR: "rgb(136, 18, 128)",
34091
- HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
34092
- HTML_ATTRIBUTE_NAME_COLOR: "rgb(153, 69, 0)",
34093
- HTML_ATTRIBUTE_VALUE_COLOR: "rgb(26, 26, 166)",
34094
- HTML_COMMENT_COLOR: "rgb(35, 110, 37)",
34095
- HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
34096
- ARROW_COLOR: "#6e6e6e",
34097
- ARROW_MARGIN_RIGHT: 3,
34098
- ARROW_FONT_SIZE: 12,
34099
- ARROW_ANIMATION_DURATION: "0",
34100
- TREENODE_FONT_FAMILY: "Menlo, monospace",
34101
- TREENODE_FONT_SIZE: "11px",
34102
- TREENODE_LINE_HEIGHT: 1.2,
34103
- TREENODE_PADDING_LEFT: 12,
34104
- TABLE_BORDER_COLOR: "#aaa",
34105
- TABLE_TH_BACKGROUND_COLOR: "#eee",
34106
- TABLE_TH_HOVER_COLOR: "hsla(0, 0%, 90%, 1)",
34107
- TABLE_SORT_ICON_COLOR: "#6e6e6e",
34108
- TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255))",
34109
- TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
34110
- };
34111
- var ExpandedPathsContext = reactExports.createContext([{}, () => {
34112
- }]);
34113
- var unselectable = {
34114
- WebkitTouchCallout: "none",
34115
- WebkitUserSelect: "none",
34116
- KhtmlUserSelect: "none",
34117
- MozUserSelect: "none",
34118
- msUserSelect: "none",
34119
- OUserSelect: "none",
34120
- userSelect: "none"
34121
- };
34122
- var createTheme = (theme3) => ({
34123
- DOMNodePreview: {
34124
- htmlOpenTag: {
34125
- base: {
34126
- color: theme3.HTML_TAG_COLOR
34127
- },
34128
- tagName: {
34129
- color: theme3.HTML_TAGNAME_COLOR,
34130
- textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
34131
- },
34132
- htmlAttributeName: {
34133
- color: theme3.HTML_ATTRIBUTE_NAME_COLOR
34134
- },
34135
- htmlAttributeValue: {
34136
- color: theme3.HTML_ATTRIBUTE_VALUE_COLOR
34137
- }
34138
- },
34139
- htmlCloseTag: {
34140
- base: {
34141
- color: theme3.HTML_TAG_COLOR
34142
- },
34143
- offsetLeft: {
34144
- /* hack: offset placeholder */
34145
- marginLeft: -theme3.TREENODE_PADDING_LEFT
34146
- },
34147
- tagName: {
34148
- color: theme3.HTML_TAGNAME_COLOR,
34149
- textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
34150
- }
34151
- },
34152
- htmlComment: {
34153
- color: theme3.HTML_COMMENT_COLOR
34154
- },
34155
- htmlDoctype: {
34156
- color: theme3.HTML_DOCTYPE_COLOR
34157
- }
34158
- },
34159
- ObjectPreview: {
34160
- objectDescription: {
34161
- fontStyle: "italic"
34162
- },
34163
- preview: {
34164
- fontStyle: "italic"
34165
- },
34166
- arrayMaxProperties: theme3.OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES,
34167
- objectMaxProperties: theme3.OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES
34168
- },
34169
- ObjectName: {
34170
- base: {
34171
- color: theme3.OBJECT_NAME_COLOR
34172
- },
34173
- dimmed: {
34174
- opacity: 0.6
34175
- }
34176
- },
34177
- ObjectValue: {
34178
- objectValueNull: {
34179
- color: theme3.OBJECT_VALUE_NULL_COLOR
34180
- },
34181
- objectValueUndefined: {
34182
- color: theme3.OBJECT_VALUE_UNDEFINED_COLOR
34183
- },
34184
- objectValueRegExp: {
34185
- color: theme3.OBJECT_VALUE_REGEXP_COLOR
34186
- },
34187
- objectValueString: {
34188
- color: theme3.OBJECT_VALUE_STRING_COLOR
34189
- },
34190
- objectValueSymbol: {
34191
- color: theme3.OBJECT_VALUE_SYMBOL_COLOR
34192
- },
34193
- objectValueNumber: {
34194
- color: theme3.OBJECT_VALUE_NUMBER_COLOR
34195
- },
34196
- objectValueBoolean: {
34197
- color: theme3.OBJECT_VALUE_BOOLEAN_COLOR
34198
- },
34199
- objectValueFunctionPrefix: {
34200
- color: theme3.OBJECT_VALUE_FUNCTION_PREFIX_COLOR,
34201
- fontStyle: "italic"
34202
- },
34203
- objectValueFunctionName: {
34204
- fontStyle: "italic"
34205
- }
34206
- },
34207
- TreeView: {
34208
- treeViewOutline: {
34209
- padding: 0,
34210
- margin: 0,
34211
- listStyleType: "none"
34212
- }
34213
- },
34214
- TreeNode: {
34215
- treeNodeBase: {
34216
- color: theme3.BASE_COLOR,
34217
- backgroundColor: theme3.BASE_BACKGROUND_COLOR,
34218
- lineHeight: theme3.TREENODE_LINE_HEIGHT,
34219
- cursor: "default",
34220
- boxSizing: "border-box",
34221
- listStyle: "none",
34222
- fontFamily: theme3.TREENODE_FONT_FAMILY,
34223
- fontSize: theme3.TREENODE_FONT_SIZE
34224
- },
34225
- treeNodePreviewContainer: {},
34226
- treeNodePlaceholder: {
34227
- whiteSpace: "pre",
34228
- fontSize: theme3.ARROW_FONT_SIZE,
34229
- marginRight: theme3.ARROW_MARGIN_RIGHT,
34230
- ...unselectable
34231
- },
34232
- treeNodeArrow: {
34233
- base: {
34234
- color: theme3.ARROW_COLOR,
34235
- display: "inline-block",
34236
- // lineHeight: '14px',
34237
- fontSize: theme3.ARROW_FONT_SIZE,
34238
- marginRight: theme3.ARROW_MARGIN_RIGHT,
34239
- ...parseFloat(theme3.ARROW_ANIMATION_DURATION) > 0 ? {
34240
- transition: `transform ${theme3.ARROW_ANIMATION_DURATION} ease 0s`
34241
- } : {},
34242
- ...unselectable
34243
- },
34244
- expanded: {
34245
- WebkitTransform: "rotateZ(90deg)",
34246
- MozTransform: "rotateZ(90deg)",
34247
- transform: "rotateZ(90deg)"
34248
- },
34249
- collapsed: {
34250
- WebkitTransform: "rotateZ(0deg)",
34251
- MozTransform: "rotateZ(0deg)",
34252
- transform: "rotateZ(0deg)"
34253
- }
34254
- },
34255
- treeNodeChildNodesContainer: {
34256
- margin: 0,
34257
- // reset user-agent style
34258
- paddingLeft: theme3.TREENODE_PADDING_LEFT
34259
- }
34260
- },
34261
- TableInspector: {
34262
- base: {
34263
- color: theme3.BASE_COLOR,
34264
- position: "relative",
34265
- border: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
34266
- fontFamily: theme3.BASE_FONT_FAMILY,
34267
- fontSize: theme3.BASE_FONT_SIZE,
34268
- lineHeight: "120%",
34269
- boxSizing: "border-box",
34270
- cursor: "default"
34271
- }
34272
- },
34273
- TableInspectorHeaderContainer: {
34274
- base: {
34275
- top: 0,
34276
- height: "17px",
34277
- left: 0,
34278
- right: 0,
34279
- overflowX: "hidden"
34280
- },
34281
- table: {
34282
- tableLayout: "fixed",
34283
- borderSpacing: 0,
34284
- borderCollapse: "separate",
34285
- height: "100%",
34286
- width: "100%",
34287
- margin: 0
34288
- }
34289
- },
34290
- TableInspectorDataContainer: {
34291
- tr: {
34292
- display: "table-row"
34293
- },
34294
- td: {
34295
- boxSizing: "border-box",
34296
- border: "none",
34297
- // prevent overrides
34298
- height: "16px",
34299
- // /* 0.5 * table.background-size height */
34300
- verticalAlign: "top",
34301
- padding: "1px 4px",
34302
- WebkitUserSelect: "text",
34303
- whiteSpace: "nowrap",
34304
- textOverflow: "ellipsis",
34305
- overflow: "hidden",
34306
- lineHeight: "14px"
34307
- },
34308
- div: {
34309
- position: "static",
34310
- top: "17px",
34311
- bottom: 0,
34312
- overflowY: "overlay",
34313
- transform: "translateZ(0)",
34314
- left: 0,
34315
- right: 0,
34316
- overflowX: "hidden"
34317
- },
34318
- table: {
34319
- positon: "static",
34320
- left: 0,
34321
- top: 0,
34322
- right: 0,
34323
- bottom: 0,
34324
- borderTop: "0 none transparent",
34325
- margin: 0,
34326
- // prevent user agent stylesheet overrides
34327
- backgroundImage: theme3.TABLE_DATA_BACKGROUND_IMAGE,
34328
- backgroundSize: theme3.TABLE_DATA_BACKGROUND_SIZE,
34329
- tableLayout: "fixed",
34330
- // table
34331
- borderSpacing: 0,
34332
- borderCollapse: "separate",
34333
- // height: '100%',
34334
- width: "100%",
34335
- fontSize: theme3.BASE_FONT_SIZE,
34336
- lineHeight: "120%"
34337
- }
34338
- },
34339
- TableInspectorTH: {
34340
- base: {
34341
- position: "relative",
34342
- // anchor for sort icon container
34343
- height: "auto",
34344
- textAlign: "left",
34345
- backgroundColor: theme3.TABLE_TH_BACKGROUND_COLOR,
34346
- borderBottom: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
34347
- fontWeight: "normal",
34348
- verticalAlign: "middle",
34349
- padding: "0 4px",
34350
- whiteSpace: "nowrap",
34351
- textOverflow: "ellipsis",
34352
- overflow: "hidden",
34353
- lineHeight: "14px",
34354
- ":hover": {
34355
- backgroundColor: theme3.TABLE_TH_HOVER_COLOR
34356
- }
34357
- },
34358
- div: {
34359
- whiteSpace: "nowrap",
34360
- textOverflow: "ellipsis",
34361
- overflow: "hidden",
34362
- // prevent user agent stylesheet overrides
34363
- fontSize: theme3.BASE_FONT_SIZE,
34364
- lineHeight: "120%"
34365
- }
34366
- },
34367
- TableInspectorLeftBorder: {
34368
- none: {
34369
- borderLeft: "none"
34370
- },
34371
- solid: {
34372
- borderLeft: `1px solid ${theme3.TABLE_BORDER_COLOR}`
34373
- }
34374
- },
34375
- TableInspectorSortIcon: {
34376
- display: "block",
34377
- marginRight: 3,
34378
- // 4,
34379
- width: 8,
34380
- height: 7,
34381
- marginTop: -7,
34382
- color: theme3.TABLE_SORT_ICON_COLOR,
34383
- fontSize: 12,
34384
- // lineHeight: 14
34385
- ...unselectable
34386
- }
34387
- });
34388
- var DEFAULT_THEME_NAME = "chromeLight";
34389
- var ThemeContext = reactExports.createContext(createTheme(themes_exports[DEFAULT_THEME_NAME]));
34390
- var useStyles = (baseStylesKey) => {
34391
- const themeStyles = reactExports.useContext(ThemeContext);
34392
- return themeStyles[baseStylesKey];
34393
- };
34394
- var themeAcceptor = (WrappedComponent) => {
34395
- const ThemeAcceptor = ({ theme: theme3 = DEFAULT_THEME_NAME, ...restProps }) => {
34396
- const themeStyles = reactExports.useMemo(() => {
34397
- switch (Object.prototype.toString.call(theme3)) {
34398
- case "[object String]":
34399
- return createTheme(themes_exports[theme3]);
34400
- case "[object Object]":
34401
- return createTheme(theme3);
34402
- default:
34403
- return createTheme(themes_exports[DEFAULT_THEME_NAME]);
34404
- }
34405
- }, [theme3]);
34406
- return /* @__PURE__ */ ReactExports.createElement(ThemeContext.Provider, { value: themeStyles }, /* @__PURE__ */ ReactExports.createElement(WrappedComponent, { ...restProps }));
34407
- };
34408
- return ThemeAcceptor;
34409
- };
34410
- var Arrow$2 = ({ expanded: expanded2, styles: styles2 }) => /* @__PURE__ */ ReactExports.createElement(
34411
- "span",
34412
- {
34413
- style: {
34414
- ...styles2.base,
34415
- ...expanded2 ? styles2.expanded : styles2.collapsed
34416
- }
34417
- },
34418
- "▶"
34419
- );
34420
- var TreeNode = reactExports.memo((props) => {
34421
- props = {
34422
- expanded: true,
34423
- nodeRenderer: ({ name: name2 }) => /* @__PURE__ */ ReactExports.createElement("span", null, name2),
34424
- onClick: () => {
34425
- },
34426
- shouldShowArrow: false,
34427
- shouldShowPlaceholder: true,
34428
- ...props
34429
- };
34430
- const { expanded: expanded2, onClick, children: children2, nodeRenderer, title, shouldShowArrow, shouldShowPlaceholder: shouldShowPlaceholder2 } = props;
34431
- const styles2 = useStyles("TreeNode");
34432
- const NodeRenderer2 = nodeRenderer;
34433
- return /* @__PURE__ */ ReactExports.createElement("li", { "aria-expanded": expanded2, role: "treeitem", style: styles2.treeNodeBase, title }, /* @__PURE__ */ ReactExports.createElement("div", { style: styles2.treeNodePreviewContainer, onClick }, shouldShowArrow || reactExports.Children.count(children2) > 0 ? /* @__PURE__ */ ReactExports.createElement(Arrow$2, { expanded: expanded2, styles: styles2.treeNodeArrow }) : shouldShowPlaceholder2 && /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.treeNodePlaceholder }, " "), /* @__PURE__ */ ReactExports.createElement(NodeRenderer2, { ...props })), /* @__PURE__ */ ReactExports.createElement("ol", { role: "group", style: styles2.treeNodeChildNodesContainer }, expanded2 ? children2 : void 0));
34434
- });
34435
- var DEFAULT_ROOT_PATH = "$";
34436
- var WILDCARD = "*";
34437
- function hasChildNodes(data, dataIterator) {
34438
- return !dataIterator(data).next().done;
34439
- }
34440
- var wildcardPathsFromLevel = (level) => {
34441
- return Array.from(
34442
- { length: level },
34443
- (_2, i) => [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, () => "*")).join(".")
34444
- );
34445
- };
34446
- var getExpandedPaths = (data, dataIterator, expandPaths, expandLevel, prevExpandedPaths) => {
34447
- const wildcardPaths = [].concat(wildcardPathsFromLevel(expandLevel)).concat(expandPaths).filter((path2) => typeof path2 === "string");
34448
- const expandedPaths = [];
34449
- wildcardPaths.forEach((wildcardPath) => {
34450
- const keyPaths = wildcardPath.split(".");
34451
- const populatePaths = (curData, curPath, depth) => {
34452
- if (depth === keyPaths.length) {
34453
- expandedPaths.push(curPath);
34454
- return;
34455
- }
34456
- const key = keyPaths[depth];
34457
- if (depth === 0) {
34458
- if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) {
34459
- populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1);
34460
- }
34461
- } else {
34462
- if (key === WILDCARD) {
34463
- for (const { name: name2, data: data2 } of dataIterator(curData)) {
34464
- if (hasChildNodes(data2, dataIterator)) {
34465
- populatePaths(data2, `${curPath}.${name2}`, depth + 1);
34466
- }
34467
- }
34468
- } else {
34469
- const value = curData[key];
34470
- if (hasChildNodes(value, dataIterator)) {
34471
- populatePaths(value, `${curPath}.${key}`, depth + 1);
34472
- }
34473
- }
34474
- }
34475
- };
34476
- populatePaths(data, "", 0);
34477
- });
34478
- return expandedPaths.reduce(
34479
- (obj, path2) => {
34480
- obj[path2] = true;
34481
- return obj;
34482
- },
34483
- { ...prevExpandedPaths }
34484
- );
34485
- };
34486
- var ConnectedTreeNode = reactExports.memo((props) => {
34487
- const { data, dataIterator, path: path2, depth, nodeRenderer } = props;
34488
- const [expandedPaths, setExpandedPaths] = reactExports.useContext(ExpandedPathsContext);
34489
- const nodeHasChildNodes = hasChildNodes(data, dataIterator);
34490
- const expanded2 = !!expandedPaths[path2];
34491
- const handleClick = reactExports.useCallback(
34492
- () => nodeHasChildNodes && setExpandedPaths((prevExpandedPaths) => ({
34493
- ...prevExpandedPaths,
34494
- [path2]: !expanded2
34495
- })),
34496
- [nodeHasChildNodes, setExpandedPaths, path2, expanded2]
34497
- );
34498
- return /* @__PURE__ */ ReactExports.createElement(
34499
- TreeNode,
34500
- {
34501
- expanded: expanded2,
34502
- onClick: handleClick,
34503
- shouldShowArrow: nodeHasChildNodes,
34504
- shouldShowPlaceholder: depth > 0,
34505
- nodeRenderer,
34506
- ...props
34507
- },
34508
- // only render if the node is expanded
34509
- expanded2 ? [...dataIterator(data)].map(({ name: name2, data: data2, ...renderNodeProps }) => {
34510
- return /* @__PURE__ */ ReactExports.createElement(
34511
- ConnectedTreeNode,
34512
- {
34513
- name: name2,
34514
- data: data2,
34515
- depth: depth + 1,
34516
- path: `${path2}.${name2}`,
34517
- key: name2,
34518
- dataIterator,
34519
- nodeRenderer,
34520
- ...renderNodeProps
34521
- }
34522
- );
34523
- }) : null
34524
- );
34525
- });
34526
- var TreeView = reactExports.memo(({ name: name2, data, dataIterator, nodeRenderer, expandPaths, expandLevel }) => {
34527
- const styles2 = useStyles("TreeView");
34528
- const stateAndSetter = reactExports.useState({});
34529
- const [, setExpandedPaths] = stateAndSetter;
34530
- reactExports.useLayoutEffect(
34531
- () => setExpandedPaths(
34532
- (prevExpandedPaths) => getExpandedPaths(data, dataIterator, expandPaths, expandLevel, prevExpandedPaths)
34533
- ),
34534
- [data, dataIterator, expandPaths, expandLevel]
34535
- );
34536
- return /* @__PURE__ */ ReactExports.createElement(ExpandedPathsContext.Provider, { value: stateAndSetter }, /* @__PURE__ */ ReactExports.createElement("ol", { role: "tree", style: styles2.treeViewOutline }, /* @__PURE__ */ ReactExports.createElement(
34537
- ConnectedTreeNode,
34538
- {
34539
- name: name2,
34540
- data,
34541
- dataIterator,
34542
- depth: 0,
34543
- path: DEFAULT_ROOT_PATH,
34544
- nodeRenderer
34545
- }
34546
- )));
34547
- });
34548
- var ObjectName = ({ name: name2, dimmed = false, styles: styles2 = {} }) => {
34549
- const themeStyles = useStyles("ObjectName");
34550
- const appliedStyles = {
34551
- ...themeStyles.base,
34552
- ...dimmed ? themeStyles["dimmed"] : {},
34553
- ...styles2
34554
- };
34555
- return /* @__PURE__ */ ReactExports.createElement("span", { style: appliedStyles }, name2);
34556
- };
34557
- var ObjectValue = ({ object: object2, styles: styles2 }) => {
34558
- const themeStyles = useStyles("ObjectValue");
34559
- const mkStyle = (key) => ({ ...themeStyles[key], ...styles2 });
34560
- switch (typeof object2) {
34561
- case "bigint":
34562
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNumber") }, String(object2), "n");
34563
- case "number":
34564
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNumber") }, String(object2));
34565
- case "string":
34566
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueString") }, '"', object2, '"');
34567
- case "boolean":
34568
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueBoolean") }, String(object2));
34569
- case "undefined":
34570
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueUndefined") }, "undefined");
34571
- case "object":
34572
- if (object2 === null) {
34573
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNull") }, "null");
34574
- }
34575
- if (object2 instanceof Date) {
34576
- return /* @__PURE__ */ ReactExports.createElement("span", null, object2.toString());
34577
- }
34578
- if (object2 instanceof RegExp) {
34579
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueRegExp") }, object2.toString());
34580
- }
34581
- if (Array.isArray(object2)) {
34582
- return /* @__PURE__ */ ReactExports.createElement("span", null, `Array(${object2.length})`);
34583
- }
34584
- if (!object2.constructor) {
34585
- return /* @__PURE__ */ ReactExports.createElement("span", null, "Object");
34586
- }
34587
- if (typeof object2.constructor.isBuffer === "function" && object2.constructor.isBuffer(object2)) {
34588
- return /* @__PURE__ */ ReactExports.createElement("span", null, `Buffer[${object2.length}]`);
34589
- }
34590
- return /* @__PURE__ */ ReactExports.createElement("span", null, object2.constructor.name);
34591
- case "function":
34592
- return /* @__PURE__ */ ReactExports.createElement("span", null, /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueFunctionPrefix") }, "ƒ "), /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueFunctionName") }, object2.name, "()"));
34593
- case "symbol":
34594
- return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueSymbol") }, object2.toString());
34595
- default:
34596
- return /* @__PURE__ */ ReactExports.createElement("span", null);
34597
- }
34598
- };
34599
- var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
34600
- var propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
34601
- function getPropertyValue(object2, propertyName) {
34602
- const propertyDescriptor = Object.getOwnPropertyDescriptor(object2, propertyName);
34603
- if (propertyDescriptor.get) {
34604
- try {
34605
- return propertyDescriptor.get();
34606
- } catch {
34607
- return propertyDescriptor.get;
34608
- }
34609
- }
34610
- return object2[propertyName];
34611
- }
34612
- function intersperse(arr, sep2) {
34613
- if (arr.length === 0) {
34614
- return [];
34615
- }
34616
- return arr.slice(1).reduce((xs, x2) => xs.concat([sep2, x2]), [arr[0]]);
34617
- }
34618
- var ObjectPreview = ({ data }) => {
34619
- const styles2 = useStyles("ObjectPreview");
34620
- const object2 = data;
34621
- if (typeof object2 !== "object" || object2 === null || object2 instanceof Date || object2 instanceof RegExp) {
34622
- return /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: object2 });
34623
- }
34624
- if (Array.isArray(object2)) {
34625
- const maxProperties = styles2.arrayMaxProperties;
34626
- const previewArray = object2.slice(0, maxProperties).map((element2, index2) => /* @__PURE__ */ ReactExports.createElement(ObjectValue, { key: index2, object: element2 }));
34627
- if (object2.length > maxProperties) {
34628
- previewArray.push(/* @__PURE__ */ ReactExports.createElement("span", { key: "ellipsis" }, "…"));
34629
- }
34630
- const arrayLength = object2.length;
34631
- return /* @__PURE__ */ ReactExports.createElement(ReactExports.Fragment, null, /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.objectDescription }, arrayLength === 0 ? `` : `(${arrayLength}) `), /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.preview }, "[", intersperse(previewArray, ", "), "]"));
34632
- } else {
34633
- const maxProperties = styles2.objectMaxProperties;
34634
- const propertyNodes = [];
34635
- for (const propertyName in object2) {
34636
- if (hasOwnProperty$1.call(object2, propertyName)) {
34637
- let ellipsis;
34638
- if (propertyNodes.length === maxProperties - 1 && Object.keys(object2).length > maxProperties) {
34639
- ellipsis = /* @__PURE__ */ ReactExports.createElement("span", { key: "ellipsis" }, "…");
34640
- }
34641
- const propertyValue2 = getPropertyValue(object2, propertyName);
34642
- propertyNodes.push(
34643
- /* @__PURE__ */ ReactExports.createElement("span", { key: propertyName }, /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: propertyName || `""` }), ": ", /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: propertyValue2 }), ellipsis)
34644
- );
34645
- if (ellipsis) break;
34646
- }
34647
- }
34648
- const objectConstructorName = object2.constructor ? object2.constructor.name : "Object";
34649
- return /* @__PURE__ */ ReactExports.createElement(ReactExports.Fragment, null, /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.objectDescription }, objectConstructorName === "Object" ? "" : `${objectConstructorName} `), /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.preview }, "{", intersperse(propertyNodes, ", "), "}"));
34650
- }
34651
- };
34652
- var ObjectRootLabel = ({ name: name2, data }) => {
34653
- if (typeof name2 === "string") {
34654
- return /* @__PURE__ */ ReactExports.createElement("span", null, /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: name2 }), /* @__PURE__ */ ReactExports.createElement("span", null, ": "), /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data }));
34655
- } else {
34656
- return /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data });
34657
- }
34658
- };
34659
- var ObjectLabel = ({ name: name2, data, isNonenumerable = false }) => {
34660
- const object2 = data;
34661
- return /* @__PURE__ */ ReactExports.createElement("span", null, typeof name2 === "string" ? /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: name2, dimmed: isNonenumerable }) : /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data: name2 }), /* @__PURE__ */ ReactExports.createElement("span", null, ": "), /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: object2 }));
34662
- };
34663
- var createIterator = (showNonenumerable, sortObjectKeys) => {
34664
- const objectIterator = function* (data) {
34665
- const shouldIterate = typeof data === "object" && data !== null || typeof data === "function";
34666
- if (!shouldIterate) return;
34667
- const dataIsArray = Array.isArray(data);
34668
- if (!dataIsArray && data[Symbol.iterator]) {
34669
- let i = 0;
34670
- for (const entry2 of data) {
34671
- if (Array.isArray(entry2) && entry2.length === 2) {
34672
- const [k2, v2] = entry2;
34673
- yield {
34674
- name: k2,
34675
- data: v2
34676
- };
34677
- } else {
34678
- yield {
34679
- name: i.toString(),
34680
- data: entry2
34681
- };
34682
- }
34683
- i++;
34684
- }
34685
- } else {
34686
- const keys2 = Object.getOwnPropertyNames(data);
34687
- if (sortObjectKeys === true && !dataIsArray) {
34688
- keys2.sort();
34689
- } else if (typeof sortObjectKeys === "function") {
34690
- keys2.sort(sortObjectKeys);
34691
- }
34692
- for (const propertyName of keys2) {
34693
- if (propertyIsEnumerable.call(data, propertyName)) {
34694
- const propertyValue2 = getPropertyValue(data, propertyName);
34695
- yield {
34696
- name: propertyName || `""`,
34697
- data: propertyValue2
34698
- };
34699
- } else if (showNonenumerable) {
34700
- let propertyValue2;
34701
- try {
34702
- propertyValue2 = getPropertyValue(data, propertyName);
34703
- } catch (e) {
34704
- }
34705
- if (propertyValue2 !== void 0) {
34706
- yield {
34707
- name: propertyName,
34708
- data: propertyValue2,
34709
- isNonenumerable: true
34710
- };
34711
- }
34712
- }
34713
- }
34714
- if (showNonenumerable && data !== Object.prototype) {
34715
- yield {
34716
- name: "__proto__",
34717
- data: Object.getPrototypeOf(data),
34718
- isNonenumerable: true
34719
- };
34720
- }
34721
- }
34722
- };
34723
- return objectIterator;
34724
- };
34725
- var defaultNodeRenderer = ({ depth, name: name2, data, isNonenumerable }) => depth === 0 ? /* @__PURE__ */ ReactExports.createElement(ObjectRootLabel, { name: name2, data }) : /* @__PURE__ */ ReactExports.createElement(ObjectLabel, { name: name2, data, isNonenumerable });
34726
- var ObjectInspector = ({ showNonenumerable = false, sortObjectKeys, nodeRenderer, ...treeViewProps }) => {
34727
- const dataIterator = createIterator(showNonenumerable, sortObjectKeys);
34728
- const renderer = nodeRenderer ? nodeRenderer : defaultNodeRenderer;
34729
- return /* @__PURE__ */ ReactExports.createElement(TreeView, { nodeRenderer: renderer, dataIterator, ...treeViewProps });
34730
- };
34731
- var themedObjectInspector = themeAcceptor(ObjectInspector);
34732
- __toESM(require_is_dom());
34733
- const useDarkMode = () => {
34734
- const [isDark, setIsDark] = reactExports.useState(() => {
34735
- if (typeof document === "undefined")
34736
- return false;
34737
- return document.documentElement.classList.contains("dark");
34738
- });
34739
- reactExports.useEffect(() => {
34740
- if (typeof document === "undefined")
34741
- return;
34742
- const observer = new MutationObserver(() => {
34743
- setIsDark(document.documentElement.classList.contains("dark"));
34744
- });
34745
- observer.observe(document.documentElement, {
34746
- attributes: true,
34747
- attributeFilter: ["class"]
34748
- });
34749
- return () => observer.disconnect();
34750
- }, []);
34751
- return isDark;
34752
- };
34753
33956
  class DevalueError extends Error {
34754
33957
  /**
34755
33958
  * @param {string} message
@@ -35712,6 +34915,850 @@ async function hydrateResourceIOWithKey(resource, key) {
35712
34915
  }
35713
34916
  return result;
35714
34917
  }
34918
+ const KEYFRAMES = `@keyframes wf-spinner-fade{0%{opacity:1}100%{opacity:.15}}`;
34919
+ function Spinner({ size: size2 = 14, color: color5 }) {
34920
+ const config2 = size2 <= 12 ? {
34921
+ angle: 45,
34922
+ delays: [-875, -750, -625, -500, -375, -250, -125, 0],
34923
+ duration: 1e3,
34924
+ lineW: 3,
34925
+ lineH: 1.5
34926
+ } : size2 <= 16 ? {
34927
+ angle: 36,
34928
+ delays: [-900, -800, -700, -600, -500, -400, -300, -200, -100, 0],
34929
+ duration: 1e3,
34930
+ lineW: 4,
34931
+ lineH: 1.5
34932
+ } : {
34933
+ angle: 30,
34934
+ delays: [
34935
+ -1100,
34936
+ -1e3,
34937
+ -900,
34938
+ -800,
34939
+ -700,
34940
+ -600,
34941
+ -500,
34942
+ -400,
34943
+ -300,
34944
+ -200,
34945
+ -100,
34946
+ 0
34947
+ ],
34948
+ duration: 1200,
34949
+ lineW: size2 * 0.24,
34950
+ lineH: size2 * 0.08
34951
+ };
34952
+ return jsxRuntimeExports.jsxs("span", { style: {
34953
+ display: "inline-flex",
34954
+ position: "relative",
34955
+ width: size2,
34956
+ height: size2
34957
+ }, children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: KEYFRAMES } }), config2.delays.map((delay, i) => jsxRuntimeExports.jsx("span", { style: {
34958
+ position: "absolute",
34959
+ left: "50%",
34960
+ top: "50%",
34961
+ width: config2.lineW,
34962
+ height: config2.lineH,
34963
+ marginLeft: -config2.lineW / 2,
34964
+ marginTop: -config2.lineH / 2,
34965
+ borderRadius: 1,
34966
+ backgroundColor: color5 ?? "var(--ds-gray-700)",
34967
+ transform: `rotate(${i * config2.angle}deg) translate(${size2 * 0.36}px)`,
34968
+ animation: `wf-spinner-fade ${config2.duration}ms linear infinite`,
34969
+ animationDelay: `${delay}ms`
34970
+ } }, delay))] });
34971
+ }
34972
+ const STYLES$2 = `.wf-decrypt-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;cursor:pointer;white-space:nowrap;gap:6px;transition:background 150ms}.wf-decrypt-idle{color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400)}.wf-decrypt-idle:hover{background:var(--ds-gray-alpha-200)}.wf-decrypt-done{color:var(--ds-green-900);background:var(--ds-green-100);box-shadow:0 0 0 1px var(--ds-green-400);cursor:default}`;
34973
+ function DecryptButton({ decrypted = false, loading = false, onClick }) {
34974
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: STYLES$2 } }), jsxRuntimeExports.jsxs("button", { type: "button", onClick: decrypted ? void 0 : onClick, disabled: decrypted || loading, className: `wf-decrypt-btn ${decrypted ? "wf-decrypt-done" : "wf-decrypt-idle"}`, children: [loading ? jsxRuntimeExports.jsx(Spinner, { size: 14 }) : decrypted ? jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 9.9-1" })] }) : jsxRuntimeExports.jsxs("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), jsxRuntimeExports.jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] }), loading ? "Decrypting…" : decrypted ? "Decrypted" : "Decrypt"] })] });
34975
+ }
34976
+ var __create = Object.create;
34977
+ var __defProp2 = Object.defineProperty;
34978
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
34979
+ var __getOwnPropNames = Object.getOwnPropertyNames;
34980
+ var __getProtoOf2 = Object.getPrototypeOf;
34981
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
34982
+ var __commonJS = (cb, mod) => function __require() {
34983
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
34984
+ };
34985
+ var __export = (target2, all2) => {
34986
+ for (var name2 in all2)
34987
+ __defProp2(target2, name2, { get: all2[name2], enumerable: true });
34988
+ };
34989
+ var __copyProps = (to2, from, except, desc) => {
34990
+ if (from && typeof from === "object" || typeof from === "function") {
34991
+ for (let key of __getOwnPropNames(from))
34992
+ if (!__hasOwnProp.call(to2, key) && key !== except)
34993
+ __defProp2(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
34994
+ }
34995
+ return to2;
34996
+ };
34997
+ var __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf2(mod)) : {}, __copyProps(
34998
+ // If the importer is in node compatibility mode or this is not an ESM
34999
+ // file that has been converted to a CommonJS file using a Babel-
35000
+ // compatible transform (i.e. "__esModule" has not been set), then set
35001
+ // "default" to the CommonJS "module.exports" for node compatibility.
35002
+ __defProp2(target2, "default", { value: mod, enumerable: true }),
35003
+ mod
35004
+ ));
35005
+ var require_is_object = __commonJS({
35006
+ "node_modules/is-object/index.js"(exports$1, module) {
35007
+ module.exports = function isObject2(x2) {
35008
+ return typeof x2 === "object" && x2 !== null;
35009
+ };
35010
+ }
35011
+ });
35012
+ var require_is_window = __commonJS({
35013
+ "node_modules/is-window/index.js"(exports$1, module) {
35014
+ module.exports = function(obj) {
35015
+ if (obj == null) {
35016
+ return false;
35017
+ }
35018
+ var o = Object(obj);
35019
+ return o === o.window;
35020
+ };
35021
+ }
35022
+ });
35023
+ var require_is_dom = __commonJS({
35024
+ "node_modules/is-dom/index.js"(exports$1, module) {
35025
+ var isObject2 = require_is_object();
35026
+ var isWindow = require_is_window();
35027
+ function isNode2(val) {
35028
+ if (!isObject2(val) || !isWindow(window) || typeof window.Node !== "function") {
35029
+ return false;
35030
+ }
35031
+ return typeof val.nodeType === "number" && typeof val.nodeName === "string";
35032
+ }
35033
+ module.exports = isNode2;
35034
+ }
35035
+ });
35036
+ var themes_exports = {};
35037
+ __export(themes_exports, {
35038
+ chromeDark: () => theme,
35039
+ chromeLight: () => theme2
35040
+ });
35041
+ var theme = {
35042
+ BASE_FONT_FAMILY: "Menlo, monospace",
35043
+ BASE_FONT_SIZE: "11px",
35044
+ BASE_LINE_HEIGHT: 1.2,
35045
+ BASE_BACKGROUND_COLOR: "rgb(36, 36, 36)",
35046
+ BASE_COLOR: "rgb(213, 213, 213)",
35047
+ OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
35048
+ OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
35049
+ OBJECT_NAME_COLOR: "rgb(227, 110, 236)",
35050
+ OBJECT_VALUE_NULL_COLOR: "rgb(127, 127, 127)",
35051
+ OBJECT_VALUE_UNDEFINED_COLOR: "rgb(127, 127, 127)",
35052
+ OBJECT_VALUE_REGEXP_COLOR: "rgb(233, 63, 59)",
35053
+ OBJECT_VALUE_STRING_COLOR: "rgb(233, 63, 59)",
35054
+ OBJECT_VALUE_SYMBOL_COLOR: "rgb(233, 63, 59)",
35055
+ OBJECT_VALUE_NUMBER_COLOR: "hsl(252, 100%, 75%)",
35056
+ OBJECT_VALUE_BOOLEAN_COLOR: "hsl(252, 100%, 75%)",
35057
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(85, 106, 242)",
35058
+ HTML_TAG_COLOR: "rgb(93, 176, 215)",
35059
+ HTML_TAGNAME_COLOR: "rgb(93, 176, 215)",
35060
+ HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
35061
+ HTML_ATTRIBUTE_NAME_COLOR: "rgb(155, 187, 220)",
35062
+ HTML_ATTRIBUTE_VALUE_COLOR: "rgb(242, 151, 102)",
35063
+ HTML_COMMENT_COLOR: "rgb(137, 137, 137)",
35064
+ HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
35065
+ ARROW_COLOR: "rgb(145, 145, 145)",
35066
+ ARROW_MARGIN_RIGHT: 3,
35067
+ ARROW_FONT_SIZE: 12,
35068
+ ARROW_ANIMATION_DURATION: "0",
35069
+ TREENODE_FONT_FAMILY: "Menlo, monospace",
35070
+ TREENODE_FONT_SIZE: "11px",
35071
+ TREENODE_LINE_HEIGHT: 1.2,
35072
+ TREENODE_PADDING_LEFT: 12,
35073
+ TABLE_BORDER_COLOR: "rgb(85, 85, 85)",
35074
+ TABLE_TH_BACKGROUND_COLOR: "rgb(44, 44, 44)",
35075
+ TABLE_TH_HOVER_COLOR: "rgb(48, 48, 48)",
35076
+ TABLE_SORT_ICON_COLOR: "black",
35077
+ //'rgb(48, 57, 66)',
35078
+ TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0) 50%, rgba(51, 139, 255, 0.0980392) 50%, rgba(51, 139, 255, 0.0980392))",
35079
+ TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
35080
+ };
35081
+ var theme2 = {
35082
+ BASE_FONT_FAMILY: "Menlo, monospace",
35083
+ BASE_FONT_SIZE: "11px",
35084
+ BASE_LINE_HEIGHT: 1.2,
35085
+ BASE_BACKGROUND_COLOR: "white",
35086
+ BASE_COLOR: "black",
35087
+ OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
35088
+ OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
35089
+ OBJECT_NAME_COLOR: "rgb(136, 19, 145)",
35090
+ OBJECT_VALUE_NULL_COLOR: "rgb(128, 128, 128)",
35091
+ OBJECT_VALUE_UNDEFINED_COLOR: "rgb(128, 128, 128)",
35092
+ OBJECT_VALUE_REGEXP_COLOR: "rgb(196, 26, 22)",
35093
+ OBJECT_VALUE_STRING_COLOR: "rgb(196, 26, 22)",
35094
+ OBJECT_VALUE_SYMBOL_COLOR: "rgb(196, 26, 22)",
35095
+ OBJECT_VALUE_NUMBER_COLOR: "rgb(28, 0, 207)",
35096
+ OBJECT_VALUE_BOOLEAN_COLOR: "rgb(28, 0, 207)",
35097
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(13, 34, 170)",
35098
+ HTML_TAG_COLOR: "rgb(168, 148, 166)",
35099
+ HTML_TAGNAME_COLOR: "rgb(136, 18, 128)",
35100
+ HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
35101
+ HTML_ATTRIBUTE_NAME_COLOR: "rgb(153, 69, 0)",
35102
+ HTML_ATTRIBUTE_VALUE_COLOR: "rgb(26, 26, 166)",
35103
+ HTML_COMMENT_COLOR: "rgb(35, 110, 37)",
35104
+ HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
35105
+ ARROW_COLOR: "#6e6e6e",
35106
+ ARROW_MARGIN_RIGHT: 3,
35107
+ ARROW_FONT_SIZE: 12,
35108
+ ARROW_ANIMATION_DURATION: "0",
35109
+ TREENODE_FONT_FAMILY: "Menlo, monospace",
35110
+ TREENODE_FONT_SIZE: "11px",
35111
+ TREENODE_LINE_HEIGHT: 1.2,
35112
+ TREENODE_PADDING_LEFT: 12,
35113
+ TABLE_BORDER_COLOR: "#aaa",
35114
+ TABLE_TH_BACKGROUND_COLOR: "#eee",
35115
+ TABLE_TH_HOVER_COLOR: "hsla(0, 0%, 90%, 1)",
35116
+ TABLE_SORT_ICON_COLOR: "#6e6e6e",
35117
+ TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255))",
35118
+ TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
35119
+ };
35120
+ var ExpandedPathsContext = reactExports.createContext([{}, () => {
35121
+ }]);
35122
+ var unselectable = {
35123
+ WebkitTouchCallout: "none",
35124
+ WebkitUserSelect: "none",
35125
+ KhtmlUserSelect: "none",
35126
+ MozUserSelect: "none",
35127
+ msUserSelect: "none",
35128
+ OUserSelect: "none",
35129
+ userSelect: "none"
35130
+ };
35131
+ var createTheme = (theme3) => ({
35132
+ DOMNodePreview: {
35133
+ htmlOpenTag: {
35134
+ base: {
35135
+ color: theme3.HTML_TAG_COLOR
35136
+ },
35137
+ tagName: {
35138
+ color: theme3.HTML_TAGNAME_COLOR,
35139
+ textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
35140
+ },
35141
+ htmlAttributeName: {
35142
+ color: theme3.HTML_ATTRIBUTE_NAME_COLOR
35143
+ },
35144
+ htmlAttributeValue: {
35145
+ color: theme3.HTML_ATTRIBUTE_VALUE_COLOR
35146
+ }
35147
+ },
35148
+ htmlCloseTag: {
35149
+ base: {
35150
+ color: theme3.HTML_TAG_COLOR
35151
+ },
35152
+ offsetLeft: {
35153
+ /* hack: offset placeholder */
35154
+ marginLeft: -theme3.TREENODE_PADDING_LEFT
35155
+ },
35156
+ tagName: {
35157
+ color: theme3.HTML_TAGNAME_COLOR,
35158
+ textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
35159
+ }
35160
+ },
35161
+ htmlComment: {
35162
+ color: theme3.HTML_COMMENT_COLOR
35163
+ },
35164
+ htmlDoctype: {
35165
+ color: theme3.HTML_DOCTYPE_COLOR
35166
+ }
35167
+ },
35168
+ ObjectPreview: {
35169
+ objectDescription: {
35170
+ fontStyle: "italic"
35171
+ },
35172
+ preview: {
35173
+ fontStyle: "italic"
35174
+ },
35175
+ arrayMaxProperties: theme3.OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES,
35176
+ objectMaxProperties: theme3.OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES
35177
+ },
35178
+ ObjectName: {
35179
+ base: {
35180
+ color: theme3.OBJECT_NAME_COLOR
35181
+ },
35182
+ dimmed: {
35183
+ opacity: 0.6
35184
+ }
35185
+ },
35186
+ ObjectValue: {
35187
+ objectValueNull: {
35188
+ color: theme3.OBJECT_VALUE_NULL_COLOR
35189
+ },
35190
+ objectValueUndefined: {
35191
+ color: theme3.OBJECT_VALUE_UNDEFINED_COLOR
35192
+ },
35193
+ objectValueRegExp: {
35194
+ color: theme3.OBJECT_VALUE_REGEXP_COLOR
35195
+ },
35196
+ objectValueString: {
35197
+ color: theme3.OBJECT_VALUE_STRING_COLOR
35198
+ },
35199
+ objectValueSymbol: {
35200
+ color: theme3.OBJECT_VALUE_SYMBOL_COLOR
35201
+ },
35202
+ objectValueNumber: {
35203
+ color: theme3.OBJECT_VALUE_NUMBER_COLOR
35204
+ },
35205
+ objectValueBoolean: {
35206
+ color: theme3.OBJECT_VALUE_BOOLEAN_COLOR
35207
+ },
35208
+ objectValueFunctionPrefix: {
35209
+ color: theme3.OBJECT_VALUE_FUNCTION_PREFIX_COLOR,
35210
+ fontStyle: "italic"
35211
+ },
35212
+ objectValueFunctionName: {
35213
+ fontStyle: "italic"
35214
+ }
35215
+ },
35216
+ TreeView: {
35217
+ treeViewOutline: {
35218
+ padding: 0,
35219
+ margin: 0,
35220
+ listStyleType: "none"
35221
+ }
35222
+ },
35223
+ TreeNode: {
35224
+ treeNodeBase: {
35225
+ color: theme3.BASE_COLOR,
35226
+ backgroundColor: theme3.BASE_BACKGROUND_COLOR,
35227
+ lineHeight: theme3.TREENODE_LINE_HEIGHT,
35228
+ cursor: "default",
35229
+ boxSizing: "border-box",
35230
+ listStyle: "none",
35231
+ fontFamily: theme3.TREENODE_FONT_FAMILY,
35232
+ fontSize: theme3.TREENODE_FONT_SIZE
35233
+ },
35234
+ treeNodePreviewContainer: {},
35235
+ treeNodePlaceholder: {
35236
+ whiteSpace: "pre",
35237
+ fontSize: theme3.ARROW_FONT_SIZE,
35238
+ marginRight: theme3.ARROW_MARGIN_RIGHT,
35239
+ ...unselectable
35240
+ },
35241
+ treeNodeArrow: {
35242
+ base: {
35243
+ color: theme3.ARROW_COLOR,
35244
+ display: "inline-block",
35245
+ // lineHeight: '14px',
35246
+ fontSize: theme3.ARROW_FONT_SIZE,
35247
+ marginRight: theme3.ARROW_MARGIN_RIGHT,
35248
+ ...parseFloat(theme3.ARROW_ANIMATION_DURATION) > 0 ? {
35249
+ transition: `transform ${theme3.ARROW_ANIMATION_DURATION} ease 0s`
35250
+ } : {},
35251
+ ...unselectable
35252
+ },
35253
+ expanded: {
35254
+ WebkitTransform: "rotateZ(90deg)",
35255
+ MozTransform: "rotateZ(90deg)",
35256
+ transform: "rotateZ(90deg)"
35257
+ },
35258
+ collapsed: {
35259
+ WebkitTransform: "rotateZ(0deg)",
35260
+ MozTransform: "rotateZ(0deg)",
35261
+ transform: "rotateZ(0deg)"
35262
+ }
35263
+ },
35264
+ treeNodeChildNodesContainer: {
35265
+ margin: 0,
35266
+ // reset user-agent style
35267
+ paddingLeft: theme3.TREENODE_PADDING_LEFT
35268
+ }
35269
+ },
35270
+ TableInspector: {
35271
+ base: {
35272
+ color: theme3.BASE_COLOR,
35273
+ position: "relative",
35274
+ border: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
35275
+ fontFamily: theme3.BASE_FONT_FAMILY,
35276
+ fontSize: theme3.BASE_FONT_SIZE,
35277
+ lineHeight: "120%",
35278
+ boxSizing: "border-box",
35279
+ cursor: "default"
35280
+ }
35281
+ },
35282
+ TableInspectorHeaderContainer: {
35283
+ base: {
35284
+ top: 0,
35285
+ height: "17px",
35286
+ left: 0,
35287
+ right: 0,
35288
+ overflowX: "hidden"
35289
+ },
35290
+ table: {
35291
+ tableLayout: "fixed",
35292
+ borderSpacing: 0,
35293
+ borderCollapse: "separate",
35294
+ height: "100%",
35295
+ width: "100%",
35296
+ margin: 0
35297
+ }
35298
+ },
35299
+ TableInspectorDataContainer: {
35300
+ tr: {
35301
+ display: "table-row"
35302
+ },
35303
+ td: {
35304
+ boxSizing: "border-box",
35305
+ border: "none",
35306
+ // prevent overrides
35307
+ height: "16px",
35308
+ // /* 0.5 * table.background-size height */
35309
+ verticalAlign: "top",
35310
+ padding: "1px 4px",
35311
+ WebkitUserSelect: "text",
35312
+ whiteSpace: "nowrap",
35313
+ textOverflow: "ellipsis",
35314
+ overflow: "hidden",
35315
+ lineHeight: "14px"
35316
+ },
35317
+ div: {
35318
+ position: "static",
35319
+ top: "17px",
35320
+ bottom: 0,
35321
+ overflowY: "overlay",
35322
+ transform: "translateZ(0)",
35323
+ left: 0,
35324
+ right: 0,
35325
+ overflowX: "hidden"
35326
+ },
35327
+ table: {
35328
+ positon: "static",
35329
+ left: 0,
35330
+ top: 0,
35331
+ right: 0,
35332
+ bottom: 0,
35333
+ borderTop: "0 none transparent",
35334
+ margin: 0,
35335
+ // prevent user agent stylesheet overrides
35336
+ backgroundImage: theme3.TABLE_DATA_BACKGROUND_IMAGE,
35337
+ backgroundSize: theme3.TABLE_DATA_BACKGROUND_SIZE,
35338
+ tableLayout: "fixed",
35339
+ // table
35340
+ borderSpacing: 0,
35341
+ borderCollapse: "separate",
35342
+ // height: '100%',
35343
+ width: "100%",
35344
+ fontSize: theme3.BASE_FONT_SIZE,
35345
+ lineHeight: "120%"
35346
+ }
35347
+ },
35348
+ TableInspectorTH: {
35349
+ base: {
35350
+ position: "relative",
35351
+ // anchor for sort icon container
35352
+ height: "auto",
35353
+ textAlign: "left",
35354
+ backgroundColor: theme3.TABLE_TH_BACKGROUND_COLOR,
35355
+ borderBottom: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
35356
+ fontWeight: "normal",
35357
+ verticalAlign: "middle",
35358
+ padding: "0 4px",
35359
+ whiteSpace: "nowrap",
35360
+ textOverflow: "ellipsis",
35361
+ overflow: "hidden",
35362
+ lineHeight: "14px",
35363
+ ":hover": {
35364
+ backgroundColor: theme3.TABLE_TH_HOVER_COLOR
35365
+ }
35366
+ },
35367
+ div: {
35368
+ whiteSpace: "nowrap",
35369
+ textOverflow: "ellipsis",
35370
+ overflow: "hidden",
35371
+ // prevent user agent stylesheet overrides
35372
+ fontSize: theme3.BASE_FONT_SIZE,
35373
+ lineHeight: "120%"
35374
+ }
35375
+ },
35376
+ TableInspectorLeftBorder: {
35377
+ none: {
35378
+ borderLeft: "none"
35379
+ },
35380
+ solid: {
35381
+ borderLeft: `1px solid ${theme3.TABLE_BORDER_COLOR}`
35382
+ }
35383
+ },
35384
+ TableInspectorSortIcon: {
35385
+ display: "block",
35386
+ marginRight: 3,
35387
+ // 4,
35388
+ width: 8,
35389
+ height: 7,
35390
+ marginTop: -7,
35391
+ color: theme3.TABLE_SORT_ICON_COLOR,
35392
+ fontSize: 12,
35393
+ // lineHeight: 14
35394
+ ...unselectable
35395
+ }
35396
+ });
35397
+ var DEFAULT_THEME_NAME = "chromeLight";
35398
+ var ThemeContext = reactExports.createContext(createTheme(themes_exports[DEFAULT_THEME_NAME]));
35399
+ var useStyles = (baseStylesKey) => {
35400
+ const themeStyles = reactExports.useContext(ThemeContext);
35401
+ return themeStyles[baseStylesKey];
35402
+ };
35403
+ var themeAcceptor = (WrappedComponent) => {
35404
+ const ThemeAcceptor = ({ theme: theme3 = DEFAULT_THEME_NAME, ...restProps }) => {
35405
+ const themeStyles = reactExports.useMemo(() => {
35406
+ switch (Object.prototype.toString.call(theme3)) {
35407
+ case "[object String]":
35408
+ return createTheme(themes_exports[theme3]);
35409
+ case "[object Object]":
35410
+ return createTheme(theme3);
35411
+ default:
35412
+ return createTheme(themes_exports[DEFAULT_THEME_NAME]);
35413
+ }
35414
+ }, [theme3]);
35415
+ return /* @__PURE__ */ ReactExports.createElement(ThemeContext.Provider, { value: themeStyles }, /* @__PURE__ */ ReactExports.createElement(WrappedComponent, { ...restProps }));
35416
+ };
35417
+ return ThemeAcceptor;
35418
+ };
35419
+ var Arrow$2 = ({ expanded: expanded2, styles: styles2 }) => /* @__PURE__ */ ReactExports.createElement(
35420
+ "span",
35421
+ {
35422
+ style: {
35423
+ ...styles2.base,
35424
+ ...expanded2 ? styles2.expanded : styles2.collapsed
35425
+ }
35426
+ },
35427
+ "▶"
35428
+ );
35429
+ var TreeNode = reactExports.memo((props) => {
35430
+ props = {
35431
+ expanded: true,
35432
+ nodeRenderer: ({ name: name2 }) => /* @__PURE__ */ ReactExports.createElement("span", null, name2),
35433
+ onClick: () => {
35434
+ },
35435
+ shouldShowArrow: false,
35436
+ shouldShowPlaceholder: true,
35437
+ ...props
35438
+ };
35439
+ const { expanded: expanded2, onClick, children: children2, nodeRenderer, title, shouldShowArrow, shouldShowPlaceholder: shouldShowPlaceholder2 } = props;
35440
+ const styles2 = useStyles("TreeNode");
35441
+ const NodeRenderer2 = nodeRenderer;
35442
+ return /* @__PURE__ */ ReactExports.createElement("li", { "aria-expanded": expanded2, role: "treeitem", style: styles2.treeNodeBase, title }, /* @__PURE__ */ ReactExports.createElement("div", { style: styles2.treeNodePreviewContainer, onClick }, shouldShowArrow || reactExports.Children.count(children2) > 0 ? /* @__PURE__ */ ReactExports.createElement(Arrow$2, { expanded: expanded2, styles: styles2.treeNodeArrow }) : shouldShowPlaceholder2 && /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.treeNodePlaceholder }, " "), /* @__PURE__ */ ReactExports.createElement(NodeRenderer2, { ...props })), /* @__PURE__ */ ReactExports.createElement("ol", { role: "group", style: styles2.treeNodeChildNodesContainer }, expanded2 ? children2 : void 0));
35443
+ });
35444
+ var DEFAULT_ROOT_PATH = "$";
35445
+ var WILDCARD = "*";
35446
+ function hasChildNodes(data, dataIterator) {
35447
+ return !dataIterator(data).next().done;
35448
+ }
35449
+ var wildcardPathsFromLevel = (level) => {
35450
+ return Array.from(
35451
+ { length: level },
35452
+ (_2, i) => [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, () => "*")).join(".")
35453
+ );
35454
+ };
35455
+ var getExpandedPaths = (data, dataIterator, expandPaths, expandLevel, prevExpandedPaths) => {
35456
+ const wildcardPaths = [].concat(wildcardPathsFromLevel(expandLevel)).concat(expandPaths).filter((path2) => typeof path2 === "string");
35457
+ const expandedPaths = [];
35458
+ wildcardPaths.forEach((wildcardPath) => {
35459
+ const keyPaths = wildcardPath.split(".");
35460
+ const populatePaths = (curData, curPath, depth) => {
35461
+ if (depth === keyPaths.length) {
35462
+ expandedPaths.push(curPath);
35463
+ return;
35464
+ }
35465
+ const key = keyPaths[depth];
35466
+ if (depth === 0) {
35467
+ if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) {
35468
+ populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1);
35469
+ }
35470
+ } else {
35471
+ if (key === WILDCARD) {
35472
+ for (const { name: name2, data: data2 } of dataIterator(curData)) {
35473
+ if (hasChildNodes(data2, dataIterator)) {
35474
+ populatePaths(data2, `${curPath}.${name2}`, depth + 1);
35475
+ }
35476
+ }
35477
+ } else {
35478
+ const value = curData[key];
35479
+ if (hasChildNodes(value, dataIterator)) {
35480
+ populatePaths(value, `${curPath}.${key}`, depth + 1);
35481
+ }
35482
+ }
35483
+ }
35484
+ };
35485
+ populatePaths(data, "", 0);
35486
+ });
35487
+ return expandedPaths.reduce(
35488
+ (obj, path2) => {
35489
+ obj[path2] = true;
35490
+ return obj;
35491
+ },
35492
+ { ...prevExpandedPaths }
35493
+ );
35494
+ };
35495
+ var ConnectedTreeNode = reactExports.memo((props) => {
35496
+ const { data, dataIterator, path: path2, depth, nodeRenderer } = props;
35497
+ const [expandedPaths, setExpandedPaths] = reactExports.useContext(ExpandedPathsContext);
35498
+ const nodeHasChildNodes = hasChildNodes(data, dataIterator);
35499
+ const expanded2 = !!expandedPaths[path2];
35500
+ const handleClick = reactExports.useCallback(
35501
+ () => nodeHasChildNodes && setExpandedPaths((prevExpandedPaths) => ({
35502
+ ...prevExpandedPaths,
35503
+ [path2]: !expanded2
35504
+ })),
35505
+ [nodeHasChildNodes, setExpandedPaths, path2, expanded2]
35506
+ );
35507
+ return /* @__PURE__ */ ReactExports.createElement(
35508
+ TreeNode,
35509
+ {
35510
+ expanded: expanded2,
35511
+ onClick: handleClick,
35512
+ shouldShowArrow: nodeHasChildNodes,
35513
+ shouldShowPlaceholder: depth > 0,
35514
+ nodeRenderer,
35515
+ ...props
35516
+ },
35517
+ // only render if the node is expanded
35518
+ expanded2 ? [...dataIterator(data)].map(({ name: name2, data: data2, ...renderNodeProps }) => {
35519
+ return /* @__PURE__ */ ReactExports.createElement(
35520
+ ConnectedTreeNode,
35521
+ {
35522
+ name: name2,
35523
+ data: data2,
35524
+ depth: depth + 1,
35525
+ path: `${path2}.${name2}`,
35526
+ key: name2,
35527
+ dataIterator,
35528
+ nodeRenderer,
35529
+ ...renderNodeProps
35530
+ }
35531
+ );
35532
+ }) : null
35533
+ );
35534
+ });
35535
+ var TreeView = reactExports.memo(({ name: name2, data, dataIterator, nodeRenderer, expandPaths, expandLevel }) => {
35536
+ const styles2 = useStyles("TreeView");
35537
+ const stateAndSetter = reactExports.useState({});
35538
+ const [, setExpandedPaths] = stateAndSetter;
35539
+ reactExports.useLayoutEffect(
35540
+ () => setExpandedPaths(
35541
+ (prevExpandedPaths) => getExpandedPaths(data, dataIterator, expandPaths, expandLevel, prevExpandedPaths)
35542
+ ),
35543
+ [data, dataIterator, expandPaths, expandLevel]
35544
+ );
35545
+ return /* @__PURE__ */ ReactExports.createElement(ExpandedPathsContext.Provider, { value: stateAndSetter }, /* @__PURE__ */ ReactExports.createElement("ol", { role: "tree", style: styles2.treeViewOutline }, /* @__PURE__ */ ReactExports.createElement(
35546
+ ConnectedTreeNode,
35547
+ {
35548
+ name: name2,
35549
+ data,
35550
+ dataIterator,
35551
+ depth: 0,
35552
+ path: DEFAULT_ROOT_PATH,
35553
+ nodeRenderer
35554
+ }
35555
+ )));
35556
+ });
35557
+ var ObjectName = ({ name: name2, dimmed = false, styles: styles2 = {} }) => {
35558
+ const themeStyles = useStyles("ObjectName");
35559
+ const appliedStyles = {
35560
+ ...themeStyles.base,
35561
+ ...dimmed ? themeStyles["dimmed"] : {},
35562
+ ...styles2
35563
+ };
35564
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: appliedStyles }, name2);
35565
+ };
35566
+ var ObjectValue = ({ object: object2, styles: styles2 }) => {
35567
+ const themeStyles = useStyles("ObjectValue");
35568
+ const mkStyle = (key) => ({ ...themeStyles[key], ...styles2 });
35569
+ switch (typeof object2) {
35570
+ case "bigint":
35571
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNumber") }, String(object2), "n");
35572
+ case "number":
35573
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNumber") }, String(object2));
35574
+ case "string":
35575
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueString") }, '"', object2, '"');
35576
+ case "boolean":
35577
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueBoolean") }, String(object2));
35578
+ case "undefined":
35579
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueUndefined") }, "undefined");
35580
+ case "object":
35581
+ if (object2 === null) {
35582
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueNull") }, "null");
35583
+ }
35584
+ if (object2 instanceof Date) {
35585
+ return /* @__PURE__ */ ReactExports.createElement("span", null, object2.toString());
35586
+ }
35587
+ if (object2 instanceof RegExp) {
35588
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueRegExp") }, object2.toString());
35589
+ }
35590
+ if (Array.isArray(object2)) {
35591
+ return /* @__PURE__ */ ReactExports.createElement("span", null, `Array(${object2.length})`);
35592
+ }
35593
+ if (!object2.constructor) {
35594
+ return /* @__PURE__ */ ReactExports.createElement("span", null, "Object");
35595
+ }
35596
+ if (typeof object2.constructor.isBuffer === "function" && object2.constructor.isBuffer(object2)) {
35597
+ return /* @__PURE__ */ ReactExports.createElement("span", null, `Buffer[${object2.length}]`);
35598
+ }
35599
+ return /* @__PURE__ */ ReactExports.createElement("span", null, object2.constructor.name);
35600
+ case "function":
35601
+ return /* @__PURE__ */ ReactExports.createElement("span", null, /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueFunctionPrefix") }, "ƒ "), /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueFunctionName") }, object2.name, "()"));
35602
+ case "symbol":
35603
+ return /* @__PURE__ */ ReactExports.createElement("span", { style: mkStyle("objectValueSymbol") }, object2.toString());
35604
+ default:
35605
+ return /* @__PURE__ */ ReactExports.createElement("span", null);
35606
+ }
35607
+ };
35608
+ var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
35609
+ var propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
35610
+ function getPropertyValue(object2, propertyName) {
35611
+ const propertyDescriptor = Object.getOwnPropertyDescriptor(object2, propertyName);
35612
+ if (propertyDescriptor.get) {
35613
+ try {
35614
+ return propertyDescriptor.get();
35615
+ } catch {
35616
+ return propertyDescriptor.get;
35617
+ }
35618
+ }
35619
+ return object2[propertyName];
35620
+ }
35621
+ function intersperse(arr, sep2) {
35622
+ if (arr.length === 0) {
35623
+ return [];
35624
+ }
35625
+ return arr.slice(1).reduce((xs, x2) => xs.concat([sep2, x2]), [arr[0]]);
35626
+ }
35627
+ var ObjectPreview = ({ data }) => {
35628
+ const styles2 = useStyles("ObjectPreview");
35629
+ const object2 = data;
35630
+ if (typeof object2 !== "object" || object2 === null || object2 instanceof Date || object2 instanceof RegExp) {
35631
+ return /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: object2 });
35632
+ }
35633
+ if (Array.isArray(object2)) {
35634
+ const maxProperties = styles2.arrayMaxProperties;
35635
+ const previewArray = object2.slice(0, maxProperties).map((element2, index2) => /* @__PURE__ */ ReactExports.createElement(ObjectValue, { key: index2, object: element2 }));
35636
+ if (object2.length > maxProperties) {
35637
+ previewArray.push(/* @__PURE__ */ ReactExports.createElement("span", { key: "ellipsis" }, "…"));
35638
+ }
35639
+ const arrayLength = object2.length;
35640
+ return /* @__PURE__ */ ReactExports.createElement(ReactExports.Fragment, null, /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.objectDescription }, arrayLength === 0 ? `` : `(${arrayLength}) `), /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.preview }, "[", intersperse(previewArray, ", "), "]"));
35641
+ } else {
35642
+ const maxProperties = styles2.objectMaxProperties;
35643
+ const propertyNodes = [];
35644
+ for (const propertyName in object2) {
35645
+ if (hasOwnProperty$1.call(object2, propertyName)) {
35646
+ let ellipsis;
35647
+ if (propertyNodes.length === maxProperties - 1 && Object.keys(object2).length > maxProperties) {
35648
+ ellipsis = /* @__PURE__ */ ReactExports.createElement("span", { key: "ellipsis" }, "…");
35649
+ }
35650
+ const propertyValue2 = getPropertyValue(object2, propertyName);
35651
+ propertyNodes.push(
35652
+ /* @__PURE__ */ ReactExports.createElement("span", { key: propertyName }, /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: propertyName || `""` }), ": ", /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: propertyValue2 }), ellipsis)
35653
+ );
35654
+ if (ellipsis) break;
35655
+ }
35656
+ }
35657
+ const objectConstructorName = object2.constructor ? object2.constructor.name : "Object";
35658
+ return /* @__PURE__ */ ReactExports.createElement(ReactExports.Fragment, null, /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.objectDescription }, objectConstructorName === "Object" ? "" : `${objectConstructorName} `), /* @__PURE__ */ ReactExports.createElement("span", { style: styles2.preview }, "{", intersperse(propertyNodes, ", "), "}"));
35659
+ }
35660
+ };
35661
+ var ObjectRootLabel = ({ name: name2, data }) => {
35662
+ if (typeof name2 === "string") {
35663
+ return /* @__PURE__ */ ReactExports.createElement("span", null, /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: name2 }), /* @__PURE__ */ ReactExports.createElement("span", null, ": "), /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data }));
35664
+ } else {
35665
+ return /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data });
35666
+ }
35667
+ };
35668
+ var ObjectLabel = ({ name: name2, data, isNonenumerable = false }) => {
35669
+ const object2 = data;
35670
+ return /* @__PURE__ */ ReactExports.createElement("span", null, typeof name2 === "string" ? /* @__PURE__ */ ReactExports.createElement(ObjectName, { name: name2, dimmed: isNonenumerable }) : /* @__PURE__ */ ReactExports.createElement(ObjectPreview, { data: name2 }), /* @__PURE__ */ ReactExports.createElement("span", null, ": "), /* @__PURE__ */ ReactExports.createElement(ObjectValue, { object: object2 }));
35671
+ };
35672
+ var createIterator = (showNonenumerable, sortObjectKeys) => {
35673
+ const objectIterator = function* (data) {
35674
+ const shouldIterate = typeof data === "object" && data !== null || typeof data === "function";
35675
+ if (!shouldIterate) return;
35676
+ const dataIsArray = Array.isArray(data);
35677
+ if (!dataIsArray && data[Symbol.iterator]) {
35678
+ let i = 0;
35679
+ for (const entry2 of data) {
35680
+ if (Array.isArray(entry2) && entry2.length === 2) {
35681
+ const [k2, v2] = entry2;
35682
+ yield {
35683
+ name: k2,
35684
+ data: v2
35685
+ };
35686
+ } else {
35687
+ yield {
35688
+ name: i.toString(),
35689
+ data: entry2
35690
+ };
35691
+ }
35692
+ i++;
35693
+ }
35694
+ } else {
35695
+ const keys2 = Object.getOwnPropertyNames(data);
35696
+ if (sortObjectKeys === true && !dataIsArray) {
35697
+ keys2.sort();
35698
+ } else if (typeof sortObjectKeys === "function") {
35699
+ keys2.sort(sortObjectKeys);
35700
+ }
35701
+ for (const propertyName of keys2) {
35702
+ if (propertyIsEnumerable.call(data, propertyName)) {
35703
+ const propertyValue2 = getPropertyValue(data, propertyName);
35704
+ yield {
35705
+ name: propertyName || `""`,
35706
+ data: propertyValue2
35707
+ };
35708
+ } else if (showNonenumerable) {
35709
+ let propertyValue2;
35710
+ try {
35711
+ propertyValue2 = getPropertyValue(data, propertyName);
35712
+ } catch (e) {
35713
+ }
35714
+ if (propertyValue2 !== void 0) {
35715
+ yield {
35716
+ name: propertyName,
35717
+ data: propertyValue2,
35718
+ isNonenumerable: true
35719
+ };
35720
+ }
35721
+ }
35722
+ }
35723
+ if (showNonenumerable && data !== Object.prototype) {
35724
+ yield {
35725
+ name: "__proto__",
35726
+ data: Object.getPrototypeOf(data),
35727
+ isNonenumerable: true
35728
+ };
35729
+ }
35730
+ }
35731
+ };
35732
+ return objectIterator;
35733
+ };
35734
+ var defaultNodeRenderer = ({ depth, name: name2, data, isNonenumerable }) => depth === 0 ? /* @__PURE__ */ ReactExports.createElement(ObjectRootLabel, { name: name2, data }) : /* @__PURE__ */ ReactExports.createElement(ObjectLabel, { name: name2, data, isNonenumerable });
35735
+ var ObjectInspector = ({ showNonenumerable = false, sortObjectKeys, nodeRenderer, ...treeViewProps }) => {
35736
+ const dataIterator = createIterator(showNonenumerable, sortObjectKeys);
35737
+ const renderer = nodeRenderer ? nodeRenderer : defaultNodeRenderer;
35738
+ return /* @__PURE__ */ ReactExports.createElement(TreeView, { nodeRenderer: renderer, dataIterator, ...treeViewProps });
35739
+ };
35740
+ var themedObjectInspector = themeAcceptor(ObjectInspector);
35741
+ __toESM(require_is_dom());
35742
+ const useDarkMode = () => {
35743
+ const [isDark, setIsDark] = reactExports.useState(() => {
35744
+ if (typeof document === "undefined")
35745
+ return false;
35746
+ return document.documentElement.classList.contains("dark");
35747
+ });
35748
+ reactExports.useEffect(() => {
35749
+ if (typeof document === "undefined")
35750
+ return;
35751
+ const observer = new MutationObserver(() => {
35752
+ setIsDark(document.documentElement.classList.contains("dark"));
35753
+ });
35754
+ observer.observe(document.documentElement, {
35755
+ attributes: true,
35756
+ attributeFilter: ["class"]
35757
+ });
35758
+ return () => observer.disconnect();
35759
+ }, []);
35760
+ return isDark;
35761
+ };
35715
35762
  const inspectorThemeExtendedLight = {
35716
35763
  OBJECT_VALUE_DATE_COLOR: "#a21caf"
35717
35764
  // fuchsia-700
@@ -37066,6 +37113,11 @@ ${stack}` : stack;
37066
37113
  background: "var(--ds-red-200)"
37067
37114
  }, children: stack })] });
37068
37115
  }
37116
+ const STYLES$1 = `.wf-load-more{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;border-radius:6px;font-size:13px;font-weight:500;line-height:20px;color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400);cursor:pointer;white-space:nowrap;gap:6px;transition:background 150ms}.wf-load-more:hover{background:var(--ds-gray-alpha-200)}.wf-load-more:disabled{opacity:.6;cursor:default}.wf-load-more:disabled:hover{background:var(--ds-background-100)}`;
37117
+ function LoadMoreButton({ loading = false, onClick, label = "Load more", loadingLabel = "Loading..." }) {
37118
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: STYLES$1 } }), jsxRuntimeExports.jsxs("button", { type: "button", onClick, disabled: loading, className: "wf-load-more", children: [loading && jsxRuntimeExports.jsx(Spinner, { size: 14 }), loading ? loadingLabel : label] })] });
37119
+ }
37120
+ const STYLES = `.wf-menu-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400);cursor:pointer;white-space:nowrap;transition:background 150ms}.wf-menu-btn:hover{background:var(--ds-gray-alpha-200)}.wf-menu-item{appearance:none;-webkit-appearance:none;border:none;display:flex;align-items:center;width:100%;height:40px;padding:0 8px;border-radius:6px;font-size:14px;color:var(--ds-gray-1000);background:transparent;cursor:pointer;transition:background 150ms}.wf-menu-item:hover{background:var(--ds-gray-alpha-100)}`;
37069
37121
  function MenuDropdown({ options, value, onChange }) {
37070
37122
  var _a3, _b;
37071
37123
  const [open, setOpen] = reactExports.useState(false);
@@ -37082,12 +37134,7 @@ function MenuDropdown({ options, value, onChange }) {
37082
37134
  document.addEventListener("mousedown", handleClickOutside);
37083
37135
  return () => document.removeEventListener("mousedown", handleClickOutside);
37084
37136
  }, [open]);
37085
- return jsxRuntimeExports.jsxs("div", { ref, style: { position: "relative", flexShrink: 0 }, children: [jsxRuntimeExports.jsx("style", { children: `
37086
- .wf-menu-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400);cursor:pointer;white-space:nowrap;transition:background 150ms}
37087
- .wf-menu-btn:hover{background:var(--ds-gray-alpha-200)}
37088
- .wf-menu-item{appearance:none;-webkit-appearance:none;border:none;display:flex;align-items:center;width:100%;height:40px;padding:0 8px;border-radius:6px;font-size:14px;color:var(--ds-gray-1000);background:transparent;cursor:pointer;transition:background 150ms}
37089
- .wf-menu-item:hover{background:var(--ds-gray-alpha-100)}
37090
- ` }), jsxRuntimeExports.jsxs("button", { type: "button", className: "wf-menu-btn", onClick: () => setOpen(!open), children: [jsxRuntimeExports.jsx("span", { children: label }), jsxRuntimeExports.jsx("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", style: {
37137
+ return jsxRuntimeExports.jsxs("div", { ref, style: { position: "relative", flexShrink: 0 }, children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: STYLES } }), jsxRuntimeExports.jsxs("button", { type: "button", className: "wf-menu-btn", onClick: () => setOpen(!open), children: [jsxRuntimeExports.jsx("span", { children: label }), jsxRuntimeExports.jsx("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", style: {
37091
37138
  marginLeft: 16,
37092
37139
  marginRight: -4,
37093
37140
  color: "var(--ds-gray-900)"
@@ -37378,6 +37425,9 @@ const SORT_OPTIONS = [
37378
37425
  { value: "desc", label: "Newest" },
37379
37426
  { value: "asc", label: "Oldest" }
37380
37427
  ];
37428
+ function RowsSkeleton() {
37429
+ return jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-hidden", children: Array.from({ length: 8 }, (_2, i) => jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 px-4", style: { height: 40 }, children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "h-2 w-2 flex-shrink-0", style: { borderRadius: "50%" } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 90 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 100 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 80 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3 flex-1" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3 flex-1" })] }, i)) });
37430
+ }
37381
37431
  function EventRow({ event, index: index2, isFirst, isLast, isExpanded, onToggleExpand, activeGroupKey, selectedGroupKey, selectedGroupRange, correlationNameMap, workflowName, durationMap, onSelectGroup, onHoverGroup, onLoadEventData, cachedEventData, onCacheEventData, encryptionKey }) {
37382
37432
  const [isLoading, setIsLoading] = reactExports.useState(false);
37383
37433
  const [loadedEventData, setLoadedEventData] = reactExports.useState(cachedEventData);
@@ -37504,7 +37554,7 @@ function EventRow({ event, index: index2, isFirst, isLast, isExpanded, onToggleE
37504
37554
  color: "var(--ds-red-900)"
37505
37555
  }, children: loadError }) : isLoading || !hasExistingEventData && !hasAttemptedLoad && event.correlationId ? jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 p-3", children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: "75%" } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: "50%" } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: "60%" } })] }) : jsxRuntimeExports.jsx("div", { className: "p-2 text-xs", style: { color: "var(--ds-gray-900)" }, children: "No data" })] })] })] });
37506
37556
  }
37507
- function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents = false, isLoadingMoreEvents = false, onLoadMoreEvents, encryptionKey, isLoading = false, sortOrder: sortOrderProp, onSortOrderChange }) {
37557
+ function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents = false, isLoadingMoreEvents = false, onLoadMoreEvents, encryptionKey, isLoading = false, sortOrder: sortOrderProp, onSortOrderChange, onDecrypt, isDecrypting = false }) {
37508
37558
  const [internalSortOrder, setInternalSortOrder] = reactExports.useState("asc");
37509
37559
  const effectiveSortOrder = sortOrderProp ?? internalSortOrder;
37510
37560
  const handleSortOrderChange = reactExports.useCallback((order2) => {
@@ -37520,6 +37570,21 @@ function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents =
37520
37570
  const dir = effectiveSortOrder === "desc" ? -1 : 1;
37521
37571
  return [...events2].sort((a2, b2) => dir * (new Date(a2.createdAt).getTime() - new Date(b2.createdAt).getTime()));
37522
37572
  }, [events2, effectiveSortOrder]);
37573
+ const hasEncryptedData = reactExports.useMemo(() => {
37574
+ if (!events2)
37575
+ return false;
37576
+ for (const event of events2) {
37577
+ const ed = event.eventData;
37578
+ if (!ed || typeof ed !== "object")
37579
+ continue;
37580
+ const data = ed;
37581
+ for (const val of Object.values(data)) {
37582
+ if (isEncryptedMarker(val))
37583
+ return true;
37584
+ }
37585
+ }
37586
+ return false;
37587
+ }, [events2]);
37523
37588
  const { correlationNameMap, workflowName } = reactExports.useMemo(() => buildNameMaps(events2 ?? null, run ?? null), [events2, run]);
37524
37589
  const durationMap = reactExports.useMemo(() => buildDurationMap(sortedEvents2), [sortedEvents2]);
37525
37590
  const [selectedGroupKey, setSelectedGroupKey] = reactExports.useState(void 0);
@@ -37640,10 +37705,16 @@ function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents =
37640
37705
  });
37641
37706
  }
37642
37707
  }, [searchQuery, searchIndex]);
37643
- if (!events2 || events2.length === 0) {
37644
- if (isLoading) {
37645
- return jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("div", { style: { padding: 6 }, children: jsxRuntimeExports.jsx(Skeleton$2, { style: { height: 40, borderRadius: 6 } }) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 h-10 border-b flex-shrink-0 px-4", style: { borderColor: "var(--ds-gray-alpha-200)" }, children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 60 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 80 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 50 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 90 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 70 } })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-hidden", children: Array.from({ length: 8 }, (_2, i) => jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 px-4", style: { height: 40 }, children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "h-2 w-2 flex-shrink-0", style: { borderRadius: "50%" } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 90 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 100 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 80 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3 flex-1" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3 flex-1" })] }, i)) })] });
37646
- }
37708
+ const hasHadEventsRef = reactExports.useRef(false);
37709
+ if (sortedEvents2.length > 0) {
37710
+ hasHadEventsRef.current = true;
37711
+ }
37712
+ const isInitialLoad = isLoading && !hasHadEventsRef.current;
37713
+ const isRefetching = isLoading && hasHadEventsRef.current && sortedEvents2.length === 0;
37714
+ if (isInitialLoad) {
37715
+ return jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("div", { style: { padding: 6 }, children: jsxRuntimeExports.jsx(Skeleton$2, { style: { height: 40, borderRadius: 6 } }) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 h-10 border-b flex-shrink-0 px-4", style: { borderColor: "var(--ds-gray-alpha-200)" }, children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 60 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 80 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 50 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 90 } }), jsxRuntimeExports.jsx("div", { style: { flex: 1 } }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3", style: { width: 70 } })] }), jsxRuntimeExports.jsx(RowsSkeleton, {})] });
37716
+ }
37717
+ if (!isLoading && (!events2 || events2.length === 0)) {
37647
37718
  return jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full text-sm", style: { color: "var(--ds-gray-700)" }, children: "No events found" });
37648
37719
  }
37649
37720
  return jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("style", { children: `@keyframes workflow-dot-pulse{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(2.2);opacity:0}}` }), jsxRuntimeExports.jsxs("div", { style: {
@@ -37679,11 +37750,11 @@ function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents =
37679
37750
  outline: "none",
37680
37751
  height: 40,
37681
37752
  width: "100%"
37682
- } })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-[13px] font-medium h-10 border-b flex-shrink-0", style: {
37753
+ } })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange }), (hasEncryptedData || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-[13px] font-medium h-10 border-b flex-shrink-0", style: {
37683
37754
  borderColor: "var(--ds-gray-alpha-200)",
37684
37755
  color: "var(--ds-gray-900)",
37685
37756
  backgroundColor: "var(--ds-background-100)"
37686
- }, children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0", style: { width: GUTTER_WIDTH } }), jsxRuntimeExports.jsx("div", { className: "w-5 flex-shrink-0" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Time" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Event Type" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Name" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Correlation ID" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Event ID" })] }), jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: sortedEvents2.length, overscan: 20, defaultItemHeight: 40, endReached: () => {
37757
+ }, children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0", style: { width: GUTTER_WIDTH } }), jsxRuntimeExports.jsx("div", { className: "w-5 flex-shrink-0" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Time" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Event Type" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Name" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Correlation ID" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Event ID" })] }), isRefetching ? jsxRuntimeExports.jsx(RowsSkeleton, {}) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: sortedEvents2.length, overscan: 20, defaultItemHeight: 40, endReached: () => {
37687
37758
  if (!hasMoreEvents || isLoadingMoreEvents) {
37688
37759
  return;
37689
37760
  }
@@ -37691,17 +37762,11 @@ function EventListView({ events: events2, run, onLoadEventData, hasMoreEvents =
37691
37762
  }, itemContent: (index2) => {
37692
37763
  const ev = sortedEvents2[index2];
37693
37764
  return jsxRuntimeExports.jsx(EventRow, { event: ev, index: index2, isFirst: index2 === 0, isLast: index2 === sortedEvents2.length - 1, isExpanded: expandedEventIds.has(ev.eventId), onToggleExpand: toggleEventExpanded, activeGroupKey, selectedGroupKey, selectedGroupRange, correlationNameMap, workflowName, durationMap, onSelectGroup, onHoverGroup, onLoadEventData, cachedEventData: eventDataCacheRef.current.get(ev.eventId) ?? null, onCacheEventData: cacheEventData, encryptionKey });
37694
- }, components: {
37695
- Footer: hasMoreEvents ? () => jsxRuntimeExports.jsx("div", { className: "px-3 pt-3 flex justify-center", children: jsxRuntimeExports.jsx("button", { type: "button", onClick: () => void (onLoadMoreEvents == null ? void 0 : onLoadMoreEvents()), disabled: isLoadingMoreEvents, className: "h-8 px-3 text-xs rounded-md border transition-colors disabled:opacity-60 disabled:cursor-not-allowed", style: {
37696
- borderColor: "var(--ds-gray-alpha-400)",
37697
- color: "var(--ds-gray-900)",
37698
- backgroundColor: "var(--ds-background-100)"
37699
- }, children: isLoadingMoreEvents ? "Loading more events..." : "Load more" }) }) : void 0
37700
- }, style: { flex: 1, minHeight: 0 } }), jsxRuntimeExports.jsxs("div", { className: "flex-shrink-0 border-t text-xs px-3 py-2", style: {
37765
+ }, style: { flex: 1, minHeight: 0 } }), jsxRuntimeExports.jsxs("div", { className: "relative flex-shrink-0 flex items-center h-10 border-t px-4 text-xs", style: {
37701
37766
  borderColor: "var(--ds-gray-alpha-200)",
37702
37767
  color: "var(--ds-gray-900)",
37703
37768
  backgroundColor: "var(--ds-background-100)"
37704
- }, children: [sortedEvents2.length, " event", sortedEvents2.length !== 1 ? "s" : "", " total"] })] });
37769
+ }, children: [jsxRuntimeExports.jsxs("span", { children: [sortedEvents2.length, " event", sortedEvents2.length !== 1 ? "s" : "", " loaded"] }), hasMoreEvents && jsxRuntimeExports.jsx("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto", children: jsxRuntimeExports.jsx(LoadMoreButton, { loading: isLoadingMoreEvents, onClick: () => void (onLoadMoreEvents == null ? void 0 : onLoadMoreEvents()) }) }) })] })] });
37705
37770
  }
37706
37771
  function ResolveHookModal({ isOpen, onClose, onSubmit, isSubmitting = false }) {
37707
37772
  var _a3;
@@ -64577,7 +64642,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
64577
64642
  var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
64578
64643
  var Se = reactExports.createContext({ code: "" }), de$1 = () => reactExports.useContext(Se);
64579
64644
  var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
64580
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-uEj5-2nD.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
64645
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-WkqeTqm-.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
64581
64646
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
64582
64647
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
64583
64648
  return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
@@ -64899,7 +64964,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
64899
64964
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
64900
64965
  };
64901
64966
  var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
64902
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-BvjkIiuk.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
64967
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-ClaETQoK.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
64903
64968
  function ke(e, t) {
64904
64969
  if (!(e != null && e.position || t != null && t.position)) return true;
64905
64970
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -65937,7 +66002,7 @@ function isWorkflowRun(data) {
65937
66002
  function isHook(data) {
65938
66003
  return data !== null && typeof data === "object" && "hookId" in data;
65939
66004
  }
65940
- function EntityDetailPanel({ run, onStreamClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, selectedSpan }) {
66005
+ function EntityDetailPanel({ run, onStreamClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting = false, selectedSpan }) {
65941
66006
  const [stoppingSleep, setStoppingSleep] = reactExports.useState(false);
65942
66007
  const [showResolveHookModal, setShowResolveHookModal] = reactExports.useState(false);
65943
66008
  const [resolvingHook, setResolvingHook] = reactExports.useState(false);
@@ -66130,12 +66195,7 @@ function EntityDetailPanel({ run, onStreamClick, spanDetailData, spanDetailError
66130
66195
  backgroundColor: "var(--ds-background-100)"
66131
66196
  }, children: resourceLabel }), jsxRuntimeExports.jsx("span", { className: "text-[13px]", style: {
66132
66197
  color: run.completedAt ? "var(--ds-gray-700)" : "var(--ds-green-800)"
66133
- }, children: runStateLabel })] }), jsxRuntimeExports.jsx("p", { className: "mt-1 truncate font-mono text-[13px]", style: { color: "var(--ds-gray-700)" }, title: resourceId, children: resourceId })] }), (hasEncryptedFields || encryptionKey) && onDecrypt && jsxRuntimeExports.jsxs("button", { type: "button", onClick: onDecrypt, disabled: !!encryptionKey, className: "inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium transition-colors flex-shrink-0", style: {
66134
- borderColor: encryptionKey ? "var(--ds-green-400)" : "var(--ds-gray-300)",
66135
- color: encryptionKey ? "var(--ds-green-900)" : "var(--ds-gray-900)",
66136
- backgroundColor: encryptionKey ? "var(--ds-green-100)" : "var(--ds-background-100)",
66137
- cursor: encryptionKey ? "default" : "pointer"
66138
- }, children: [encryptionKey ? jsxRuntimeExports.jsx(LockOpen, { className: "h-3 w-3" }) : jsxRuntimeExports.jsx(Lock, { className: "h-3 w-3" }), encryptionKey ? "Decrypted" : "Decrypt"] })] }) }), jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto px-3 pt-3 pb-8", children: [hasPendingActions && jsxRuntimeExports.jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
66198
+ }, children: runStateLabel })] }), jsxRuntimeExports.jsx("p", { className: "mt-1 truncate font-mono text-[13px]", style: { color: "var(--ds-gray-700)" }, title: resourceId, children: resourceId })] }), (hasEncryptedFields || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt })] }) }), jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto px-3 pt-3 pb-8", children: [hasPendingActions && jsxRuntimeExports.jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
66139
66199
  borderColor: "var(--ds-gray-300)",
66140
66200
  backgroundColor: "var(--ds-gray-100)"
66141
66201
  }, children: [jsxRuntimeExports.jsx("p", { className: "mb-2 px-1 text-[13px] font-medium uppercase tracking-wide", style: { color: "var(--ds-gray-700)" }, children: "Actions" }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [resource === "sleep" && canWakeUp && jsxRuntimeExports.jsxs("button", { type: "button", onClick: handleWakeUp, disabled: stoppingSleep, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-sm font-medium", "disabled:opacity-50 disabled:cursor-not-allowed transition-colors", stoppingSleep ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), style: {
@@ -69994,14 +70054,14 @@ function PanelResizeHandle({ onResize }) {
69994
70054
  function TraceViewerFooter({ hasMore, isLive, isInitialLoading }) {
69995
70055
  const style2 = { color: "var(--ds-gray-900)" };
69996
70056
  if (hasMore || isInitialLoading) {
69997
- return jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-xs", style: style2, children: [jsxRuntimeExports.jsxs("svg", { className: "h-3.5 w-3.5 animate-spin", viewBox: "0 0 24 24", fill: "none", children: [jsxRuntimeExports.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), jsxRuntimeExports.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })] }), "Loading more events…"] });
70057
+ return jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-xs", style: style2, children: [jsxRuntimeExports.jsx(Spinner, { size: 14 }), "Loading more events…"] });
69998
70058
  }
69999
70059
  if (isLive) {
70000
70060
  return jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center py-3 text-xs", style: style2, children: "Waiting for more events…" });
70001
70061
  }
70002
70062
  return jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center py-3 text-xs", style: style2, children: "End of run" });
70003
70063
  }
70004
- const WorkflowTraceViewer = ({ run, events: events2, isLoading, error: error2, spanDetailData, spanDetailLoading, spanDetailError, onWakeUpSleep, onResolveHook, onCancelRun, onStreamClick, onSpanSelect, onLoadEventData, onLoadMoreSpans, hasMoreSpans = false, isLoadingMoreSpans = false, encryptionKey, onDecrypt }) => {
70064
+ const WorkflowTraceViewer = ({ run, events: events2, isLoading, error: error2, spanDetailData, spanDetailLoading, spanDetailError, onWakeUpSleep, onResolveHook, onCancelRun, onStreamClick, onSpanSelect, onLoadEventData, onLoadMoreSpans, hasMoreSpans = false, isLoadingMoreSpans = false, encryptionKey, onDecrypt, isDecrypting = false }) => {
70005
70065
  const [selectedSpan, setSelectedSpan] = reactExports.useState(null);
70006
70066
  const [panelWidth, setPanelWidth] = reactExports.useState(DEFAULT_PANEL_WIDTH);
70007
70067
  const [deselectTrigger, setDeselectTrigger] = reactExports.useState(0);
@@ -70171,7 +70231,7 @@ const WorkflowTraceViewer = ({ run, events: events2, isLoading, error: error2, s
70171
70231
  e.currentTarget.style.background = "var(--ds-gray-alpha-100)";
70172
70232
  }, onMouseLeave: (e) => {
70173
70233
  e.currentTarget.style.background = "transparent";
70174
- }, children: jsxRuntimeExports.jsx(X$3, { size: 16 }) }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary, { title: "Failed to load entity details", children: jsxRuntimeExports.jsx(EntityDetailPanel, { run, onStreamClick, spanDetailData: spanDetailData ?? null, spanDetailError, spanDetailLoading, onSpanSelect: handleSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, selectedSpan }) }) })] })] });
70234
+ }, children: jsxRuntimeExports.jsx(X$3, { size: 16 }) }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary, { title: "Failed to load entity details", children: jsxRuntimeExports.jsx(EntityDetailPanel, { run, onStreamClick, spanDetailData: spanDetailData ?? null, spanDetailError, spanDetailLoading, onSpanSelect: handleSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting, selectedSpan }) }) })] })] });
70175
70235
  };
70176
70236
  function deserializeChunkText(text2) {
70177
70237
  try {
@@ -70201,26 +70261,23 @@ const ChunkRow = ReactExports.memo(function ChunkRow2({ chunk, index: index2 })
70201
70261
  function StreamSkeleton() {
70202
70262
  return jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3 animate-in fade-in", children: [jsxRuntimeExports.jsx(Skeleton$2, { style: { width: 120, height: 16, borderRadius: 4 } }), [1, 2, 3, 4].map((i) => jsxRuntimeExports.jsx(Skeleton$2, { style: { height: 56, borderRadius: 6 } }, i))] });
70203
70263
  }
70204
- function StreamViewer({ streamId, chunks, isLive, error: error2, isLoading }) {
70205
- const [hasMoreBelow, setHasMoreBelow] = reactExports.useState(false);
70206
- const scrollRef = reactExports.useRef(null);
70207
- const checkScrollPosition = reactExports.useCallback(() => {
70208
- if (scrollRef.current) {
70209
- const { scrollTop, scrollHeight, clientHeight } = scrollRef.current;
70210
- const isAtBottom = scrollHeight - scrollTop - clientHeight < 10;
70211
- setHasMoreBelow(!isAtBottom && scrollHeight > clientHeight);
70212
- }
70213
- }, []);
70264
+ function StreamViewer({ streamId: _streamId, chunks, isLive, error: error2, isLoading, onScrollEnd }) {
70265
+ const virtuosoRef = reactExports.useRef(null);
70266
+ const prevChunkCountRef = reactExports.useRef(0);
70214
70267
  reactExports.useEffect(() => {
70215
- if (scrollRef.current) {
70216
- scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
70268
+ var _a3;
70269
+ if (chunks.length > prevChunkCountRef.current && chunks.length > 0) {
70270
+ (_a3 = virtuosoRef.current) == null ? void 0 : _a3.scrollToIndex({
70271
+ index: chunks.length - 1,
70272
+ align: "end"
70273
+ });
70217
70274
  }
70218
- checkScrollPosition();
70219
- }, [chunks.length, checkScrollPosition]);
70275
+ prevChunkCountRef.current = chunks.length;
70276
+ }, [chunks.length]);
70220
70277
  if (isLoading && chunks.length === 0) {
70221
- return jsxRuntimeExports.jsx("div", { className: "flex flex-col h-full pb-4", children: jsxRuntimeExports.jsx(StreamSkeleton, {}) });
70278
+ return jsxRuntimeExports.jsx("div", { className: "flex flex-col h-full", children: jsxRuntimeExports.jsx(StreamSkeleton, {}) });
70222
70279
  }
70223
- return jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full pb-4", children: [isLive && jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 mb-3 px-1", children: [jsxRuntimeExports.jsx("span", { className: "inline-block w-2 h-2 rounded-full", style: { backgroundColor: "var(--ds-green-600)" } }), jsxRuntimeExports.jsx("span", { className: "text-xs", style: { color: "var(--ds-green-700)" }, children: "Live" })] }), chunks.length > 0 && jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mb-2 px-1", children: [jsxRuntimeExports.jsx("span", { className: "text-[13px] font-medium", style: { color: "var(--ds-gray-900)" }, children: "Stream Chunks" }), jsxRuntimeExports.jsxs("span", { className: "text-xs tabular-nums", style: { color: "var(--ds-gray-600)" }, children: ["(", chunks.length, ")"] })] }), jsxRuntimeExports.jsxs("div", { className: "relative flex-1 min-h-[200px]", children: [jsxRuntimeExports.jsx("div", { ref: scrollRef, onScroll: checkScrollPosition, className: "absolute inset-0 overflow-auto flex flex-col gap-2", children: error2 ? jsxRuntimeExports.jsxs("div", { className: "text-[11px] rounded-md border p-3", style: {
70280
+ return jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full", children: [isLive && jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 mb-2 px-1", children: [jsxRuntimeExports.jsx("span", { className: "inline-block w-2 h-2 rounded-full", style: { backgroundColor: "var(--ds-green-600)" } }), jsxRuntimeExports.jsx("span", { className: "text-xs", style: { color: "var(--ds-green-700)" }, children: "Live" })] }), chunks.length > 0 && jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mb-2 px-1", children: [jsxRuntimeExports.jsx("span", { className: "text-[13px] font-medium", style: { color: "var(--ds-gray-900)" }, children: "Stream Chunks" }), jsxRuntimeExports.jsxs("span", { className: "text-xs tabular-nums", style: { color: "var(--ds-gray-600)" }, children: ["(", chunks.length, ")"] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0", children: error2 ? jsxRuntimeExports.jsxs("div", { className: "text-[11px] rounded-md border p-3", style: {
70224
70281
  borderColor: "var(--ds-red-300)",
70225
70282
  backgroundColor: "var(--ds-red-100)",
70226
70283
  color: "var(--ds-red-700)"
@@ -70228,9 +70285,7 @@ function StreamViewer({ streamId, chunks, isLive, error: error2, isLoading }) {
70228
70285
  borderColor: "var(--ds-gray-300)",
70229
70286
  backgroundColor: "var(--ds-gray-100)",
70230
70287
  color: "var(--ds-gray-600)"
70231
- }, children: isLive ? "Waiting for stream data..." : "Stream is empty" }) : chunks.map((chunk, index2) => jsxRuntimeExports.jsx(ChunkRow, { chunk, index: index2 }, `${streamId}-chunk-${chunk.id}`)) }), hasMoreBelow && jsxRuntimeExports.jsx("div", { className: "absolute bottom-0 left-0 right-0 h-8 pointer-events-none", style: {
70232
- background: "linear-gradient(to top, var(--ds-background-100), transparent)"
70233
- } })] })] });
70288
+ }, children: isLive ? "Waiting for stream data..." : "Stream is empty" }) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd == null ? void 0 : onScrollEnd(), itemContent: (index2) => jsxRuntimeExports.jsx("div", { style: { paddingBottom: 8 }, children: jsxRuntimeExports.jsx(ChunkRow, { chunk: chunks[index2], index: index2 }) }), style: { flex: 1, minHeight: 0 } }) })] });
70234
70289
  }
70235
70290
  function analyzeEvents(events2) {
70236
70291
  if (!events2 || events2.length === 0) {
@@ -89673,8 +89728,8 @@ function requireGetVercelOidcToken$1() {
89673
89728
  }
89674
89729
  try {
89675
89730
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
89676
- await import("./token-util-DMDYM1rE.js").then((n) => n.t),
89677
- await import("./token-CNug9NIq.js").then((n) => n.t)
89731
+ await import("./token-util-D-4jXUkD.js").then((n) => n.t),
89732
+ await import("./token-Bjyd4X_e.js").then((n) => n.t)
89678
89733
  ]);
89679
89734
  if (!token || isExpired(getTokenPayload(token))) {
89680
89735
  await refreshToken();
@@ -116174,6 +116229,18 @@ async function deleteJSON(filePath) {
116174
116229
  throw error2;
116175
116230
  }
116176
116231
  }
116232
+ async function writeExclusive(filePath, data) {
116233
+ await ensureDir(path$2.dirname(filePath));
116234
+ try {
116235
+ await promises.writeFile(filePath, data, { flag: "wx" });
116236
+ return true;
116237
+ } catch (error2) {
116238
+ if (error2.code === "EEXIST") {
116239
+ return false;
116240
+ }
116241
+ throw error2;
116242
+ }
116243
+ }
116177
116244
  async function listJSONFiles(dirPath) {
116178
116245
  return listFilesByExtension(dirPath, ".json");
116179
116246
  }
@@ -116314,6 +116381,9 @@ function filterHookData$1(hook, resolveData) {
116314
116381
  }
116315
116382
  return hook;
116316
116383
  }
116384
+ function hashToken(token) {
116385
+ return createHash("sha256").update(token).digest("hex");
116386
+ }
116317
116387
  const monotonicUlid$1 = monotonicFactory(() => Math.random());
116318
116388
  const getObjectCreatedAt = (idPrefix) => (filename) => {
116319
116389
  const replaceRegex = new RegExp(`^${idPrefix}_`, "g");
@@ -116395,6 +116465,8 @@ async function deleteAllHooksForRun(basedir, runId) {
116395
116465
  const hookPath = path$2.join(hooksDir, `${file2}.json`);
116396
116466
  const hook = await readJSON(hookPath, HookSchema);
116397
116467
  if (hook && hook.runId === runId) {
116468
+ const constraintPath = path$2.join(hooksDir, "tokens", `${hashToken(hook.token)}.json`);
116469
+ await deleteJSON(constraintPath);
116398
116470
  await deleteJSON(hookPath);
116399
116471
  }
116400
116472
  }
@@ -116796,18 +116868,13 @@ function createEventsStorage(basedir) {
116796
116868
  data.eventType === "hook_created" && "eventData" in data
116797
116869
  ) {
116798
116870
  const hookData = data.eventData;
116799
- const hooksDir = path$2.join(basedir, "hooks");
116800
- const hookFiles = await listJSONFiles(hooksDir);
116801
- let hasConflict = false;
116802
- for (const file2 of hookFiles) {
116803
- const existingHookPath = path$2.join(hooksDir, `${file2}.json`);
116804
- const existingHook = await readJSON(existingHookPath, HookSchema);
116805
- if (existingHook && existingHook.token === hookData.token) {
116806
- hasConflict = true;
116807
- break;
116808
- }
116809
- }
116810
- if (hasConflict) {
116871
+ const constraintPath = path$2.join(basedir, "hooks", "tokens", `${hashToken(hookData.token)}.json`);
116872
+ const tokenClaimed = await writeExclusive(constraintPath, JSON.stringify({
116873
+ token: hookData.token,
116874
+ hookId: data.correlationId,
116875
+ runId: effectiveRunId
116876
+ }));
116877
+ if (!tokenClaimed) {
116811
116878
  const conflictEvent = {
116812
116879
  eventType: "hook_conflict",
116813
116880
  correlationId: data.correlationId,
@@ -116848,6 +116915,11 @@ function createEventsStorage(basedir) {
116848
116915
  await writeJSON(hookPath, hook);
116849
116916
  } else if (data.eventType === "hook_disposed") {
116850
116917
  const hookPath = path$2.join(basedir, "hooks", `${data.correlationId}.json`);
116918
+ const existingHook = await readJSON(hookPath, HookSchema);
116919
+ if (existingHook) {
116920
+ const disposedConstraintPath = path$2.join(basedir, "hooks", "tokens", `${hashToken(existingHook.token)}.json`);
116921
+ await deleteJSON(disposedConstraintPath);
116922
+ }
116851
116923
  await deleteJSON(hookPath);
116852
116924
  } else if (data.eventType === "wait_created" && "eventData" in data) {
116853
116925
  const waitData = data.eventData;
@@ -117408,8 +117480,8 @@ function requireGetVercelOidcToken() {
117408
117480
  }
117409
117481
  try {
117410
117482
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
117411
- await import("./token-util-_HYGsI73.js").then((n) => n.t),
117412
- await import("./token-DLqvw7I2.js").then((n) => n.t)
117483
+ await import("./token-util-Dp_pg92C.js").then((n) => n.t),
117484
+ await import("./token-CTJIoJEi.js").then((n) => n.t)
117413
117485
  ]);
117414
117486
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
117415
117487
  await refreshToken(options);
@@ -119309,7 +119381,7 @@ const createWorld = () => {
119309
119381
  "WORKFLOW_VERCEL_AUTH_TOKEN",
119310
119382
  "WORKFLOW_VERCEL_ENV"
119311
119383
  ].filter((key) => process.env[key]);
119312
- if (staleEnvVars.length > 0) {
119384
+ if (staleEnvVars.length > 0 && process.env.VERCEL === "1") {
119313
119385
  console.warn(`[workflow] Warning: ${staleEnvVars.join(", ")} env var(s) are set but have no effect at runtime. These are only used by the Workflow CLI. Remove them from your Vercel project environment variables.`);
119314
119386
  }
119315
119387
  return createVercelWorld();
@@ -119500,28 +119572,6 @@ function getQueueOverhead(message2) {
119500
119572
  return;
119501
119573
  }
119502
119574
  }
119503
- async function withServerErrorRetry(fn2) {
119504
- const delays = [500, 1e3, 2e3];
119505
- for (let attempt = 0; attempt <= delays.length; attempt++) {
119506
- try {
119507
- return await fn2();
119508
- } catch (err) {
119509
- if (WorkflowAPIError.is(err) && err.status !== void 0 && err.status >= 500 && attempt < delays.length) {
119510
- runtimeLogger.warn("Server error (5xx) from workflow-server, retrying in-process", {
119511
- status: err.status,
119512
- attempt: attempt + 1,
119513
- maxRetries: delays.length,
119514
- nextDelayMs: delays[attempt],
119515
- url: err.url
119516
- });
119517
- await new Promise((resolve2) => setTimeout(resolve2, delays[attempt]));
119518
- continue;
119519
- }
119520
- throw err;
119521
- }
119522
- }
119523
- throw new Error("withServerErrorRetry: unreachable");
119524
- }
119525
119575
  var headers;
119526
119576
  var hasRequiredHeaders;
119527
119577
  function requireHeaders() {
@@ -122534,7 +122584,7 @@ async function resumeHook$2(tokenOrHook, payload, encryptionKeyOverride) {
122534
122584
  });
122535
122585
  });
122536
122586
  }
122537
- const version = "4.2.0-beta.69";
122587
+ const version = "4.2.0-beta.70";
122538
122588
  const ulid = monotonicFactory();
122539
122589
  async function start$1(workflow, argsOrOptions, options) {
122540
122590
  return await waitedUntil(() => {
@@ -122929,18 +122979,18 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
122929
122979
  });
122930
122980
  let step;
122931
122981
  try {
122932
- const startResult = await withServerErrorRetry(() => world.events.create(workflowRunId, {
122982
+ const startResult = await world.events.create(workflowRunId, {
122933
122983
  eventType: "step_started",
122934
122984
  specVersion: SPEC_VERSION_CURRENT,
122935
122985
  correlationId: stepId
122936
- }));
122986
+ });
122937
122987
  if (!startResult.step) {
122938
122988
  throw new WorkflowRuntimeError(`step_started event for "${stepId}" did not return step entity`);
122939
122989
  }
122940
122990
  step = startResult.step;
122941
122991
  } catch (err) {
122942
122992
  if (WorkflowAPIError.is(err)) {
122943
- if (WorkflowAPIError.is(err) && err.status === 429) {
122993
+ if (err.status === 429) {
122944
122994
  const retryRetryAfter = Math.max(1, typeof err.retryAfter === "number" ? err.retryAfter : 1);
122945
122995
  runtimeLogger.warn("Throttled again on retry, deferring to queue", {
122946
122996
  retryAfterSeconds: retryRetryAfter
@@ -123049,28 +123099,57 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123049
123099
  });
123050
123100
  return;
123051
123101
  }
123052
- try {
123053
- const attempt = step.attempt;
123054
- if (!step.startedAt) {
123055
- throw new WorkflowRuntimeError(`Step "${stepId}" has no "startedAt" timestamp`);
123056
- }
123057
- const stepStartedAt = step.startedAt;
123058
- const ops = [];
123059
- const rawKey = await ((_e2 = world.getEncryptionKeyForRun) == null ? void 0 : _e2.call(world, workflowRunId));
123060
- const encryptionKey = rawKey ? await importKey(rawKey) : void 0;
123061
- const hydratedInput = await trace$2("step.hydrate", {}, async (hydrateSpan) => {
123062
- const startTime = Date.now();
123063
- const result2 = await hydrateStepArguments(step.input, workflowRunId, encryptionKey, ops);
123064
- const durationMs = Date.now() - startTime;
123065
- hydrateSpan == null ? void 0 : hydrateSpan.setAttributes({
123066
- ...StepArgumentsCount(result2.args.length),
123067
- ...QueueDeserializeTimeMs(durationMs)
123102
+ const attempt = step.attempt;
123103
+ if (!step.startedAt) {
123104
+ const errorMessage = `Step "${stepId}" has no "startedAt" timestamp`;
123105
+ runtimeLogger.error("Fatal runtime error during step setup", {
123106
+ workflowRunId,
123107
+ stepId,
123108
+ error: errorMessage
123109
+ });
123110
+ try {
123111
+ await world.events.create(workflowRunId, {
123112
+ eventType: "step_failed",
123113
+ specVersion: SPEC_VERSION_CURRENT,
123114
+ correlationId: stepId,
123115
+ eventData: {
123116
+ error: errorMessage,
123117
+ stack: new Error(errorMessage).stack ?? ""
123118
+ }
123068
123119
  });
123069
- return result2;
123120
+ } catch (failErr) {
123121
+ if (WorkflowAPIError.is(failErr) && failErr.status === 409) {
123122
+ return;
123123
+ }
123124
+ throw failErr;
123125
+ }
123126
+ await queueMessage(world, getWorkflowQueueName(workflowName), {
123127
+ runId: workflowRunId,
123128
+ traceCarrier: await serializeTraceCarrier(),
123129
+ requestedAt: /* @__PURE__ */ new Date()
123130
+ });
123131
+ return;
123132
+ }
123133
+ const stepStartedAt = step.startedAt;
123134
+ const ops = [];
123135
+ const rawKey = await ((_e2 = world.getEncryptionKeyForRun) == null ? void 0 : _e2.call(world, workflowRunId));
123136
+ const encryptionKey = rawKey ? await importKey(rawKey) : void 0;
123137
+ const hydratedInput = await trace$2("step.hydrate", {}, async (hydrateSpan) => {
123138
+ const startTime = Date.now();
123139
+ const result2 = await hydrateStepArguments(step.input, workflowRunId, encryptionKey, ops);
123140
+ const durationMs = Date.now() - startTime;
123141
+ hydrateSpan == null ? void 0 : hydrateSpan.setAttributes({
123142
+ ...StepArgumentsCount(result2.args.length),
123143
+ ...QueueDeserializeTimeMs(durationMs)
123070
123144
  });
123071
- const args = hydratedInput.args;
123072
- const thisVal = hydratedInput.thisVal ?? null;
123073
- const executionStartTime = Date.now();
123145
+ return result2;
123146
+ });
123147
+ const args = hydratedInput.args;
123148
+ const thisVal = hydratedInput.thisVal ?? null;
123149
+ let userCodeError;
123150
+ let userCodeFailed = false;
123151
+ const executionStartTime = Date.now();
123152
+ try {
123074
123153
  result = await trace$2("step.execute", {}, async () => {
123075
123154
  return await contextStorage.run({
123076
123155
  stepMetadata: {
@@ -123092,63 +123171,29 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123092
123171
  encryptionKey
123093
123172
  }, () => stepFn.apply(thisVal, args));
123094
123173
  });
123095
- const executionTimeMs = Date.now() - executionStartTime;
123096
- span == null ? void 0 : span.setAttributes({
123097
- ...QueueExecutionTimeMs(executionTimeMs)
123098
- });
123099
- result = await trace$2("step.dehydrate", {}, async (dehydrateSpan) => {
123100
- const startTime = Date.now();
123101
- const dehydrated = await dehydrateStepReturnValue(result, workflowRunId, encryptionKey, ops);
123102
- const durationMs = Date.now() - startTime;
123103
- dehydrateSpan == null ? void 0 : dehydrateSpan.setAttributes({
123104
- ...QueueSerializeTimeMs(durationMs),
123105
- ...StepResultType(typeof dehydrated)
123106
- });
123107
- return dehydrated;
123108
- });
123109
- functionsExports.waitUntil(Promise.all(ops).catch((err) => {
123110
- const isAbortError = (err == null ? void 0 : err.name) === "AbortError" || (err == null ? void 0 : err.name) === "ResponseAborted";
123111
- if (!isAbortError)
123112
- throw err;
123113
- }));
123114
- let stepCompleted409 = false;
123115
- const [, traceCarrier] = await Promise.all([
123116
- withServerErrorRetry(() => world.events.create(workflowRunId, {
123117
- eventType: "step_completed",
123118
- specVersion: SPEC_VERSION_CURRENT,
123119
- correlationId: stepId,
123120
- eventData: {
123121
- result
123122
- }
123123
- })).catch((err) => {
123124
- if (WorkflowAPIError.is(err) && err.status === 409) {
123125
- runtimeLogger.warn("Tried completing step, but step has already finished.", {
123126
- workflowRunId,
123127
- stepId,
123128
- stepName,
123129
- message: err.message
123130
- });
123131
- stepCompleted409 = true;
123132
- return;
123133
- }
123174
+ } catch (err) {
123175
+ userCodeError = err;
123176
+ userCodeFailed = true;
123177
+ }
123178
+ const executionTimeMs = Date.now() - executionStartTime;
123179
+ span == null ? void 0 : span.setAttributes({
123180
+ ...QueueExecutionTimeMs(executionTimeMs)
123181
+ });
123182
+ if (userCodeFailed) {
123183
+ const err = userCodeError;
123184
+ if (WorkflowAPIError.is(err)) {
123185
+ if (err.status === 410) {
123186
+ stepLogger.info("Workflow run already completed, skipping step", {
123187
+ workflowRunId,
123188
+ stepId,
123189
+ message: err.message
123190
+ });
123191
+ return;
123192
+ }
123193
+ if (err.status !== void 0 && err.status >= 500) {
123134
123194
  throw err;
123135
- }),
123136
- serializeTraceCarrier()
123137
- ]);
123138
- if (stepCompleted409) {
123139
- return;
123195
+ }
123140
123196
  }
123141
- span == null ? void 0 : span.setAttributes({
123142
- ...StepStatus("completed"),
123143
- ...StepResultType(typeof result)
123144
- });
123145
- await queueMessage(world, getWorkflowQueueName(workflowName), {
123146
- runId: workflowRunId,
123147
- traceCarrier,
123148
- requestedAt: /* @__PURE__ */ new Date()
123149
- });
123150
- return;
123151
- } catch (err) {
123152
123197
  const normalizedError = await normalizeUnknownError(err);
123153
123198
  const normalizedStack = normalizedError.stack || getErrorStack(err) || "";
123154
123199
  if (err instanceof Error) {
@@ -123164,26 +123209,6 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123164
123209
  ...ErrorCategory(errorCategory),
123165
123210
  ...ErrorRetryable(!isFatal)
123166
123211
  });
123167
- if (WorkflowAPIError.is(err)) {
123168
- if (err.status === 410) {
123169
- stepLogger.info("Workflow run already completed, skipping step", {
123170
- workflowRunId,
123171
- stepId,
123172
- message: err.message
123173
- });
123174
- return;
123175
- }
123176
- if (err.status !== void 0 && err.status >= 500) {
123177
- runtimeLogger.warn("Persistent server error (5xx) during step, deferring to queue retry", {
123178
- status: err.status,
123179
- workflowRunId,
123180
- stepId,
123181
- error: err.message,
123182
- url: err.url
123183
- });
123184
- throw err;
123185
- }
123186
- }
123187
123212
  if (isFatal) {
123188
123213
  stepLogger.error("Encountered FatalError while executing step, bubbling up to parent workflow", {
123189
123214
  workflowRunId,
@@ -123191,7 +123216,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123191
123216
  errorStack: normalizedStack
123192
123217
  });
123193
123218
  try {
123194
- await withServerErrorRetry(() => world.events.create(workflowRunId, {
123219
+ await world.events.create(workflowRunId, {
123195
123220
  eventType: "step_failed",
123196
123221
  specVersion: SPEC_VERSION_CURRENT,
123197
123222
  correlationId: stepId,
@@ -123199,7 +123224,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123199
123224
  error: normalizedError.message,
123200
123225
  stack: normalizedStack
123201
123226
  }
123202
- }));
123227
+ });
123203
123228
  } catch (stepFailErr) {
123204
123229
  if (WorkflowAPIError.is(stepFailErr) && stepFailErr.status === 409) {
123205
123230
  runtimeLogger.warn("Tried failing step, but step has already finished.", {
@@ -123234,7 +123259,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123234
123259
  });
123235
123260
  const errorMessage = `Step "${stepName}" failed after ${maxRetries2} ${pluralize("retry", "retries", maxRetries2)}: ${normalizedError.message}`;
123236
123261
  try {
123237
- await withServerErrorRetry(() => world.events.create(workflowRunId, {
123262
+ await world.events.create(workflowRunId, {
123238
123263
  eventType: "step_failed",
123239
123264
  specVersion: SPEC_VERSION_CURRENT,
123240
123265
  correlationId: stepId,
@@ -123242,7 +123267,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123242
123267
  error: errorMessage,
123243
123268
  stack: normalizedStack
123244
123269
  }
123245
- }));
123270
+ });
123246
123271
  } catch (stepFailErr) {
123247
123272
  if (WorkflowAPIError.is(stepFailErr) && stepFailErr.status === 409) {
123248
123273
  runtimeLogger.warn("Tried failing step, but step has already finished.", {
@@ -123276,7 +123301,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123276
123301
  });
123277
123302
  }
123278
123303
  try {
123279
- await withServerErrorRetry(() => world.events.create(workflowRunId, {
123304
+ await world.events.create(workflowRunId, {
123280
123305
  eventType: "step_retrying",
123281
123306
  specVersion: SPEC_VERSION_CURRENT,
123282
123307
  correlationId: stepId,
@@ -123287,7 +123312,7 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123287
123312
  retryAfter: err.retryAfter
123288
123313
  }
123289
123314
  }
123290
- }));
123315
+ });
123291
123316
  } catch (stepRetryErr) {
123292
123317
  if (WorkflowAPIError.is(stepRetryErr) && stepRetryErr.status === 409) {
123293
123318
  runtimeLogger.warn("Tried retrying step, but step has already finished.", {
@@ -123313,10 +123338,62 @@ getWorldHandlers().createQueueHandler("__wkf_step_", async (message_, metadata)
123313
123338
  return { timeoutSeconds };
123314
123339
  }
123315
123340
  }
123341
+ await queueMessage(world, getWorkflowQueueName(workflowName), {
123342
+ runId: workflowRunId,
123343
+ traceCarrier: await serializeTraceCarrier(),
123344
+ requestedAt: /* @__PURE__ */ new Date()
123345
+ });
123346
+ return;
123347
+ }
123348
+ result = await trace$2("step.dehydrate", {}, async (dehydrateSpan) => {
123349
+ const startTime = Date.now();
123350
+ const dehydrated = await dehydrateStepReturnValue(result, workflowRunId, encryptionKey, ops);
123351
+ const durationMs = Date.now() - startTime;
123352
+ dehydrateSpan == null ? void 0 : dehydrateSpan.setAttributes({
123353
+ ...QueueSerializeTimeMs(durationMs),
123354
+ ...StepResultType(typeof dehydrated)
123355
+ });
123356
+ return dehydrated;
123357
+ });
123358
+ functionsExports.waitUntil(Promise.all(ops).catch((err) => {
123359
+ const isAbortError = (err == null ? void 0 : err.name) === "AbortError" || (err == null ? void 0 : err.name) === "ResponseAborted";
123360
+ if (!isAbortError)
123361
+ throw err;
123362
+ }));
123363
+ let stepCompleted409 = false;
123364
+ const [, traceCarrier] = await Promise.all([
123365
+ world.events.create(workflowRunId, {
123366
+ eventType: "step_completed",
123367
+ specVersion: SPEC_VERSION_CURRENT,
123368
+ correlationId: stepId,
123369
+ eventData: {
123370
+ result
123371
+ }
123372
+ }).catch((err) => {
123373
+ if (WorkflowAPIError.is(err) && err.status === 409) {
123374
+ runtimeLogger.warn("Tried completing step, but step has already finished.", {
123375
+ workflowRunId,
123376
+ stepId,
123377
+ stepName,
123378
+ message: err.message
123379
+ });
123380
+ stepCompleted409 = true;
123381
+ return;
123382
+ }
123383
+ throw err;
123384
+ }),
123385
+ serializeTraceCarrier()
123386
+ ]);
123387
+ if (stepCompleted409) {
123388
+ return;
123316
123389
  }
123390
+ span == null ? void 0 : span.setAttributes({
123391
+ ...StepStatus("completed"),
123392
+ ...StepResultType(typeof result)
123393
+ });
123317
123394
  await queueMessage(world, getWorkflowQueueName(workflowName), {
123318
123395
  runId: workflowRunId,
123319
- traceCarrier: await serializeTraceCarrier(),
123396
+ traceCarrier,
123320
123397
  requestedAt: /* @__PURE__ */ new Date()
123321
123398
  });
123322
123399
  });
@@ -129975,8 +130052,8 @@ async function pollResource(opts) {
129975
130052
  return false;
129976
130053
  }
129977
130054
  const LIVE_POLL_LIMIT = 100;
129978
- const INITIAL_PAGE_SIZE = 500;
129979
- const LOAD_MORE_PAGE_SIZE = 100;
130055
+ const INITIAL_PAGE_SIZE$1 = 500;
130056
+ const LOAD_MORE_PAGE_SIZE$1 = 100;
129980
130057
  const LIVE_UPDATE_INTERVAL_MS = 5e3;
129981
130058
  function useWorkflowTraceViewerData(env2, runId, options = {}) {
129982
130059
  const { live = false } = options;
@@ -130001,7 +130078,7 @@ function useWorkflowTraceViewerData(env2, runId, options = {}) {
130001
130078
  unwrapServerActionResult(
130002
130079
  fetchEvents$1(env2, runId, {
130003
130080
  sortOrder: "asc",
130004
- limit: INITIAL_PAGE_SIZE,
130081
+ limit: INITIAL_PAGE_SIZE$1,
130005
130082
  withData: true
130006
130083
  })
130007
130084
  )
@@ -130036,7 +130113,7 @@ function useWorkflowTraceViewerData(env2, runId, options = {}) {
130036
130113
  fetchEvents$1(env2, runId, {
130037
130114
  cursor: eventsCursor,
130038
130115
  sortOrder: "asc",
130039
- limit: LOAD_MORE_PAGE_SIZE,
130116
+ limit: LOAD_MORE_PAGE_SIZE$1,
130040
130117
  withData: true
130041
130118
  })
130042
130119
  );
@@ -146165,6 +146242,117 @@ function useStreamReader(env2, streamId, runId, encryptionKey) {
146165
146242
  }, [env2, streamId, runId, encryptionKey]);
146166
146243
  return { chunks, isLive, error: error2 };
146167
146244
  }
146245
+ const INITIAL_PAGE_SIZE = 100;
146246
+ const LOAD_MORE_PAGE_SIZE = 100;
146247
+ function useEventsListData(env2, runId, options = {}) {
146248
+ const { sortOrder = "asc", encryptionKey, enabled = true } = options;
146249
+ const [events2, setEvents] = reactExports.useState([]);
146250
+ const [loading, setLoading] = reactExports.useState(true);
146251
+ const [error2, setError] = reactExports.useState(null);
146252
+ const [cursor, setCursor] = reactExports.useState();
146253
+ const [hasMore, setHasMore] = reactExports.useState(false);
146254
+ const [loadingMore, setLoadingMore] = reactExports.useState(false);
146255
+ const isFetchingRef = reactExports.useRef(false);
146256
+ const encryptionKeyRef = reactExports.useRef(encryptionKey);
146257
+ encryptionKeyRef.current = encryptionKey;
146258
+ const fetchInitial = reactExports.useCallback(async () => {
146259
+ if (isFetchingRef.current) return;
146260
+ isFetchingRef.current = true;
146261
+ setLoading(true);
146262
+ setError(null);
146263
+ setEvents([]);
146264
+ setCursor(void 0);
146265
+ setHasMore(false);
146266
+ try {
146267
+ const { error: fetchError, result } = await unwrapServerActionResult(
146268
+ fetchEvents$1(env2, runId, {
146269
+ sortOrder,
146270
+ limit: INITIAL_PAGE_SIZE,
146271
+ withData: true
146272
+ })
146273
+ );
146274
+ if (fetchError) {
146275
+ setError(fetchError);
146276
+ } else {
146277
+ const hydrated = result.data.map(hydrateResourceIO);
146278
+ const key = encryptionKeyRef.current;
146279
+ if (key) {
146280
+ const decrypted = await Promise.all(
146281
+ hydrated.map((ev) => hydrateResourceIOWithKey(ev, key))
146282
+ );
146283
+ setEvents(decrypted);
146284
+ } else {
146285
+ setEvents(hydrated);
146286
+ }
146287
+ setCursor(result.hasMore ? result.cursor : void 0);
146288
+ setHasMore(Boolean(result.hasMore));
146289
+ }
146290
+ } catch (err) {
146291
+ setError(err);
146292
+ } finally {
146293
+ setLoading(false);
146294
+ isFetchingRef.current = false;
146295
+ }
146296
+ }, [env2, runId, sortOrder]);
146297
+ reactExports.useEffect(() => {
146298
+ if (enabled) fetchInitial();
146299
+ }, [fetchInitial, enabled]);
146300
+ reactExports.useEffect(() => {
146301
+ if (!encryptionKey || events2.length === 0) return;
146302
+ let cancelled = false;
146303
+ Promise.all(events2.map((ev) => hydrateResourceIOWithKey(ev, encryptionKey))).then((decrypted) => {
146304
+ if (!cancelled) setEvents(decrypted);
146305
+ }).catch(() => {
146306
+ });
146307
+ return () => {
146308
+ cancelled = true;
146309
+ };
146310
+ }, [encryptionKey]);
146311
+ const loadMore = reactExports.useCallback(async () => {
146312
+ if (loadingMore || !cursor) return;
146313
+ setLoadingMore(true);
146314
+ try {
146315
+ const { error: fetchError, result } = await unwrapServerActionResult(
146316
+ fetchEvents$1(env2, runId, {
146317
+ cursor,
146318
+ sortOrder,
146319
+ limit: LOAD_MORE_PAGE_SIZE,
146320
+ withData: true
146321
+ })
146322
+ );
146323
+ if (fetchError) {
146324
+ setError(fetchError);
146325
+ } else {
146326
+ if (result.data.length > 0) {
146327
+ const hydrated = result.data.map(hydrateResourceIO);
146328
+ const key = encryptionKeyRef.current;
146329
+ if (key) {
146330
+ const decrypted = await Promise.all(
146331
+ hydrated.map((ev) => hydrateResourceIOWithKey(ev, key))
146332
+ );
146333
+ setEvents((prev) => [...prev, ...decrypted]);
146334
+ } else {
146335
+ setEvents((prev) => [...prev, ...hydrated]);
146336
+ }
146337
+ }
146338
+ setCursor(result.hasMore ? result.cursor : void 0);
146339
+ setHasMore(Boolean(result.hasMore));
146340
+ }
146341
+ } catch (err) {
146342
+ setError(err);
146343
+ } finally {
146344
+ setLoadingMore(false);
146345
+ }
146346
+ }, [env2, runId, sortOrder, cursor, loadingMore]);
146347
+ return {
146348
+ events: events2,
146349
+ loading,
146350
+ error: error2,
146351
+ hasMore,
146352
+ loadingMore,
146353
+ loadMore
146354
+ };
146355
+ }
146168
146356
  function LiveStatus({ hasError, errorMessage }) {
146169
146357
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
146170
146358
  /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5", children: [
@@ -147193,6 +147381,18 @@ function RunDetailView({
147193
147381
  const run = runData ?? {};
147194
147382
  const [encryptionKey, setEncryptionKey] = reactExports.useState(null);
147195
147383
  encryptionKeyRef.current = encryptionKey;
147384
+ const [eventsSortOrder, setEventsSortOrder] = reactExports.useState("asc");
147385
+ const {
147386
+ events: eventsListData,
147387
+ loading: eventsListLoading,
147388
+ hasMore: hasMoreEventsTab,
147389
+ loadingMore: loadingMoreEventsTab,
147390
+ loadMore: loadMoreEventsTab
147391
+ } = useEventsListData(env2, runId, {
147392
+ sortOrder: eventsSortOrder,
147393
+ encryptionKey: encryptionKey ?? void 0,
147394
+ enabled: activeTab === "events"
147395
+ });
147196
147396
  const [spanSelection, setSpanSelection] = reactExports.useState(
147197
147397
  null
147198
147398
  );
@@ -147213,21 +147413,27 @@ function RunDetailView({
147213
147413
  encryptionKey: encryptionKey ?? void 0
147214
147414
  }
147215
147415
  );
147416
+ const [isDecrypting, setIsDecrypting] = reactExports.useState(false);
147216
147417
  const handleDecrypt = reactExports.useCallback(async () => {
147217
147418
  if (encryptionKey) {
147218
147419
  refreshSpanDetail();
147219
147420
  return;
147220
147421
  }
147221
- const { error: keyError, result: keyResult } = await unwrapServerActionResult(getEncryptionKeyForRun$1(env2, runId));
147222
- if (keyError) {
147223
- toast.error(`Failed to fetch encryption key: ${keyError.message}`);
147224
- return;
147225
- }
147226
- if (!keyResult) {
147227
- toast.error("Encryption is not configured for this deployment.");
147228
- return;
147422
+ setIsDecrypting(true);
147423
+ try {
147424
+ const { error: keyError, result: keyResult } = await unwrapServerActionResult(getEncryptionKeyForRun$1(env2, runId));
147425
+ if (keyError) {
147426
+ toast.error(`Failed to fetch encryption key: ${keyError.message}`);
147427
+ return;
147428
+ }
147429
+ if (!keyResult) {
147430
+ toast.error("Encryption is not configured for this deployment.");
147431
+ return;
147432
+ }
147433
+ setEncryptionKey(keyResult);
147434
+ } finally {
147435
+ setIsDecrypting(false);
147229
147436
  }
147230
- setEncryptionKey(keyResult);
147231
147437
  }, [encryptionKey, env2, runId, refreshSpanDetail]);
147232
147438
  const handleSpanSelect = reactExports.useCallback((info) => {
147233
147439
  setSpanSelection(info);
@@ -147445,17 +147651,25 @@ function RunDetailView({
147445
147651
  hasMoreSpans: hasMoreTraceData,
147446
147652
  isLoadingMoreSpans: isLoadingMoreTraceData,
147447
147653
  encryptionKey: encryptionKey ?? void 0,
147448
- onDecrypt: handleDecrypt
147654
+ onDecrypt: handleDecrypt,
147655
+ isDecrypting
147449
147656
  }
147450
147657
  ) }) }) }),
147451
147658
  /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "events", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary, { title: "Failed to load events list", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
147452
147659
  EventListView,
147453
147660
  {
147454
- events: allEvents,
147661
+ events: eventsListData,
147455
147662
  run,
147456
147663
  onLoadEventData: handleLoadEventData,
147664
+ hasMoreEvents: hasMoreEventsTab,
147665
+ isLoadingMoreEvents: loadingMoreEventsTab,
147666
+ onLoadMoreEvents: loadMoreEventsTab,
147457
147667
  encryptionKey: encryptionKey ?? void 0,
147458
- isLoading: loading
147668
+ isLoading: eventsListLoading,
147669
+ sortOrder: eventsSortOrder,
147670
+ onSortOrderChange: setEventsSortOrder,
147671
+ onDecrypt: handleDecrypt,
147672
+ isDecrypting
147459
147673
  }
147460
147674
  ) }) }) }),
147461
147675
  /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "streams", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary, { title: "Failed to load stream data", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex gap-4", children: [
@@ -147508,13 +147722,46 @@ function RunDetailView({
147508
147722
  ]
147509
147723
  }
147510
147724
  ),
147511
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-w-0", children: selectedStreamId ? /* @__PURE__ */ jsxRuntimeExports.jsx(
147725
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-w-0", children: selectedStreamId ? (streamError == null ? void 0 : streamError.includes("encrypted")) && !encryptionKey ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
147726
+ "div",
147727
+ {
147728
+ className: "h-full flex flex-col items-center justify-center gap-3 rounded-lg border p-4",
147729
+ style: {
147730
+ borderColor: "var(--ds-gray-300)",
147731
+ backgroundColor: "var(--ds-gray-100)"
147732
+ },
147733
+ children: [
147734
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
147735
+ Lock,
147736
+ {
147737
+ className: "h-6 w-6",
147738
+ style: { color: "var(--ds-gray-700)" }
147739
+ }
147740
+ ),
147741
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
147742
+ "div",
147743
+ {
147744
+ className: "text-sm",
147745
+ style: { color: "var(--ds-gray-900)" },
147746
+ children: "This stream is encrypted."
147747
+ }
147748
+ ),
147749
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
147750
+ DecryptButton,
147751
+ {
147752
+ onClick: handleDecrypt,
147753
+ loading: isDecrypting
147754
+ }
147755
+ )
147756
+ ]
147757
+ }
147758
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
147512
147759
  StreamViewer,
147513
147760
  {
147514
147761
  streamId: selectedStreamId,
147515
147762
  chunks: streamChunks,
147516
147763
  isLive: streamIsLive,
147517
- error: streamError
147764
+ error: (streamError == null ? void 0 : streamError.includes("encrypted")) ? null : streamError
147518
147765
  }
147519
147766
  ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
147520
147767
  "div",
@@ -147718,7 +147965,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
147718
147965
  __proto__: null,
147719
147966
  loader
147720
147967
  }, Symbol.toStringTag, { value: "Module" }));
147721
- const serverManifest = { "entry": { "module": "/assets/entry.client-BjpmGyLC.js", "imports": ["/assets/index-DklpUtP3.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/root-DQpGl57T.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/mermaid-3ZIDBTTL-BPJg8vAL.js"], "css": ["/assets/root-BMRA92qM.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-MMGoJh7w.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/use-workflow-graph-B8LKXrpA.js", "/assets/mermaid-3ZIDBTTL-BPJg8vAL.js"], "css": ["/assets/use-workflow-graph-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-DZDSfYol.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/use-workflow-graph-B8LKXrpA.js", "/assets/mermaid-3ZIDBTTL-BPJg8vAL.js", "/assets/encryption-8OvC6eoJ.js"], "css": ["/assets/use-workflow-graph-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-678c3cbf.js", "version": "678c3cbf", "sri": void 0 };
147968
+ const serverManifest = { "entry": { "module": "/assets/entry.client-BjpmGyLC.js", "imports": ["/assets/index-DklpUtP3.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/root-EzkmXyJV.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/mermaid-3ZIDBTTL-BMFG0Hnn.js"], "css": ["/assets/root-SL7uvdv2.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-C-j1J39E.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/use-workflow-graph-DXipnqlR.js", "/assets/mermaid-3ZIDBTTL-BMFG0Hnn.js"], "css": ["/assets/use-workflow-graph-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-C0ZpSKc-.js", "imports": ["/assets/index-DklpUtP3.js", "/assets/use-workflow-graph-DXipnqlR.js", "/assets/mermaid-3ZIDBTTL-BMFG0Hnn.js", "/assets/encryption-8OvC6eoJ.js"], "css": ["/assets/use-workflow-graph-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-41615f41.js", "version": "41615f41", "sri": void 0 };
147722
147969
  const assetsBuildDirectory = "build/client";
147723
147970
  const basename = "/";
147724
147971
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };