@logixjs/sandbox 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/LICENSE +201 -0
  2. package/package.json +3 -1
  3. package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
  4. package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
  5. package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
  6. package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
  7. package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
  8. package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
  9. package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
  10. package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
  11. package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
  12. package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
  13. package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
  14. package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
  15. package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
  16. package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
  17. package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
  18. package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
  19. package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
  20. package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
  21. package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
  22. package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
  23. package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
  24. package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
  25. package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
  26. package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
  27. package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
  28. package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
  29. package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
  30. package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
  31. package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
  32. package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
  33. package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
  34. package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
  35. package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
  36. package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
  37. package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
  38. package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
  39. package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
  40. package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
  41. package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
  42. package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
  43. package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
  44. package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
  45. package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
  46. package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
  47. package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
  48. package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
  49. package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
  50. package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
  51. package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
  52. package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
  53. package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
  54. package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
  55. package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
  56. package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
  57. package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
  58. package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
  59. package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
  60. package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
  61. package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
  62. package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
  63. package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
  64. package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
  65. package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
  66. package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
  67. package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
  68. package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
  69. package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
  70. package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
  71. package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
  72. package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
  73. package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
  74. package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
  75. package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
  76. package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
  77. package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
  78. package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
  79. package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
  80. package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
  81. package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
  82. package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
  83. package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
  84. package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
  85. package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
  86. package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
  87. package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
  88. package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
  89. package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
  90. package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
  91. package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
  92. package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
  93. package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
  94. package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
  95. package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
  96. package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
  97. package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
  98. package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
  99. package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
  100. package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
  101. package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
  102. package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
  103. package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
  104. package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
  105. package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
  106. package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
  107. package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
  108. package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
  109. package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
  110. package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
  111. package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
  112. package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
  113. package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
  114. package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
  115. package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
  116. package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
  117. package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
  118. package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
  119. package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
  120. package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
  121. package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
  122. package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
  123. package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
  124. package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
  125. package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
  126. package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
  127. package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
  128. package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
  129. package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
  130. package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
  131. package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
  132. package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
  133. package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
  134. package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
  135. package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
  136. package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
  137. package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
  138. package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
  139. package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
  140. package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
  141. package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
  142. package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
  143. package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
  144. package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
  145. package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
  146. package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
  147. package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
  148. package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
  149. package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
  150. package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
  151. package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
  152. package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
  153. package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
  154. package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
  155. package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
  156. package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
  157. package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
  158. package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
  159. package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
  160. package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
  161. package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
  162. package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
  163. package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
  164. package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
  165. package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
  166. package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
  167. package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
  168. package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
  169. package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
  170. package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
  171. package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
  172. package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
  173. package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
  174. package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
  175. package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
  176. package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
  177. package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
  178. package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
  179. package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
  180. package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
  181. package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
  182. package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
  183. package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
  184. package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
  185. package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
  186. package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
  187. package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
  188. package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
  189. package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
  190. package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
  191. package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
  192. package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
  193. package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
  194. package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
  195. package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
  196. package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
  197. package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
  198. package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
  199. package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
  200. package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
  201. package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
  202. package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
  203. package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
  204. package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
  205. package/public/sandbox/logix-core/Bound.js +14 -14
  206. package/public/sandbox/logix-core/Debug.js +12 -10
  207. package/public/sandbox/logix-core/EffectOp.js +3 -4
  208. package/public/sandbox/logix-core/Env.js +5 -2
  209. package/public/sandbox/logix-core/ExternalStore.js +239 -0
  210. package/public/sandbox/logix-core/Flow.js +7 -8
  211. package/public/sandbox/logix-core/Kernel.js +7 -4
  212. package/public/sandbox/logix-core/Link.js +33 -25
  213. package/public/sandbox/logix-core/Middleware.js +13 -11
  214. package/public/sandbox/logix-core/Module.js +93 -30
  215. package/public/sandbox/logix-core/ModuleTag.js +28 -25
  216. package/public/sandbox/logix-core/Observability.js +21 -19
  217. package/public/sandbox/logix-core/Process.js +27 -22
  218. package/public/sandbox/logix-core/ReadQuery.js +7 -11
  219. package/public/sandbox/logix-core/Reflection.js +173 -53
  220. package/public/sandbox/logix-core/Resource.js +6 -3
  221. package/public/sandbox/logix-core/Root.js +7 -3
  222. package/public/sandbox/logix-core/Runtime.js +54 -40
  223. package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
  224. package/public/sandbox/logix-core/StateTrait.js +17 -14
  225. package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
  226. package/public/sandbox/logix-core/Workflow.js +332 -0
  227. package/public/sandbox/logix-core.js +11133 -6622
  228. package/public/sandbox/logix-core.manifest.json +4 -2
  229. package/public/sandbox/worker.js +3 -3
  230. package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
  231. package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
  232. package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
  233. package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
  234. package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
  235. package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
  236. package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
  237. package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
  238. package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
  239. package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
  240. package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
  241. package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
  242. package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
  243. package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
  244. package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
  245. package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
  246. package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
  247. package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
  248. package/public/sandbox/chunks/chunk-ZUBABAAO.js +0 -86
@@ -0,0 +1,103 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ OBSERVABILITY_PROTOCOL_VERSION,
5
+ exportEvidencePackage
6
+ } from "./chunk-Z5L7EZXS.js";
7
+
8
+ // ../logix-core/src/internal/observability/runSession.ts
9
+ import { Context, Layer } from "../effect.js";
10
+ var RunSessionTagImpl = class extends Context.Tag(
11
+ "@logix/core/RunSession"
12
+ )() {
13
+ };
14
+ var RunSessionTag = RunSessionTagImpl;
15
+ var NEXT_RUN_SEQ_KEY = /* @__PURE__ */ Symbol.for("@logix/core/runSession/nextRunSeq");
16
+ var fallbackNextRunSeq = 0;
17
+ var nextRunSeq = () => {
18
+ try {
19
+ const g = globalThis;
20
+ const prev = typeof g[NEXT_RUN_SEQ_KEY] === "number" ? g[NEXT_RUN_SEQ_KEY] : 0;
21
+ const next = prev + 1;
22
+ g[NEXT_RUN_SEQ_KEY] = next;
23
+ return next;
24
+ } catch {
25
+ fallbackNextRunSeq += 1;
26
+ return fallbackNextRunSeq;
27
+ }
28
+ };
29
+ var makeRunId = (startedAt) => `run-${startedAt}.${nextRunSeq()}`;
30
+ var makeRunSessionLocalState = () => {
31
+ const onceKeys = /* @__PURE__ */ new Set();
32
+ const seqByNamespace = /* @__PURE__ */ new Map();
33
+ return {
34
+ once: (key) => {
35
+ if (onceKeys.has(key)) return false;
36
+ onceKeys.add(key);
37
+ return true;
38
+ },
39
+ nextSeq: (namespace, key) => {
40
+ const byKey = seqByNamespace.get(namespace) ?? /* @__PURE__ */ new Map();
41
+ if (!seqByNamespace.has(namespace)) seqByNamespace.set(namespace, byKey);
42
+ const prev = byKey.get(key) ?? 0;
43
+ const next = prev + 1;
44
+ byKey.set(key, next);
45
+ return next;
46
+ },
47
+ clear: () => {
48
+ onceKeys.clear();
49
+ seqByNamespace.clear();
50
+ }
51
+ };
52
+ };
53
+ var makeRunSession = (options) => {
54
+ const startedAt = options?.startedAt ?? Date.now();
55
+ return {
56
+ runId: options?.runId ?? makeRunId(startedAt),
57
+ source: options?.source ?? { host: "unknown" },
58
+ startedAt,
59
+ local: options?.local ?? makeRunSessionLocalState()
60
+ };
61
+ };
62
+ var makeEvidenceSink = (session) => {
63
+ const events = [];
64
+ let nextSeq = 1;
65
+ return {
66
+ record: (type, payload, options) => {
67
+ events.push({
68
+ protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,
69
+ runId: session.runId,
70
+ seq: nextSeq++,
71
+ timestamp: options?.timestamp ?? Date.now(),
72
+ type,
73
+ payload
74
+ });
75
+ },
76
+ export: (options) => {
77
+ const protocolVersion = options?.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION;
78
+ const maxEvents = options?.maxEvents;
79
+ const selected = typeof maxEvents === "number" && Number.isFinite(maxEvents) && maxEvents > 0 ? events.slice(Math.max(0, events.length - Math.floor(maxEvents))) : events.slice();
80
+ return exportEvidencePackage({
81
+ protocolVersion,
82
+ runId: session.runId,
83
+ source: session.source,
84
+ createdAt: options?.createdAt,
85
+ events: selected,
86
+ summary: options?.summary
87
+ });
88
+ },
89
+ clear: () => {
90
+ events.length = 0;
91
+ nextSeq = 1;
92
+ }
93
+ };
94
+ };
95
+ var runSessionLayer = (session) => Layer.succeed(RunSessionTag, session ?? makeRunSession());
96
+
97
+ export {
98
+ RunSessionTag,
99
+ makeRunSession,
100
+ makeEvidenceSink,
101
+ runSessionLayer
102
+ };
103
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9ydW5TZXNzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBDb250ZXh0LCBMYXllciB9IGZyb20gXCJlZmZlY3RcIlxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tIFwiLi9qc29uVmFsdWUuanNcIlxuaW1wb3J0IHR5cGUgeyBFdmlkZW5jZVBhY2thZ2UsIEV2aWRlbmNlUGFja2FnZVNvdXJjZSwgT2JzZXJ2YXRpb25FbnZlbG9wZSB9IGZyb20gXCIuL2V2aWRlbmNlLmpzXCJcbmltcG9ydCB7IGV4cG9ydEV2aWRlbmNlUGFja2FnZSwgT0JTRVJWQUJJTElUWV9QUk9UT0NPTF9WRVJTSU9OIH0gZnJvbSBcIi4vZXZpZGVuY2UuanNcIlxuXG5leHBvcnQgdHlwZSBSdW5JZCA9IHN0cmluZ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNlc3Npb25Mb2NhbFN0YXRlIHtcbiAgLyoqXG4gICAqIG9uY2VcdUZGMUFcdTc1MjhcdTRFOEVcdTIwMUNcdTUzRUFcdTUzRDFcdTRFMDBcdTZCMjFcdTIwMURcdTc2ODRcdTUzQkJcdTkxQ0RcdTk1MkVcdTk2QzZcdTU0MDhcdUZGMDhcdTVGQzVcdTk4N0JcdTYzMDlcdTRGMUFcdThCRERcdTk2OTRcdTc5QkJcdUZGMENcdTkwN0ZcdTUxNERcdThERThcdTRGMUFcdThCRERcdTZDNjFcdTY3RDNcdUZGMDlcdTMwMDJcbiAgICogXHU4RkQ0XHU1NkRFIHRydWUgXHU4ODY4XHU3OTNBXHU5OTk2XHU2QjIxXHU1MUZBXHU3M0IwXHVGRjBDZmFsc2UgXHU4ODY4XHU3OTNBXHU1REYyXHU1MUZBXHU3M0IwXHU4RkM3XHUzMDAyXG4gICAqL1xuICByZWFkb25seSBvbmNlOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW5cblxuICAvKipcbiAgICogc2VxXHVGRjFBXHU3NTI4XHU0RThFXHU2MzA5IGtleSBcdTUyMDZcdTkxNERcdTUzNTVcdThDMDNcdTVFOEZcdTUzRjdcdUZGMDhcdTRGOEJcdTU5ODIgb3BTZXEvZXZlbnRTZXEgXHU3QjQ5XHVGRjA5XHVGRjBDXHU1RkM1XHU5ODdCXHU2MzA5XHU0RjFBXHU4QkREXHU5Njk0XHU3OUJCXHUzMDAyXG4gICAqL1xuICByZWFkb25seSBuZXh0U2VxOiAobmFtZXNwYWNlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiBudW1iZXJcblxuICAvKiogXHU0RUM1XHU3NTI4XHU0RThFXHU2RDRCXHU4QkQ1L1x1NTkwRFx1NEY0RFx1RkYxQVx1NkUwNVx1N0E3QVx1NjcyQ1x1NEYxQVx1OEJERFx1NzY4NFx1NjcyQ1x1NTczMFx1NzJCNlx1NjAwMVx1MzAwMiAqL1xuICByZWFkb25seSBjbGVhcjogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNlc3Npb24ge1xuICByZWFkb25seSBydW5JZDogUnVuSWRcbiAgcmVhZG9ubHkgc291cmNlOiBFdmlkZW5jZVBhY2thZ2VTb3VyY2VcbiAgcmVhZG9ubHkgc3RhcnRlZEF0OiBudW1iZXJcbiAgcmVhZG9ubHkgbG9jYWw6IFJ1blNlc3Npb25Mb2NhbFN0YXRlXG59XG5cbmNsYXNzIFJ1blNlc3Npb25UYWdJbXBsIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGxvZ2l4L2NvcmUvUnVuU2Vzc2lvblwiLFxuKTxSdW5TZXNzaW9uVGFnSW1wbCwgUnVuU2Vzc2lvbj4oKSB7fVxuXG5leHBvcnQgY29uc3QgUnVuU2Vzc2lvblRhZyA9IFJ1blNlc3Npb25UYWdJbXBsXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZpZGVuY2VTaW5rIHtcbiAgcmVhZG9ubHkgcmVjb3JkOiAodHlwZTogc3RyaW5nLCBwYXlsb2FkOiBKc29uVmFsdWUsIG9wdGlvbnM/OiB7IHJlYWRvbmx5IHRpbWVzdGFtcD86IG51bWJlciB9KSA9PiB2b2lkXG4gIHJlYWRvbmx5IGV4cG9ydDogKG9wdGlvbnM/OiB7XG4gICAgcmVhZG9ubHkgcHJvdG9jb2xWZXJzaW9uPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY3JlYXRlZEF0PzogbnVtYmVyXG4gICAgcmVhZG9ubHkgc3VtbWFyeT86IEpzb25WYWx1ZVxuICAgIHJlYWRvbmx5IG1heEV2ZW50cz86IG51bWJlclxuICB9KSA9PiBFdmlkZW5jZVBhY2thZ2VcbiAgcmVhZG9ubHkgY2xlYXI6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgTkVYVF9SVU5fU0VRX0tFWSA9IFN5bWJvbC5mb3IoXCJAbG9naXgvY29yZS9ydW5TZXNzaW9uL25leHRSdW5TZXFcIilcbmxldCBmYWxsYmFja05leHRSdW5TZXEgPSAwXG5cbmNvbnN0IG5leHRSdW5TZXEgPSAoKTogbnVtYmVyID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGc6IGFueSA9IGdsb2JhbFRoaXMgYXMgYW55XG4gICAgY29uc3QgcHJldiA9IHR5cGVvZiBnW05FWFRfUlVOX1NFUV9LRVldID09PSBcIm51bWJlclwiID8gKGdbTkVYVF9SVU5fU0VRX0tFWV0gYXMgbnVtYmVyKSA6IDBcbiAgICBjb25zdCBuZXh0ID0gcHJldiArIDFcbiAgICBnW05FWFRfUlVOX1NFUV9LRVldID0gbmV4dFxuICAgIHJldHVybiBuZXh0XG4gIH0gY2F0Y2gge1xuICAgIGZhbGxiYWNrTmV4dFJ1blNlcSArPSAxXG4gICAgcmV0dXJuIGZhbGxiYWNrTmV4dFJ1blNlcVxuICB9XG59XG5cbmNvbnN0IG1ha2VSdW5JZCA9IChzdGFydGVkQXQ6IG51bWJlcik6IFJ1bklkID0+IGBydW4tJHtzdGFydGVkQXR9LiR7bmV4dFJ1blNlcSgpfWBcblxuZXhwb3J0IGNvbnN0IG1ha2VSdW5TZXNzaW9uTG9jYWxTdGF0ZSA9ICgpOiBSdW5TZXNzaW9uTG9jYWxTdGF0ZSA9PiB7XG4gIGNvbnN0IG9uY2VLZXlzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3Qgc2VxQnlOYW1lc3BhY2UgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgbnVtYmVyPj4oKVxuXG4gIHJldHVybiB7XG4gICAgb25jZTogKGtleSkgPT4ge1xuICAgICAgaWYgKG9uY2VLZXlzLmhhcyhrZXkpKSByZXR1cm4gZmFsc2VcbiAgICAgIG9uY2VLZXlzLmFkZChrZXkpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gICAgbmV4dFNlcTogKG5hbWVzcGFjZSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBieUtleSA9IHNlcUJ5TmFtZXNwYWNlLmdldChuYW1lc3BhY2UpID8/IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KClcbiAgICAgIGlmICghc2VxQnlOYW1lc3BhY2UuaGFzKG5hbWVzcGFjZSkpIHNlcUJ5TmFtZXNwYWNlLnNldChuYW1lc3BhY2UsIGJ5S2V5KVxuICAgICAgY29uc3QgcHJldiA9IGJ5S2V5LmdldChrZXkpID8/IDBcbiAgICAgIGNvbnN0IG5leHQgPSBwcmV2ICsgMVxuICAgICAgYnlLZXkuc2V0KGtleSwgbmV4dClcbiAgICAgIHJldHVybiBuZXh0XG4gICAgfSxcbiAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgb25jZUtleXMuY2xlYXIoKVxuICAgICAgc2VxQnlOYW1lc3BhY2UuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1ha2VSdW5TZXNzaW9uID0gKG9wdGlvbnM/OiB7XG4gIHJlYWRvbmx5IHJ1bklkPzogUnVuSWRcbiAgcmVhZG9ubHkgc291cmNlPzogRXZpZGVuY2VQYWNrYWdlU291cmNlXG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdD86IG51bWJlclxuICByZWFkb25seSBsb2NhbD86IFJ1blNlc3Npb25Mb2NhbFN0YXRlXG59KTogUnVuU2Vzc2lvbiA9PiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG9wdGlvbnM/LnN0YXJ0ZWRBdCA/PyBEYXRlLm5vdygpXG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IG9wdGlvbnM/LnJ1bklkID8/IG1ha2VSdW5JZChzdGFydGVkQXQpLFxuICAgIHNvdXJjZTogb3B0aW9ucz8uc291cmNlID8/IHsgaG9zdDogXCJ1bmtub3duXCIgfSxcbiAgICBzdGFydGVkQXQsXG4gICAgbG9jYWw6IG9wdGlvbnM/LmxvY2FsID8/IG1ha2VSdW5TZXNzaW9uTG9jYWxTdGF0ZSgpLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlRXZpZGVuY2VTaW5rID0gKHNlc3Npb246IFJ1blNlc3Npb24pOiBFdmlkZW5jZVNpbmsgPT4ge1xuICBjb25zdCBldmVudHM6IE9ic2VydmF0aW9uRW52ZWxvcGVbXSA9IFtdXG4gIGxldCBuZXh0U2VxID0gMVxuXG4gIHJldHVybiB7XG4gICAgcmVjb3JkOiAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykgPT4ge1xuICAgICAgZXZlbnRzLnB1c2goe1xuICAgICAgICBwcm90b2NvbFZlcnNpb246IE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgICAgcnVuSWQ6IHNlc3Npb24ucnVuSWQsXG4gICAgICAgIHNlcTogbmV4dFNlcSsrLFxuICAgICAgICB0aW1lc3RhbXA6IG9wdGlvbnM/LnRpbWVzdGFtcCA/PyBEYXRlLm5vdygpLFxuICAgICAgICB0eXBlLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSlcbiAgICB9LFxuICAgIGV4cG9ydDogKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHByb3RvY29sVmVyc2lvbiA9IG9wdGlvbnM/LnByb3RvY29sVmVyc2lvbiA/PyBPQlNFUlZBQklMSVRZX1BST1RPQ09MX1ZFUlNJT05cbiAgICAgIGNvbnN0IG1heEV2ZW50cyA9IG9wdGlvbnM/Lm1heEV2ZW50c1xuXG4gICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgIHR5cGVvZiBtYXhFdmVudHMgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1heEV2ZW50cykgJiYgbWF4RXZlbnRzID4gMFxuICAgICAgICAgID8gZXZlbnRzLnNsaWNlKE1hdGgubWF4KDAsIGV2ZW50cy5sZW5ndGggLSBNYXRoLmZsb29yKG1heEV2ZW50cykpKVxuICAgICAgICAgIDogZXZlbnRzLnNsaWNlKClcblxuICAgICAgcmV0dXJuIGV4cG9ydEV2aWRlbmNlUGFja2FnZSh7XG4gICAgICAgIHByb3RvY29sVmVyc2lvbixcbiAgICAgICAgcnVuSWQ6IHNlc3Npb24ucnVuSWQsXG4gICAgICAgIHNvdXJjZTogc2Vzc2lvbi5zb3VyY2UsXG4gICAgICAgIGNyZWF0ZWRBdDogb3B0aW9ucz8uY3JlYXRlZEF0LFxuICAgICAgICBldmVudHM6IHNlbGVjdGVkLFxuICAgICAgICBzdW1tYXJ5OiBvcHRpb25zPy5zdW1tYXJ5LFxuICAgICAgfSlcbiAgICB9LFxuICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICBldmVudHMubGVuZ3RoID0gMFxuICAgICAgbmV4dFNlcSA9IDFcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBydW5TZXNzaW9uTGF5ZXIgPSAoXG4gIHNlc3Npb24/OiBSdW5TZXNzaW9uLFxuKTogTGF5ZXIuTGF5ZXI8UnVuU2Vzc2lvblRhZ0ltcGwsIG5ldmVyLCBuZXZlcj4gPT5cbiAgTGF5ZXIuc3VjY2VlZChSdW5TZXNzaW9uVGFnLCBzZXNzaW9uID8/IG1ha2VSdW5TZXNzaW9uKCkpIGFzIExheWVyLkxheWVyPFxuICAgIFJ1blNlc3Npb25UYWdJbXBsLFxuICAgIG5ldmVyLFxuICAgIG5ldmVyXG4gID5cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBQUEsU0FBUyxTQUFTLGFBQWE7QUE4Qi9CLElBQU0sb0JBQU4sY0FBZ0MsUUFBUTtBQUFBLEVBQ3RDO0FBQ0YsRUFBaUMsRUFBRTtBQUFDO0FBRTdCLElBQU0sZ0JBQWdCO0FBYTdCLElBQU0sbUJBQW1CLHVCQUFPLElBQUksbUNBQW1DO0FBQ3ZFLElBQUkscUJBQXFCO0FBRXpCLElBQU0sYUFBYSxNQUFjO0FBQy9CLE1BQUk7QUFFRixVQUFNLElBQVM7QUFDZixVQUFNLE9BQU8sT0FBTyxFQUFFLGdCQUFnQixNQUFNLFdBQVksRUFBRSxnQkFBZ0IsSUFBZTtBQUN6RixVQUFNLE9BQU8sT0FBTztBQUNwQixNQUFFLGdCQUFnQixJQUFJO0FBQ3RCLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTiwwQkFBc0I7QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLElBQU0sWUFBWSxDQUFDLGNBQTZCLE9BQU8sU0FBUyxJQUFJLFdBQVcsQ0FBQztBQUV6RSxJQUFNLDJCQUEyQixNQUE0QjtBQUNsRSxRQUFNLFdBQVcsb0JBQUksSUFBWTtBQUNqQyxRQUFNLGlCQUFpQixvQkFBSSxJQUFpQztBQUU1RCxTQUFPO0FBQUEsSUFDTCxNQUFNLENBQUMsUUFBUTtBQUNiLFVBQUksU0FBUyxJQUFJLEdBQUcsRUFBRyxRQUFPO0FBQzlCLGVBQVMsSUFBSSxHQUFHO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTLENBQUMsV0FBVyxRQUFRO0FBQzNCLFlBQU0sUUFBUSxlQUFlLElBQUksU0FBUyxLQUFLLG9CQUFJLElBQW9CO0FBQ3ZFLFVBQUksQ0FBQyxlQUFlLElBQUksU0FBUyxFQUFHLGdCQUFlLElBQUksV0FBVyxLQUFLO0FBQ3ZFLFlBQU0sT0FBTyxNQUFNLElBQUksR0FBRyxLQUFLO0FBQy9CLFlBQU0sT0FBTyxPQUFPO0FBQ3BCLFlBQU0sSUFBSSxLQUFLLElBQUk7QUFDbkIsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLE9BQU8sTUFBTTtBQUNYLGVBQVMsTUFBTTtBQUNmLHFCQUFlLE1BQU07QUFBQSxJQUN2QjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLElBQU0saUJBQWlCLENBQUMsWUFLYjtBQUNoQixRQUFNLFlBQVksU0FBUyxhQUFhLEtBQUssSUFBSTtBQUNqRCxTQUFPO0FBQUEsSUFDTCxPQUFPLFNBQVMsU0FBUyxVQUFVLFNBQVM7QUFBQSxJQUM1QyxRQUFRLFNBQVMsVUFBVSxFQUFFLE1BQU0sVUFBVTtBQUFBLElBQzdDO0FBQUEsSUFDQSxPQUFPLFNBQVMsU0FBUyx5QkFBeUI7QUFBQSxFQUNwRDtBQUNGO0FBRU8sSUFBTSxtQkFBbUIsQ0FBQyxZQUFzQztBQUNyRSxRQUFNLFNBQWdDLENBQUM7QUFDdkMsTUFBSSxVQUFVO0FBRWQsU0FBTztBQUFBLElBQ0wsUUFBUSxDQUFDLE1BQU0sU0FBUyxZQUFZO0FBQ2xDLGFBQU8sS0FBSztBQUFBLFFBQ1YsaUJBQWlCO0FBQUEsUUFDakIsT0FBTyxRQUFRO0FBQUEsUUFDZixLQUFLO0FBQUEsUUFDTCxXQUFXLFNBQVMsYUFBYSxLQUFLLElBQUk7QUFBQSxRQUMxQztBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsSUFDQSxRQUFRLENBQUMsWUFBWTtBQUNuQixZQUFNLGtCQUFrQixTQUFTLG1CQUFtQjtBQUNwRCxZQUFNLFlBQVksU0FBUztBQUUzQixZQUFNLFdBQ0osT0FBTyxjQUFjLFlBQVksT0FBTyxTQUFTLFNBQVMsS0FBSyxZQUFZLElBQ3ZFLE9BQU8sTUFBTSxLQUFLLElBQUksR0FBRyxPQUFPLFNBQVMsS0FBSyxNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQy9ELE9BQU8sTUFBTTtBQUVuQixhQUFPLHNCQUFzQjtBQUFBLFFBQzNCO0FBQUEsUUFDQSxPQUFPLFFBQVE7QUFBQSxRQUNmLFFBQVEsUUFBUTtBQUFBLFFBQ2hCLFdBQVcsU0FBUztBQUFBLFFBQ3BCLFFBQVE7QUFBQSxRQUNSLFNBQVMsU0FBUztBQUFBLE1BQ3BCLENBQUM7QUFBQSxJQUNIO0FBQUEsSUFDQSxPQUFPLE1BQU07QUFDWCxhQUFPLFNBQVM7QUFDaEIsZ0JBQVU7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUNGO0FBRU8sSUFBTSxrQkFBa0IsQ0FDN0IsWUFFQSxNQUFNLFFBQVEsZUFBZSxXQUFXLGVBQWUsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,203 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+
4
+ // ../logix-core/src/internal/observability/jsonValue.ts
5
+ var isJsonValue = (input) => {
6
+ const seen = /* @__PURE__ */ new WeakSet();
7
+ const loop = (value, depth) => {
8
+ if (depth > 64) return false;
9
+ if (value === null) return true;
10
+ switch (typeof value) {
11
+ case "string":
12
+ case "boolean":
13
+ return true;
14
+ case "number":
15
+ return Number.isFinite(value);
16
+ case "object": {
17
+ if (Array.isArray(value)) {
18
+ if (seen.has(value)) return false;
19
+ seen.add(value);
20
+ for (const item of value) {
21
+ if (!loop(item, depth + 1)) return false;
22
+ }
23
+ return true;
24
+ }
25
+ if (!isPlainRecord(value)) return false;
26
+ if (seen.has(value)) return false;
27
+ seen.add(value);
28
+ for (const v of Object.values(value)) {
29
+ if (!loop(v, depth + 1)) return false;
30
+ }
31
+ return true;
32
+ }
33
+ default:
34
+ return false;
35
+ }
36
+ };
37
+ return loop(input, 0);
38
+ };
39
+ var defaultOptions = {
40
+ maxDepth: 6,
41
+ maxObjectKeys: 32,
42
+ maxArrayLength: 32,
43
+ maxStringLength: 256,
44
+ maxJsonBytes: 4 * 1024,
45
+ oversizedPreviewBytes: 256
46
+ };
47
+ var truncateString = (value, maxLen, stats) => {
48
+ if (value.length <= maxLen) return value;
49
+ stats.oversized += 1;
50
+ return value.slice(0, maxLen);
51
+ };
52
+ var mergeDowngrade = (current, next) => {
53
+ if (!current) return next;
54
+ if (current === "non_serializable" || next === "non_serializable") return "non_serializable";
55
+ if (current === "oversized" || next === "oversized") return "oversized";
56
+ return "unknown";
57
+ };
58
+ function isPlainRecord(value) {
59
+ if (typeof value !== "object" || value === null) return false;
60
+ const proto = Object.getPrototypeOf(value);
61
+ return proto === Object.prototype || proto === null;
62
+ }
63
+ var asNumber = (value, stats) => {
64
+ if (Number.isFinite(value)) return value;
65
+ stats.nonSerializable += 1;
66
+ return String(value);
67
+ };
68
+ var toJsonValueInternal = (input, options, stats, seen, depth) => {
69
+ if (input === null) return null;
70
+ switch (typeof input) {
71
+ case "string":
72
+ return truncateString(input, options.maxStringLength, stats);
73
+ case "number":
74
+ return asNumber(input, stats);
75
+ case "boolean":
76
+ return input;
77
+ case "bigint":
78
+ stats.nonSerializable += 1;
79
+ return truncateString(input.toString(), options.maxStringLength, stats);
80
+ case "symbol":
81
+ stats.nonSerializable += 1;
82
+ return truncateString(input.toString(), options.maxStringLength, stats);
83
+ case "function":
84
+ stats.nonSerializable += 1;
85
+ return "[Function]";
86
+ case "undefined":
87
+ stats.dropped += 1;
88
+ return null;
89
+ }
90
+ if (depth >= options.maxDepth) {
91
+ stats.oversized += 1;
92
+ return "[Truncated]";
93
+ }
94
+ if (input instanceof Date) {
95
+ return input.toISOString();
96
+ }
97
+ if (input instanceof Error) {
98
+ stats.nonSerializable += 1;
99
+ return {
100
+ name: truncateString(input.name, options.maxStringLength, stats),
101
+ message: truncateString(input.message, options.maxStringLength, stats)
102
+ };
103
+ }
104
+ if (typeof input === "object") {
105
+ if (seen.has(input)) {
106
+ stats.nonSerializable += 1;
107
+ return "[Circular]";
108
+ }
109
+ seen.add(input);
110
+ }
111
+ if (Array.isArray(input)) {
112
+ const out2 = [];
113
+ const limit2 = Math.min(input.length, options.maxArrayLength);
114
+ for (let i = 0; i < limit2; i++) {
115
+ out2.push(toJsonValueInternal(input[i], options, stats, seen, depth + 1));
116
+ }
117
+ if (input.length > limit2) {
118
+ stats.oversized += 1;
119
+ out2.push(`[...${input.length - limit2} more]`);
120
+ }
121
+ return out2;
122
+ }
123
+ if (!isPlainRecord(input)) {
124
+ stats.nonSerializable += 1;
125
+ return truncateString(String(input), options.maxStringLength, stats);
126
+ }
127
+ const entries = Object.entries(input);
128
+ const limit = Math.min(entries.length, options.maxObjectKeys);
129
+ const out = {};
130
+ for (let i = 0; i < limit; i++) {
131
+ const [rawKey, rawValue] = entries[i];
132
+ const key = truncateString(rawKey, options.maxStringLength, stats);
133
+ if (rawValue === void 0) {
134
+ stats.dropped += 1;
135
+ continue;
136
+ }
137
+ out[key] = toJsonValueInternal(rawValue, options, stats, seen, depth + 1);
138
+ }
139
+ if (entries.length > limit) {
140
+ stats.oversized += 1;
141
+ out.__truncatedKeys = entries.length - limit;
142
+ }
143
+ return out;
144
+ };
145
+ var projectJsonValue = (input, options) => {
146
+ const resolved = { ...defaultOptions, ...options ?? {} };
147
+ const stats = { dropped: 0, oversized: 0, nonSerializable: 0 };
148
+ const seen = /* @__PURE__ */ new WeakSet();
149
+ let downgrade;
150
+ const value = toJsonValueInternal(input, resolved, stats, seen, 0);
151
+ if (stats.nonSerializable > 0) {
152
+ downgrade = mergeDowngrade(downgrade, "non_serializable");
153
+ }
154
+ if (stats.oversized > 0) {
155
+ downgrade = mergeDowngrade(downgrade, "oversized");
156
+ }
157
+ try {
158
+ const json = JSON.stringify(value);
159
+ if (json.length > resolved.maxJsonBytes) {
160
+ downgrade = mergeDowngrade(downgrade, "oversized");
161
+ const preview = json.slice(0, Math.min(resolved.oversizedPreviewBytes, resolved.maxJsonBytes));
162
+ return {
163
+ value: {
164
+ _tag: "oversized",
165
+ bytes: json.length,
166
+ preview
167
+ },
168
+ stats: {
169
+ dropped: stats.dropped,
170
+ oversized: stats.oversized + 1,
171
+ nonSerializable: stats.nonSerializable
172
+ },
173
+ downgrade
174
+ };
175
+ }
176
+ } catch {
177
+ downgrade = mergeDowngrade(downgrade, "non_serializable");
178
+ return {
179
+ value: "[Unserializable]",
180
+ stats: {
181
+ dropped: stats.dropped,
182
+ oversized: stats.oversized,
183
+ nonSerializable: stats.nonSerializable + 1
184
+ },
185
+ downgrade
186
+ };
187
+ }
188
+ return {
189
+ value,
190
+ stats: {
191
+ dropped: stats.dropped,
192
+ oversized: stats.oversized,
193
+ nonSerializable: stats.nonSerializable
194
+ },
195
+ downgrade
196
+ };
197
+ };
198
+
199
+ export {
200
+ isJsonValue,
201
+ projectJsonValue
202
+ };
203
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9qc29uVmFsdWUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB0eXBlIEpzb25WYWx1ZSA9XG4gIHwgbnVsbFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBSZWFkb25seUFycmF5PEpzb25WYWx1ZT5cbiAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIERvd25ncmFkZVJlYXNvbiA9IFwibm9uX3NlcmlhbGl6YWJsZVwiIHwgXCJvdmVyc2l6ZWRcIiB8IFwidW5rbm93blwiXG5cbmV4cG9ydCBjb25zdCBpc0pzb25WYWx1ZSA9IChpbnB1dDogdW5rbm93bik6IGlucHV0IGlzIEpzb25WYWx1ZSA9PiB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldDxvYmplY3Q+KClcblxuICBjb25zdCBsb29wID0gKHZhbHVlOiB1bmtub3duLCBkZXB0aDogbnVtYmVyKTogdmFsdWUgaXMgSnNvblZhbHVlID0+IHtcbiAgICBpZiAoZGVwdGggPiA2NCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gdHJ1ZVxuXG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpXG4gICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgc2Vlbi5hZGQodmFsdWUpXG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIWxvb3AoaXRlbSwgZGVwdGggKyAxKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzUGxhaW5SZWNvcmQodmFsdWUpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgIHNlZW4uYWRkKHZhbHVlKVxuXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiBPYmplY3QudmFsdWVzKHZhbHVlKSkge1xuICAgICAgICAgIGlmICghbG9vcCh2LCBkZXB0aCArIDEpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9vcChpbnB1dCwgMClcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFsdWVQcm9qZWN0aW9uU3RhdHMge1xuICByZWFkb25seSBkcm9wcGVkOiBudW1iZXJcbiAgcmVhZG9ubHkgb3ZlcnNpemVkOiBudW1iZXJcbiAgcmVhZG9ubHkgbm9uU2VyaWFsaXphYmxlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFsdWVQcm9qZWN0aW9uIHtcbiAgcmVhZG9ubHkgdmFsdWU6IEpzb25WYWx1ZVxuICByZWFkb25seSBzdGF0czogSnNvblZhbHVlUHJvamVjdGlvblN0YXRzXG4gIHJlYWRvbmx5IGRvd25ncmFkZT86IERvd25ncmFkZVJlYXNvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYWx1ZVByb2plY3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWF4RGVwdGg/OiBudW1iZXJcbiAgcmVhZG9ubHkgbWF4T2JqZWN0S2V5cz86IG51bWJlclxuICByZWFkb25seSBtYXhBcnJheUxlbmd0aD86IG51bWJlclxuICByZWFkb25seSBtYXhTdHJpbmdMZW5ndGg/OiBudW1iZXJcbiAgcmVhZG9ubHkgbWF4SnNvbkJ5dGVzPzogbnVtYmVyXG4gIHJlYWRvbmx5IG92ZXJzaXplZFByZXZpZXdCeXRlcz86IG51bWJlclxufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8SnNvblZhbHVlUHJvamVjdE9wdGlvbnM+ID0ge1xuICBtYXhEZXB0aDogNixcbiAgbWF4T2JqZWN0S2V5czogMzIsXG4gIG1heEFycmF5TGVuZ3RoOiAzMixcbiAgbWF4U3RyaW5nTGVuZ3RoOiAyNTYsXG4gIG1heEpzb25CeXRlczogNCAqIDEwMjQsXG4gIG92ZXJzaXplZFByZXZpZXdCeXRlczogMjU2LFxufVxuXG5jb25zdCB0cnVuY2F0ZVN0cmluZyA9ICh2YWx1ZTogc3RyaW5nLCBtYXhMZW46IG51bWJlciwgc3RhdHM6IE11dGFibGVTdGF0cyk6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZS5sZW5ndGggPD0gbWF4TGVuKSByZXR1cm4gdmFsdWVcbiAgc3RhdHMub3ZlcnNpemVkICs9IDFcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIG1heExlbilcbn1cblxudHlwZSBNdXRhYmxlU3RhdHMgPSB7XG4gIGRyb3BwZWQ6IG51bWJlclxuICBvdmVyc2l6ZWQ6IG51bWJlclxuICBub25TZXJpYWxpemFibGU6IG51bWJlclxufVxuXG5jb25zdCBtZXJnZURvd25ncmFkZSA9IChjdXJyZW50OiBEb3duZ3JhZGVSZWFzb24gfCB1bmRlZmluZWQsIG5leHQ6IERvd25ncmFkZVJlYXNvbik6IERvd25ncmFkZVJlYXNvbiA9PiB7XG4gIGlmICghY3VycmVudCkgcmV0dXJuIG5leHRcbiAgaWYgKGN1cnJlbnQgPT09IFwibm9uX3NlcmlhbGl6YWJsZVwiIHx8IG5leHQgPT09IFwibm9uX3NlcmlhbGl6YWJsZVwiKSByZXR1cm4gXCJub25fc2VyaWFsaXphYmxlXCJcbiAgaWYgKGN1cnJlbnQgPT09IFwib3ZlcnNpemVkXCIgfHwgbmV4dCA9PT0gXCJvdmVyc2l6ZWRcIikgcmV0dXJuIFwib3ZlcnNpemVkXCJcbiAgcmV0dXJuIFwidW5rbm93blwiXG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5SZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZVxuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgcmV0dXJuIHByb3RvID09PSBPYmplY3QucHJvdG90eXBlIHx8IHByb3RvID09PSBudWxsXG59XG5cbmNvbnN0IGFzTnVtYmVyID0gKHZhbHVlOiBudW1iZXIsIHN0YXRzOiBNdXRhYmxlU3RhdHMpOiBKc29uVmFsdWUgPT4ge1xuICBpZiAoTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG4gIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gIHJldHVybiBTdHJpbmcodmFsdWUpXG59XG5cbmNvbnN0IHRvSnNvblZhbHVlSW50ZXJuYWwgPSAoXG4gIGlucHV0OiB1bmtub3duLFxuICBvcHRpb25zOiBSZXF1aXJlZDxKc29uVmFsdWVQcm9qZWN0T3B0aW9ucz4sXG4gIHN0YXRzOiBNdXRhYmxlU3RhdHMsXG4gIHNlZW46IFdlYWtTZXQ8b2JqZWN0PixcbiAgZGVwdGg6IG51bWJlcixcbik6IEpzb25WYWx1ZSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICBzd2l0Y2ggKHR5cGVvZiBpbnB1dCkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiB0cnVuY2F0ZVN0cmluZyhpbnB1dCwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBhc051bWJlcihpbnB1dCwgc3RhdHMpXG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgIHJldHVybiBpbnB1dFxuICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gdHJ1bmNhdGVTdHJpbmcoaW5wdXQudG9TdHJpbmcoKSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gdHJ1bmNhdGVTdHJpbmcoaW5wdXQudG9TdHJpbmcoKSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgc3RhdHMubm9uU2VyaWFsaXphYmxlICs9IDFcbiAgICAgIHJldHVybiBcIltGdW5jdGlvbl1cIlxuICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIG9iamVjdFxuICBpZiAoZGVwdGggPj0gb3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgcmV0dXJuIFwiW1RydW5jYXRlZF1cIlxuICB9XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBpbnB1dC50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRydW5jYXRlU3RyaW5nKGlucHV0Lm5hbWUsIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoLCBzdGF0cyksXG4gICAgICBtZXNzYWdlOiB0cnVuY2F0ZVN0cmluZyhpbnB1dC5tZXNzYWdlLCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpLFxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5wdXQgPT09IFwib2JqZWN0XCIpIHtcbiAgICBpZiAoc2Vlbi5oYXMoaW5wdXQpKSB7XG4gICAgICBzdGF0cy5ub25TZXJpYWxpemFibGUgKz0gMVxuICAgICAgcmV0dXJuIFwiW0NpcmN1bGFyXVwiXG4gICAgfVxuICAgIHNlZW4uYWRkKGlucHV0KVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgY29uc3Qgb3V0OiBBcnJheTxKc29uVmFsdWU+ID0gW11cbiAgICBjb25zdCBsaW1pdCA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgb3B0aW9ucy5tYXhBcnJheUxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgIG91dC5wdXNoKHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXRbaV0sIG9wdGlvbnMsIHN0YXRzLCBzZWVuLCBkZXB0aCArIDEpKVxuICAgIH1cbiAgICBpZiAoaW5wdXQubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgICBvdXQucHVzaChgWy4uLiR7aW5wdXQubGVuZ3RoIC0gbGltaXR9IG1vcmVdYClcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgaWYgKCFpc1BsYWluUmVjb3JkKGlucHV0KSkge1xuICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgcmV0dXJuIHRydW5jYXRlU3RyaW5nKFN0cmluZyhpbnB1dCksIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoLCBzdGF0cylcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhpbnB1dClcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihlbnRyaWVzLmxlbmd0aCwgb3B0aW9ucy5tYXhPYmplY3RLZXlzKVxuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gPSB7fVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgIGNvbnN0IFtyYXdLZXksIHJhd1ZhbHVlXSA9IGVudHJpZXNbaV0hXG4gICAgY29uc3Qga2V5ID0gdHJ1bmNhdGVTdHJpbmcocmF3S2V5LCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpXG4gICAgaWYgKHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgb3V0W2tleV0gPSB0b0pzb25WYWx1ZUludGVybmFsKHJhd1ZhbHVlLCBvcHRpb25zLCBzdGF0cywgc2VlbiwgZGVwdGggKyAxKVxuICB9XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID4gbGltaXQpIHtcbiAgICBzdGF0cy5vdmVyc2l6ZWQgKz0gMVxuICAgIG91dC5fX3RydW5jYXRlZEtleXMgPSBlbnRyaWVzLmxlbmd0aCAtIGxpbWl0XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0SnNvblZhbHVlID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSnNvblZhbHVlUHJvamVjdE9wdGlvbnMpOiBKc29uVmFsdWVQcm9qZWN0aW9uID0+IHtcbiAgY29uc3QgcmVzb2x2ZWQ6IFJlcXVpcmVkPEpzb25WYWx1ZVByb2plY3RPcHRpb25zPiA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLihvcHRpb25zID8/IHt9KSB9XG4gIGNvbnN0IHN0YXRzOiBNdXRhYmxlU3RhdHMgPSB7IGRyb3BwZWQ6IDAsIG92ZXJzaXplZDogMCwgbm9uU2VyaWFsaXphYmxlOiAwIH1cbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKVxuXG4gIGxldCBkb3duZ3JhZGU6IERvd25ncmFkZVJlYXNvbiB8IHVuZGVmaW5lZFxuICBjb25zdCB2YWx1ZSA9IHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXQsIHJlc29sdmVkLCBzdGF0cywgc2VlbiwgMClcblxuICBpZiAoc3RhdHMubm9uU2VyaWFsaXphYmxlID4gMCkge1xuICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgXCJub25fc2VyaWFsaXphYmxlXCIpXG4gIH1cbiAgaWYgKHN0YXRzLm92ZXJzaXplZCA+IDApIHtcbiAgICBkb3duZ3JhZGUgPSBtZXJnZURvd25ncmFkZShkb3duZ3JhZGUsIFwib3ZlcnNpemVkXCIpXG4gIH1cblxuICAvLyBIYXJkIGdhdGU6IGVuc3VyZSBKU09OLnN0cmluZ2lmeSBuZXZlciB0aHJvd3MgYW5kIHJlc3BlY3QgdGhlIG1heCBieXRlIGJ1ZGdldC5cbiAgdHJ5IHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgaWYgKGpzb24ubGVuZ3RoID4gcmVzb2x2ZWQubWF4SnNvbkJ5dGVzKSB7XG4gICAgICBkb3duZ3JhZGUgPSBtZXJnZURvd25ncmFkZShkb3duZ3JhZGUsIFwib3ZlcnNpemVkXCIpXG4gICAgICBjb25zdCBwcmV2aWV3ID0ganNvbi5zbGljZSgwLCBNYXRoLm1pbihyZXNvbHZlZC5vdmVyc2l6ZWRQcmV2aWV3Qnl0ZXMsIHJlc29sdmVkLm1heEpzb25CeXRlcykpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIF90YWc6IFwib3ZlcnNpemVkXCIsXG4gICAgICAgICAgYnl0ZXM6IGpzb24ubGVuZ3RoLFxuICAgICAgICAgIHByZXZpZXcsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRzOiB7XG4gICAgICAgICAgZHJvcHBlZDogc3RhdHMuZHJvcHBlZCxcbiAgICAgICAgICBvdmVyc2l6ZWQ6IHN0YXRzLm92ZXJzaXplZCArIDEsXG4gICAgICAgICAgbm9uU2VyaWFsaXphYmxlOiBzdGF0cy5ub25TZXJpYWxpemFibGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRvd25ncmFkZSxcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgXCJub25fc2VyaWFsaXphYmxlXCIpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBcIltVbnNlcmlhbGl6YWJsZV1cIixcbiAgICAgIHN0YXRzOiB7XG4gICAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICAgIG92ZXJzaXplZDogc3RhdHMub3ZlcnNpemVkLFxuICAgICAgICBub25TZXJpYWxpemFibGU6IHN0YXRzLm5vblNlcmlhbGl6YWJsZSArIDEsXG4gICAgICB9LFxuICAgICAgZG93bmdyYWRlLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgc3RhdHM6IHtcbiAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICBvdmVyc2l6ZWQ6IHN0YXRzLm92ZXJzaXplZCxcbiAgICAgIG5vblNlcmlhbGl6YWJsZTogc3RhdHMubm9uU2VyaWFsaXphYmxlLFxuICAgIH0sXG4gICAgZG93bmdyYWRlLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBVU8sSUFBTSxjQUFjLENBQUMsVUFBdUM7QUFDakUsUUFBTSxPQUFPLG9CQUFJLFFBQWdCO0FBRWpDLFFBQU0sT0FBTyxDQUFDLE9BQWdCLFVBQXNDO0FBQ2xFLFFBQUksUUFBUSxHQUFJLFFBQU87QUFDdkIsUUFBSSxVQUFVLEtBQU0sUUFBTztBQUUzQixZQUFRLE9BQU8sT0FBTztBQUFBLE1BQ3BCLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFDSCxlQUFPO0FBQUEsTUFDVCxLQUFLO0FBQ0gsZUFBTyxPQUFPLFNBQVMsS0FBSztBQUFBLE1BQzlCLEtBQUssVUFBVTtBQUNiLFlBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixjQUFJLEtBQUssSUFBSSxLQUFLLEVBQUcsUUFBTztBQUM1QixlQUFLLElBQUksS0FBSztBQUNkLHFCQUFXLFFBQVEsT0FBTztBQUN4QixnQkFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLENBQUMsRUFBRyxRQUFPO0FB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O0FBRUEsU0FBTztBQUNUO0FBRU8sSUFBTSxtQkFBbUIsQ0FBQyxPQUFnQixZQUEyRDtBQUMxRyxRQUFNLFdBQThDLEVBQUUsR0FBRyxnQkFBZ0IsR0FBSSxXQUFXLENBQUMsRUFBRztBQUM1RixRQUFNLFFBQXNCLEVBQUUsU0FBUyxHQUFHLFdBQVcsR0FBRyxpQkFBaUIsRUFBRTtBQUMzRSxRQUFNLE9BQU8sb0JBQUksUUFBZ0I7QUFFakMsTUFBSTtBQUNKLFFBQU0sUUFBUSxvQkFBb0IsT0FBTyxVQUFVLE9BQU8sTUFBTSxDQUFDO0FBRWpFLE1BQUksTUFBTSxrQkFBa0IsR0FBRztBQUM3QixnQkFBWSxlQUFlLFdBQVcsa0JBQWtCO0FBQUEsRUFDMUQ7QUFDQSxNQUFJLE1BQU0sWUFBWSxHQUFHO0FBQ3ZCLGdCQUFZLGVBQWUsV0FBVyxXQUFXO0FBQUEsRUFDbkQ7QUFHQSxNQUFJO0FBQ0YsVUFBTSxPQUFPLEtBQUssVUFBVSxLQUFLO0FBQ2pDLFFBQUksS0FBSyxTQUFTLFNBQVMsY0FBYztBQUN2QyxrQkFBWSxlQUFlLFdBQVcsV0FBVztBQUNqRCxZQUFNLFVBQVUsS0FBSyxNQUFNLEdBQUcsS0FBSyxJQUFJLFNBQVMsdUJBQXVCLFNBQVMsWUFBWSxDQUFDO0FBQzdGLGFBQU87QUFBQSxRQUNMLE9BQU87QUFBQSxVQUNMLE1BQU07QUFBQSxVQUNOLE9BQU8sS0FBSztBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsUUFDQSxPQUFPO0FBQUEsVUFDTCxTQUFTLE1BQU07QUFBQSxVQUNmLFdBQVcsTUFBTSxZQUFZO0FBQUEsVUFDN0IsaUJBQWlCLE1BQU07QUFBQSxRQUN6QjtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsUUFBUTtBQUNOLGdCQUFZLGVBQWUsV0FBVyxrQkFBa0I7QUFDeEQsV0FBTztBQUFBLE1BQ0wsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLFFBQ0wsU0FBUyxNQUFNO0FBQUEsUUFDZixXQUFXLE1BQU07QUFBQSxRQUNqQixpQkFBaUIsTUFBTSxrQkFBa0I7QUFBQSxNQUMzQztBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxTQUFTLE1BQU07QUFBQSxNQUNmLFdBQVcsTUFBTTtBQUFBLE1BQ2pCLGlCQUFpQixNQUFNO0FBQUEsSUFDekI7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogWyJvdXQiLCAibGltaXQiXQp9Cg==