@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,177 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ OBSERVABILITY_PROTOCOL_VERSION,
5
+ exportEvidencePackage
6
+ } from "./chunk-LQL23SWJ.js";
7
+ import {
8
+ composeMiddleware,
9
+ makeOperationRejected,
10
+ runWithMiddleware
11
+ } from "./chunk-S6ZZHV6G.js";
12
+
13
+ // ../logix-core/src/internal/observability/runSession.ts
14
+ import { Context, Layer } from "../effect.js";
15
+ var RunSessionTagImpl = class extends Context.Tag("@logix/core/RunSession")() {
16
+ };
17
+ var RunSessionTag = RunSessionTagImpl;
18
+ var NEXT_RUN_SEQ_KEY = /* @__PURE__ */ Symbol.for("@logix/core/runSession/nextRunSeq");
19
+ var fallbackNextRunSeq = 0;
20
+ var nextRunSeq = () => {
21
+ try {
22
+ const g = globalThis;
23
+ const prev = typeof g[NEXT_RUN_SEQ_KEY] === "number" ? g[NEXT_RUN_SEQ_KEY] : 0;
24
+ const next = prev + 1;
25
+ g[NEXT_RUN_SEQ_KEY] = next;
26
+ return next;
27
+ } catch {
28
+ fallbackNextRunSeq += 1;
29
+ return fallbackNextRunSeq;
30
+ }
31
+ };
32
+ var makeRunId = (startedAt) => `run-${startedAt}.${nextRunSeq()}`;
33
+ var makeRunSessionLocalState = () => {
34
+ const onceKeys = /* @__PURE__ */ new Set();
35
+ const seqByNamespace = /* @__PURE__ */ new Map();
36
+ return {
37
+ once: (key) => {
38
+ if (onceKeys.has(key)) return false;
39
+ onceKeys.add(key);
40
+ return true;
41
+ },
42
+ nextSeq: (namespace, key) => {
43
+ const byKey = seqByNamespace.get(namespace) ?? /* @__PURE__ */ new Map();
44
+ if (!seqByNamespace.has(namespace)) seqByNamespace.set(namespace, byKey);
45
+ const prev = byKey.get(key) ?? 0;
46
+ const next = prev + 1;
47
+ byKey.set(key, next);
48
+ return next;
49
+ },
50
+ clear: () => {
51
+ onceKeys.clear();
52
+ seqByNamespace.clear();
53
+ }
54
+ };
55
+ };
56
+ var makeRunSession = (options) => {
57
+ const startedAt = options?.startedAt ?? Date.now();
58
+ return {
59
+ runId: options?.runId ?? makeRunId(startedAt),
60
+ source: options?.source ?? { host: "unknown" },
61
+ startedAt,
62
+ local: options?.local ?? makeRunSessionLocalState()
63
+ };
64
+ };
65
+ var makeEvidenceSink = (session) => {
66
+ const events = [];
67
+ let nextSeq = 1;
68
+ return {
69
+ record: (type, payload, options) => {
70
+ events.push({
71
+ protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,
72
+ runId: session.runId,
73
+ seq: nextSeq++,
74
+ timestamp: options?.timestamp ?? Date.now(),
75
+ type,
76
+ payload
77
+ });
78
+ },
79
+ export: (options) => {
80
+ const protocolVersion = options?.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION;
81
+ const maxEvents = options?.maxEvents;
82
+ const selected = typeof maxEvents === "number" && Number.isFinite(maxEvents) && maxEvents > 0 ? events.slice(Math.max(0, events.length - Math.floor(maxEvents))) : events.slice();
83
+ return exportEvidencePackage({
84
+ protocolVersion,
85
+ runId: session.runId,
86
+ source: session.source,
87
+ createdAt: options?.createdAt,
88
+ events: selected,
89
+ summary: options?.summary
90
+ });
91
+ },
92
+ clear: () => {
93
+ events.length = 0;
94
+ nextSeq = 1;
95
+ }
96
+ };
97
+ };
98
+ var runSessionLayer = (session) => Layer.succeed(RunSessionTag, session ?? makeRunSession());
99
+
100
+ // ../logix-core/src/internal/effect-op.ts
101
+ import { Effect, Option } from "../effect.js";
102
+ var composeMiddleware2 = composeMiddleware;
103
+ var makeOperationRejected2 = makeOperationRejected;
104
+ var nextGlobalOpSeq = 0;
105
+ var nextOpSeq = () => {
106
+ nextGlobalOpSeq += 1;
107
+ return nextGlobalOpSeq;
108
+ };
109
+ var makeId = (instanceId, opSeq) => instanceId ? `${instanceId}::o${opSeq}` : `o${opSeq}`;
110
+ var make = (params) => ({
111
+ ...params.id ? { id: params.id, meta: params.meta } : (() => {
112
+ const meta = params.meta ?? {};
113
+ const instanceId = meta.instanceId;
114
+ const opSeq = typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq) ? Math.floor(meta.opSeq) : nextOpSeq();
115
+ return {
116
+ id: makeId(instanceId, opSeq),
117
+ meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq }
118
+ };
119
+ })(),
120
+ kind: params.kind,
121
+ name: params.name,
122
+ payload: params.payload,
123
+ effect: params.effect
124
+ });
125
+ var makeInRunSession = (params) => Effect.gen(function* () {
126
+ if (params.id) {
127
+ return {
128
+ id: params.id,
129
+ kind: params.kind,
130
+ name: params.name,
131
+ payload: params.payload,
132
+ meta: params.meta,
133
+ effect: params.effect
134
+ };
135
+ }
136
+ const meta = params.meta ?? {};
137
+ const instanceId = meta.instanceId;
138
+ let opSeq;
139
+ if (typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq)) {
140
+ opSeq = Math.floor(meta.opSeq);
141
+ } else {
142
+ const sessionOpt = yield* Effect.serviceOption(RunSessionTag);
143
+ if (Option.isSome(sessionOpt)) {
144
+ const key = instanceId ?? "global";
145
+ opSeq = sessionOpt.value.local.nextSeq("opSeq", key);
146
+ } else {
147
+ opSeq = nextOpSeq();
148
+ }
149
+ }
150
+ return {
151
+ id: makeId(instanceId, opSeq),
152
+ kind: params.kind,
153
+ name: params.name,
154
+ payload: params.payload,
155
+ meta: meta.opSeq === opSeq ? meta : { ...meta, opSeq },
156
+ effect: params.effect
157
+ };
158
+ });
159
+ var withMeta = (op, meta) => ({
160
+ ...op,
161
+ meta: { ...op.meta ?? {}, ...meta }
162
+ });
163
+ var run = (op, stack) => runWithMiddleware(op, stack);
164
+
165
+ export {
166
+ RunSessionTag,
167
+ makeRunSession,
168
+ makeEvidenceSink,
169
+ runSessionLayer,
170
+ composeMiddleware2 as composeMiddleware,
171
+ makeOperationRejected2 as makeOperationRejected,
172
+ make,
173
+ makeInRunSession,
174
+ withMeta,
175
+ run
176
+ };
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9ydW5TZXNzaW9uLnRzIiwgIi4uLy4uLy4uLy4uL2xvZ2l4LWNvcmUvc3JjL2ludGVybmFsL2VmZmVjdC1vcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGV4dCwgTGF5ZXIgfSBmcm9tICdlZmZlY3QnXG5pbXBvcnQgdHlwZSB7IEpzb25WYWx1ZSB9IGZyb20gJy4vanNvblZhbHVlLmpzJ1xuaW1wb3J0IHR5cGUgeyBFdmlkZW5jZVBhY2thZ2UsIEV2aWRlbmNlUGFja2FnZVNvdXJjZSwgT2JzZXJ2YXRpb25FbnZlbG9wZSB9IGZyb20gJy4vZXZpZGVuY2UuanMnXG5pbXBvcnQgeyBleHBvcnRFdmlkZW5jZVBhY2thZ2UsIE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTiB9IGZyb20gJy4vZXZpZGVuY2UuanMnXG5cbmV4cG9ydCB0eXBlIFJ1bklkID0gc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuU2Vzc2lvbkxvY2FsU3RhdGUge1xuICAvKipcbiAgICogb25jZVx1RkYxQVx1NzUyOFx1NEU4RVx1MjAxQ1x1NTNFQVx1NTNEMVx1NEUwMFx1NkIyMVx1MjAxRFx1NzY4NFx1NTNCQlx1OTFDRFx1OTUyRVx1OTZDNlx1NTQwOFx1RkYwOFx1NUZDNVx1OTg3Qlx1NjMwOVx1NEYxQVx1OEJERFx1OTY5NFx1NzlCQlx1RkYwQ1x1OTA3Rlx1NTE0RFx1OERFOFx1NEYxQVx1OEJERFx1NkM2MVx1NjdEM1x1RkYwOVx1MzAwMlxuICAgKiBcdThGRDRcdTU2REUgdHJ1ZSBcdTg4NjhcdTc5M0FcdTk5OTZcdTZCMjFcdTUxRkFcdTczQjBcdUZGMENmYWxzZSBcdTg4NjhcdTc5M0FcdTVERjJcdTUxRkFcdTczQjBcdThGQzdcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhblxuXG4gIC8qKlxuICAgKiBzZXFcdUZGMUFcdTc1MjhcdTRFOEVcdTYzMDkga2V5IFx1NTIwNlx1OTE0RFx1NTM1NVx1OEMwM1x1NUU4Rlx1NTNGN1x1RkYwOFx1NEY4Qlx1NTk4MiBvcFNlcS9ldmVudFNlcSBcdTdCNDlcdUZGMDlcdUZGMENcdTVGQzVcdTk4N0JcdTYzMDlcdTRGMUFcdThCRERcdTk2OTRcdTc5QkJcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IG5leHRTZXE6IChuYW1lc3BhY2U6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IG51bWJlclxuXG4gIC8qKiBcdTRFQzVcdTc1MjhcdTRFOEVcdTZENEJcdThCRDUvXHU1OTBEXHU0RjREXHVGRjFBXHU2RTA1XHU3QTdBXHU2NzJDXHU0RjFBXHU4QkREXHU3Njg0XHU2NzJDXHU1NzMwXHU3MkI2XHU2MDAxXHUzMDAyICovXG4gIHJlYWRvbmx5IGNsZWFyOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuU2Vzc2lvbiB7XG4gIHJlYWRvbmx5IHJ1bklkOiBSdW5JZFxuICByZWFkb25seSBzb3VyY2U6IEV2aWRlbmNlUGFja2FnZVNvdXJjZVxuICByZWFkb25seSBzdGFydGVkQXQ6IG51bWJlclxuICByZWFkb25seSBsb2NhbDogUnVuU2Vzc2lvbkxvY2FsU3RhdGVcbn1cblxuY2xhc3MgUnVuU2Vzc2lvblRhZ0ltcGwgZXh0ZW5kcyBDb250ZXh0LlRhZygnQGxvZ2l4L2NvcmUvUnVuU2Vzc2lvbicpPFJ1blNlc3Npb25UYWdJbXBsLCBSdW5TZXNzaW9uPigpIHt9XG5cbmV4cG9ydCBjb25zdCBSdW5TZXNzaW9uVGFnID0gUnVuU2Vzc2lvblRhZ0ltcGxcblxuZXhwb3J0IGludGVyZmFjZSBFdmlkZW5jZVNpbmsge1xuICByZWFkb25seSByZWNvcmQ6ICh0eXBlOiBzdHJpbmcsIHBheWxvYWQ6IEpzb25WYWx1ZSwgb3B0aW9ucz86IHsgcmVhZG9ubHkgdGltZXN0YW1wPzogbnVtYmVyIH0pID0+IHZvaWRcbiAgcmVhZG9ubHkgZXhwb3J0OiAob3B0aW9ucz86IHtcbiAgICByZWFkb25seSBwcm90b2NvbFZlcnNpb24/OiBzdHJpbmdcbiAgICByZWFkb25seSBjcmVhdGVkQXQ/OiBudW1iZXJcbiAgICByZWFkb25seSBzdW1tYXJ5PzogSnNvblZhbHVlXG4gICAgcmVhZG9ubHkgbWF4RXZlbnRzPzogbnVtYmVyXG4gIH0pID0+IEV2aWRlbmNlUGFja2FnZVxuICByZWFkb25seSBjbGVhcjogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBORVhUX1JVTl9TRVFfS0VZID0gU3ltYm9sLmZvcignQGxvZ2l4L2NvcmUvcnVuU2Vzc2lvbi9uZXh0UnVuU2VxJylcbmxldCBmYWxsYmFja05leHRSdW5TZXEgPSAwXG5cbmNvbnN0IG5leHRSdW5TZXEgPSAoKTogbnVtYmVyID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGc6IGFueSA9IGdsb2JhbFRoaXMgYXMgYW55XG4gICAgY29uc3QgcHJldiA9IHR5cGVvZiBnW05FWFRfUlVOX1NFUV9LRVldID09PSAnbnVtYmVyJyA/IChnW05FWFRfUlVOX1NFUV9LRVldIGFzIG51bWJlcikgOiAwXG4gICAgY29uc3QgbmV4dCA9IHByZXYgKyAxXG4gICAgZ1tORVhUX1JVTl9TRVFfS0VZXSA9IG5leHRcbiAgICByZXR1cm4gbmV4dFxuICB9IGNhdGNoIHtcbiAgICBmYWxsYmFja05leHRSdW5TZXEgKz0gMVxuICAgIHJldHVybiBmYWxsYmFja05leHRSdW5TZXFcbiAgfVxufVxuXG5jb25zdCBtYWtlUnVuSWQgPSAoc3RhcnRlZEF0OiBudW1iZXIpOiBSdW5JZCA9PiBgcnVuLSR7c3RhcnRlZEF0fS4ke25leHRSdW5TZXEoKX1gXG5cbmV4cG9ydCBjb25zdCBtYWtlUnVuU2Vzc2lvbkxvY2FsU3RhdGUgPSAoKTogUnVuU2Vzc2lvbkxvY2FsU3RhdGUgPT4ge1xuICBjb25zdCBvbmNlS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGNvbnN0IHNlcUJ5TmFtZXNwYWNlID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIG51bWJlcj4+KClcblxuICByZXR1cm4ge1xuICAgIG9uY2U6IChrZXkpID0+IHtcbiAgICAgIGlmIChvbmNlS2V5cy5oYXMoa2V5KSkgcmV0dXJuIGZhbHNlXG4gICAgICBvbmNlS2V5cy5hZGQoa2V5KVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LFxuICAgIG5leHRTZXE6IChuYW1lc3BhY2UsIGtleSkgPT4ge1xuICAgICAgY29uc3QgYnlLZXkgPSBzZXFCeU5hbWVzcGFjZS5nZXQobmFtZXNwYWNlKSA/PyBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpXG4gICAgICBpZiAoIXNlcUJ5TmFtZXNwYWNlLmhhcyhuYW1lc3BhY2UpKSBzZXFCeU5hbWVzcGFjZS5zZXQobmFtZXNwYWNlLCBieUtleSlcbiAgICAgIGNvbnN0IHByZXYgPSBieUtleS5nZXQoa2V5KSA/PyAwXG4gICAgICBjb25zdCBuZXh0ID0gcHJldiArIDFcbiAgICAgIGJ5S2V5LnNldChrZXksIG5leHQpXG4gICAgICByZXR1cm4gbmV4dFxuICAgIH0sXG4gICAgY2xlYXI6ICgpID0+IHtcbiAgICAgIG9uY2VLZXlzLmNsZWFyKClcbiAgICAgIHNlcUJ5TmFtZXNwYWNlLmNsZWFyKClcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlUnVuU2Vzc2lvbiA9IChvcHRpb25zPzoge1xuICByZWFkb25seSBydW5JZD86IFJ1bklkXG4gIHJlYWRvbmx5IHNvdXJjZT86IEV2aWRlbmNlUGFja2FnZVNvdXJjZVxuICByZWFkb25seSBzdGFydGVkQXQ/OiBudW1iZXJcbiAgcmVhZG9ubHkgbG9jYWw/OiBSdW5TZXNzaW9uTG9jYWxTdGF0ZVxufSk6IFJ1blNlc3Npb24gPT4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBvcHRpb25zPy5zdGFydGVkQXQgPz8gRGF0ZS5ub3coKVxuICByZXR1cm4ge1xuICAgIHJ1bklkOiBvcHRpb25zPy5ydW5JZCA/PyBtYWtlUnVuSWQoc3RhcnRlZEF0KSxcbiAgICBzb3VyY2U6IG9wdGlvbnM/LnNvdXJjZSA/PyB7IGhvc3Q6ICd1bmtub3duJyB9LFxuICAgIHN0YXJ0ZWRBdCxcbiAgICBsb2NhbDogb3B0aW9ucz8ubG9jYWwgPz8gbWFrZVJ1blNlc3Npb25Mb2NhbFN0YXRlKCksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1ha2VFdmlkZW5jZVNpbmsgPSAoc2Vzc2lvbjogUnVuU2Vzc2lvbik6IEV2aWRlbmNlU2luayA9PiB7XG4gIGNvbnN0IGV2ZW50czogT2JzZXJ2YXRpb25FbnZlbG9wZVtdID0gW11cbiAgbGV0IG5leHRTZXEgPSAxXG5cbiAgcmV0dXJuIHtcbiAgICByZWNvcmQ6ICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSA9PiB7XG4gICAgICBldmVudHMucHVzaCh7XG4gICAgICAgIHByb3RvY29sVmVyc2lvbjogT0JTRVJWQUJJTElUWV9QUk9UT0NPTF9WRVJTSU9OLFxuICAgICAgICBydW5JZDogc2Vzc2lvbi5ydW5JZCxcbiAgICAgICAgc2VxOiBuZXh0U2VxKyssXG4gICAgICAgIHRpbWVzdGFtcDogb3B0aW9ucz8udGltZXN0YW1wID8/IERhdGUubm93KCksXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9KVxuICAgIH0sXG4gICAgZXhwb3J0OiAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcHJvdG9jb2xWZXJzaW9uID0gb3B0aW9ucz8ucHJvdG9jb2xWZXJzaW9uID8/IE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTlxuICAgICAgY29uc3QgbWF4RXZlbnRzID0gb3B0aW9ucz8ubWF4RXZlbnRzXG5cbiAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgdHlwZW9mIG1heEV2ZW50cyA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKG1heEV2ZW50cykgJiYgbWF4RXZlbnRzID4gMFxuICAgICAgICAgID8gZXZlbnRzLnNsaWNlKE1hdGgubWF4KDAsIGV2ZW50cy5sZW5ndGggLSBNYXRoLmZsb29yKG1heEV2ZW50cykpKVxuICAgICAgICAgIDogZXZlbnRzLnNsaWNlKClcblxuICAgICAgcmV0dXJuIGV4cG9ydEV2aWRlbmNlUGFja2FnZSh7XG4gICAgICAgIHByb3RvY29sVmVyc2lvbixcbiAgICAgICAgcnVuSWQ6IHNlc3Npb24ucnVuSWQsXG4gICAgICAgIHNvdXJjZTogc2Vzc2lvbi5zb3VyY2UsXG4gICAgICAgIGNyZWF0ZWRBdDogb3B0aW9ucz8uY3JlYXRlZEF0LFxuICAgICAgICBldmVudHM6IHNlbGVjdGVkLFxuICAgICAgICBzdW1tYXJ5OiBvcHRpb25zPy5zdW1tYXJ5LFxuICAgICAgfSlcbiAgICB9LFxuICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICBldmVudHMubGVuZ3RoID0gMFxuICAgICAgbmV4dFNlcSA9IDFcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBydW5TZXNzaW9uTGF5ZXIgPSAoc2Vzc2lvbj86IFJ1blNlc3Npb24pOiBMYXllci5MYXllcjxSdW5TZXNzaW9uVGFnSW1wbCwgbmV2ZXIsIG5ldmVyPiA9PlxuICBMYXllci5zdWNjZWVkKFJ1blNlc3Npb25UYWcsIHNlc3Npb24gPz8gbWFrZVJ1blNlc3Npb24oKSkgYXMgTGF5ZXIuTGF5ZXI8UnVuU2Vzc2lvblRhZ0ltcGwsIG5ldmVyLCBuZXZlcj5cbiIsICIvLyBJbnRlcm5hbCBFZmZlY3RPcCBBUEkgKGZvciBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlKS5cbi8vXG4vLyBHb2FsOlxuLy8gLSBJbnRlcm5hbCBtb2R1bGVzIG11c3QgbmV2ZXIgaW1wb3J0IHJvb3QgcHVibGljIHN1Ym1vZHVsZXMgKGUuZy4gYC4uL0VmZmVjdE9wYCkuXG4vLyAtIFRoaXMgZmlsZSBob3N0cyB0aGUgc2hhcmVkIGltcGxlbWVudGF0aW9uOyBwdWJsaWMgYHNyYy9FZmZlY3RPcC50c2AgZGVsZWdhdGVzIHRvIGl0LlxuXG5pbXBvcnQgeyBFZmZlY3QsIE9wdGlvbiB9IGZyb20gJ2VmZmVjdCdcbmltcG9ydCAqIGFzIENvcmUgZnJvbSAnLi9ydW50aW1lL2NvcmUvRWZmZWN0T3BDb3JlLmpzJ1xuaW1wb3J0IHsgUnVuU2Vzc2lvblRhZyB9IGZyb20gJy4vb2JzZXJ2YWJpbGl0eS9ydW5TZXNzaW9uLmpzJ1xuXG5leHBvcnQgdHlwZSBFZmZlY3RPcDxPdXQgPSB1bmtub3duLCBFcnIgPSB1bmtub3duLCBFbnYgPSB1bmtub3duPiA9IENvcmUuRWZmZWN0T3A8T3V0LCBFcnIsIEVudj5cblxuZXhwb3J0IHR5cGUgT3BlcmF0aW9uUG9saWN5ID0gQ29yZS5PcGVyYXRpb25Qb2xpY3lcblxuZXhwb3J0IHR5cGUgT3BlcmF0aW9uUmVqZWN0ZWQgPSBDb3JlLk9wZXJhdGlvblJlamVjdGVkXG5cbmV4cG9ydCB0eXBlIE9wZXJhdGlvbkVycm9yPEU+ID0gQ29yZS5PcGVyYXRpb25FcnJvcjxFPlxuXG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gQ29yZS5NaWRkbGV3YXJlXG5cbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmVTdGFjayA9IENvcmUuTWlkZGxld2FyZVN0YWNrXG5cbmV4cG9ydCBjb25zdCBjb21wb3NlTWlkZGxld2FyZSA9IENvcmUuY29tcG9zZU1pZGRsZXdhcmVcblxuZXhwb3J0IGNvbnN0IG1ha2VPcGVyYXRpb25SZWplY3RlZCA9IENvcmUubWFrZU9wZXJhdGlvblJlamVjdGVkXG5cbi8qKlxuICogXHU3NTFGXHU2MjEwXHU3QTMzXHU1QjlBIGlkXHVGRjBDXHU3NTI4XHU0RThFXHU2ODA3XHU4QkM2XHU0RTAwXHU2QjIxIEVmZmVjdE9wXHUzMDAyXG4gKiAtIFx1OUVEOFx1OEJBNFx1NEY3Rlx1NzUyOFx1NTM1NVx1OEMwM1x1NUU4Rlx1NTNGN1x1RkYwQ1x1OTA3Rlx1NTE0RFx1OTY4Rlx1NjczQS9cdTY1RjZcdTk1RjRcdTVFMjZcdTY3NjVcdTc2ODRcdTRFMERcdTUzRUZcdTkxQ0RcdTY1M0VcdTYwMjdcdUZGMUJcbiAqIC0gXHU4MkU1IG1ldGEuaW5zdGFuY2VJZCBcdTUzRUZcdTc1MjhcdUZGMENcdTUyMTlcdTRGMThcdTUxNDhcdTZEM0VcdTc1MUZcdTRFM0EgYCR7aW5zdGFuY2VJZH06Om8ke29wU2VxfWBcdTMwMDJcbiAqL1xubGV0IG5leHRHbG9iYWxPcFNlcSA9IDBcblxuY29uc3QgbmV4dE9wU2VxID0gKCk6IG51bWJlciA9PiB7XG4gIG5leHRHbG9iYWxPcFNlcSArPSAxXG4gIHJldHVybiBuZXh0R2xvYmFsT3BTZXFcbn1cblxuY29uc3QgbWFrZUlkID0gKGluc3RhbmNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3BTZXE6IG51bWJlcik6IHN0cmluZyA9PlxuICBpbnN0YW5jZUlkID8gYCR7aW5zdGFuY2VJZH06Om8ke29wU2VxfWAgOiBgbyR7b3BTZXF9YFxuXG4vKipcbiAqIEVmZmVjdE9wLm1ha2VcdUZGMUFcbiAqIC0gXHU1MjFCXHU1RUZBXHU0RTAwXHU2NzYxXHU1RTI2XHU1N0ZBXHU2NzJDIG1ldGEgXHU3Njg0IEVmZmVjdE9wXHVGRjFCXG4gKiAtIFx1OUVEOFx1OEJBNFx1NzUxRlx1NjIxMFx1N0EzM1x1NUI5QSBpZFx1RkYwOFx1NTdGQVx1NEU4RSBgaW5zdGFuY2VJZGAgKyBcdTUzNTVcdThDMDMgYG9wU2VxYFx1RkYwOVx1RkYwQ1x1OEMwM1x1NzUyOFx1NjVCOVx1NEU1Rlx1NTNFRlx1NTcyOFx1NTkxNlx1NUM0Mlx1ODk4Nlx1NTE5OVx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgbWFrZSA9IDxBLCBFLCBSPihwYXJhbXM6IHtcbiAgcmVhZG9ubHkga2luZDogRWZmZWN0T3BbJ2tpbmQnXVxuICByZWFkb25seSBuYW1lOiBzdHJpbmdcbiAgcmVhZG9ubHkgZWZmZWN0OiBFZmZlY3QuRWZmZWN0PEEsIEUsIFI+XG4gIHJlYWRvbmx5IHBheWxvYWQ/OiB1bmtub3duXG4gIHJlYWRvbmx5IG1ldGE/OiBFZmZlY3RPcFsnbWV0YSddXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nXG59KTogRWZmZWN0T3A8QSwgRSwgUj4gPT4gKHtcbiAgLi4uKHBhcmFtcy5pZFxuICAgID8geyBpZDogcGFyYW1zLmlkLCBtZXRhOiBwYXJhbXMubWV0YSB9XG4gICAgOiAoKCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhOiBhbnkgPSBwYXJhbXMubWV0YSA/PyB7fVxuICAgICAgICBjb25zdCBpbnN0YW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtZXRhLmluc3RhbmNlSWRcbiAgICAgICAgY29uc3Qgb3BTZXE6IG51bWJlciA9XG4gICAgICAgICAgdHlwZW9mIG1ldGEub3BTZXEgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShtZXRhLm9wU2VxKSA/IE1hdGguZmxvb3IobWV0YS5vcFNlcSkgOiBuZXh0T3BTZXEoKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBtYWtlSWQoaW5zdGFuY2VJZCwgb3BTZXEpLFxuICAgICAgICAgIG1ldGE6IG1ldGEub3BTZXEgPT09IG9wU2VxID8gbWV0YSA6IHsgLi4ubWV0YSwgb3BTZXEgfSxcbiAgICAgICAgfVxuICAgICAgfSkoKSksXG4gIGtpbmQ6IHBhcmFtcy5raW5kLFxuICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgcGF5bG9hZDogcGFyYW1zLnBheWxvYWQsXG4gIGVmZmVjdDogcGFyYW1zLmVmZmVjdCxcbn0pXG5cbi8qKlxuICogRWZmZWN0T3AubWFrZUluUnVuU2Vzc2lvblx1RkYxQVxuICogLSBcdTU3MjggUnVuU2Vzc2lvbiBcdTRGNUNcdTc1MjhcdTU3REZcdTUxODVcdTUyMDZcdTkxNERcdTdBMzNcdTVCOUEgYG9wU2VxYFx1RkYwOHBlci1zZXNzaW9uICsgcGVyLWluc3RhbmNlXHVGRjA5XHVGRjFCXG4gKiAtIFx1ODJFNSBFbnYgXHU0RTJEXHU2NUUwIFJ1blNlc3Npb25cdUZGMENcdTUyMTlcdTU2REVcdTkwMDBcdTUyMzBcdThGREJcdTdBMEJcdTdFQTdcdTUzNTVcdThDMDNcdTVFOEZcdTUzRjdcdUZGMDhcdTRFMERcdTUxOERcdTRGN0ZcdTc1MjhcdThGREJcdTdBMEJcdTdFQTcgTWFwXHVGRjA5XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlSW5SdW5TZXNzaW9uID0gPEEsIEUsIFI+KHBhcmFtczoge1xuICByZWFkb25seSBraW5kOiBFZmZlY3RPcFsna2luZCddXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuICByZWFkb25seSBlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8QSwgRSwgUj5cbiAgcmVhZG9ubHkgcGF5bG9hZD86IHVua25vd25cbiAgcmVhZG9ubHkgbWV0YT86IEVmZmVjdE9wWydtZXRhJ11cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmdcbn0pOiBFZmZlY3QuRWZmZWN0PEVmZmVjdE9wPEEsIEUsIFI+LCBuZXZlciwgYW55PiA9PlxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHBhcmFtcy5pZCxcbiAgICAgICAga2luZDogcGFyYW1zLmtpbmQsXG4gICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICBwYXlsb2FkOiBwYXJhbXMucGF5bG9hZCxcbiAgICAgICAgbWV0YTogcGFyYW1zLm1ldGEsXG4gICAgICAgIGVmZmVjdDogcGFyYW1zLmVmZmVjdCxcbiAgICAgIH0gc2F0aXNmaWVzIEVmZmVjdE9wPEEsIEUsIFI+XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YTogYW55ID0gcGFyYW1zLm1ldGEgPz8ge31cbiAgICBjb25zdCBpbnN0YW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtZXRhLmluc3RhbmNlSWRcblxuICAgIGxldCBvcFNlcTogbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBtZXRhLm9wU2VxID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUobWV0YS5vcFNlcSkpIHtcbiAgICAgIG9wU2VxID0gTWF0aC5mbG9vcihtZXRhLm9wU2VxKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZXNzaW9uT3B0ID0geWllbGQqIEVmZmVjdC5zZXJ2aWNlT3B0aW9uKFJ1blNlc3Npb25UYWcpXG4gICAgICBpZiAoT3B0aW9uLmlzU29tZShzZXNzaW9uT3B0KSkge1xuICAgICAgICBjb25zdCBrZXkgPSBpbnN0YW5jZUlkID8/ICdnbG9iYWwnXG4gICAgICAgIG9wU2VxID0gc2Vzc2lvbk9wdC52YWx1ZS5sb2NhbC5uZXh0U2VxKCdvcFNlcScsIGtleSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wU2VxID0gbmV4dE9wU2VxKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IG1ha2VJZChpbnN0YW5jZUlkLCBvcFNlcSksXG4gICAgICBraW5kOiBwYXJhbXMua2luZCxcbiAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgcGF5bG9hZDogcGFyYW1zLnBheWxvYWQsXG4gICAgICBtZXRhOiBtZXRhLm9wU2VxID09PSBvcFNlcSA/IG1ldGEgOiB7IC4uLm1ldGEsIG9wU2VxIH0sXG4gICAgICBlZmZlY3Q6IHBhcmFtcy5lZmZlY3QsXG4gICAgfSBzYXRpc2ZpZXMgRWZmZWN0T3A8QSwgRSwgUj5cbiAgfSlcblxuLyoqXG4gKiBFZmZlY3RPcC53aXRoTWV0YVx1RkYxQVxuICogLSBcdTU3MjhcdTczQjBcdTY3MDkgRWZmZWN0T3AgXHU0RTBBXHU4RkZEXHU1MkEwXHU2MjE2XHU4OTg2XHU3NkQ2IG1ldGEgXHU1QjU3XHU2QkI1XHVGRjFCXG4gKiAtIFx1NEUwRFx1NjUzOVx1NTNEOCBlZmZlY3QgXHU2NzJDXHU4RUFCXHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoTWV0YSA9IDxBLCBFLCBSPihcbiAgb3A6IEVmZmVjdE9wPEEsIEUsIFI+LFxuICBtZXRhOiBQYXJ0aWFsPE5vbk51bGxhYmxlPEVmZmVjdE9wWydtZXRhJ10+Pixcbik6IEVmZmVjdE9wPEEsIEUsIFI+ID0+ICh7XG4gIC4uLm9wLFxuICBtZXRhOiB7IC4uLihvcC5tZXRhID8/IHt9KSwgLi4ubWV0YSB9LFxufSlcblxuLyoqXG4gKiBFZmZlY3RPcC5ydW5cdUZGMUFcbiAqIC0gXHU0RjdGXHU3NTI4XHU3RUQ5XHU1QjlBIE1pZGRsZXdhcmVTdGFjayBcdTYyNjdcdTg4NENcdTRFMDBcdTY3NjEgRWZmZWN0T3BcdUZGMUJcbiAqIC0gXHU4MkU1IHN0YWNrIFx1NEUzQVx1N0E3QVx1RkYwQ1x1NTIxOVx1NzZGNFx1NjNBNVx1OEZENFx1NTZERSBvcC5lZmZlY3RcdTMwMDJcbiAqL1xuZXhwb3J0IGNvbnN0IHJ1biA9IDxBLCBFLCBSPihvcDogRWZmZWN0T3A8QSwgRSwgUj4sIHN0YWNrOiBNaWRkbGV3YXJlU3RhY2spOiBFZmZlY3QuRWZmZWN0PEEsIEUsIFI+ID0+XG4gIENvcmUucnVuV2l0aE1pZGRsZXdhcmUob3AsIHN0YWNrKVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVMsU0FBUyxhQUFhO0FBOEIvQixJQUFNLG9CQUFOLGNBQWdDLFFBQVEsSUFBSSx3QkFBd0IsRUFBaUMsRUFBRTtBQUFDO0FBRWpHLElBQU0sZ0JBQWdCO0FBYTdCLElBQU0sbUJBQW1CLHVCQUFPLElBQUksbUNBQW1DO0FBQ3ZFLElBQUkscUJBQXFCO0FBRXpCLElBQU0sYUFBYSxNQUFjO0FBQy9CLE1BQUk7QUFFRixVQUFNLElBQVM7QUFDZixVQUFNLE9BQU8sT0FBTyxFQUFFLGdCQUFnQixNQUFNLFdBQVksRUFBRSxnQkFBZ0IsSUFBZTtBQUN6RixVQUFNLE9BQU8sT0FBTztBQUNwQixNQUFFLGdCQUFnQixJQUFJO0FBQ3RCLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTiwwQkFBc0I7QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLElBQU0sWUFBWSxDQUFDLGNBQTZCLE9BQU8sU0FBUyxJQUFJLFdBQVcsQ0FBQztBQUV6RSxJQUFNLDJCQUEyQixNQUE0QjtBQUNsRSxRQUFNLFdBQVcsb0JBQUksSUFBWTtBQUNqQyxRQUFNLGlC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LE9BQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxLQUFLLE1BQU0sS0FBSyxLQUFLLElBQUksVUFBVTtBQUNyRyxXQUFPO0FBQUEsTUFDTCxJQUFJLE9BQU8sWUFBWSxLQUFLO0FBQUEsTUFDNUIsTUFBTSxLQUFLLFVBQVUsUUFBUSxPQUFPLEVBQUUsR0FBRyxNQUFNLE1BQU07QUFBQSxJQUN2RDtBQUFBLEVBQ0YsR0FBRztBQUFBLEVBQ1AsTUFBTSxPQUFPO0FBQUEsRUFDYixNQUFNLE9BQU87QUFBQSxFQUNiLFNBQVMsT0FBTztBQUFBLEVBQ2hCLFFBQVEsT0FBTztBQUNqQjtBQU9PLElBQU0sbUJBQW1CLENBQVUsV0FReEMsT0FBTyxJQUFJLGFBQWE7QUFDdEIsTUFBSSxPQUFPLElBQUk7QUFDYixXQUFPO0FBQUEsTUFDTCxJQUFJLE9BQU87QUFBQSxNQUNYLE1BQU0sT0FBTztBQUFBLE1BQ2IsTUFBTSxPQUFPO0FBQUEsTUFDYixTQUFTLE9BQU87QUFBQSxNQUNoQixNQUFNLE9BQU87QUFBQSxNQUNiLFFBQVEsT0FBTztBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUVBLFFBQU0sT0FBWSxPQUFPLFFBQVEsQ0FBQztBQUNsQyxRQUFNLGFBQWlDLEtBQUs7QUFFNUMsTUFBSTtBQUNKLE1BQUksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLFNBQVMsS0FBSyxLQUFLLEdBQUc7QUFDakUsWUFBUSxLQUFLLE1BQU0sS0FBSyxLQUFLO0FBQUEsRUFDL0IsT0FBTztBQUNMLFVBQU0sYUFBYSxPQUFPLE9BQU8sY0FBYyxhQUFhO0FBQzVELFFBQUksT0FBTyxPQUFPLFVBQVUsR0FBRztBQUM3QixZQUFNLE1BQU0sY0FBYztBQUMxQixjQUFRLFdBQVcsTUFBTSxNQUFNLFFBQVEsU0FBUyxHQUFHO0FBQUEsSUFDckQsT0FBTztBQUNMLGNBQVEsVUFBVTtBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMLElBQUksT0FBTyxZQUFZLEtBQUs7QUFBQSxJQUM1QixNQUFNLE9BQU87QUFBQSxJQUNiLE1BQU0sT0FBTztBQUFBLElBQ2IsU0FBUyxPQUFPO0FBQUEsSUFDaEIsTUFBTSxLQUFLLFVBQVUsUUFBUSxPQUFPLEVBQUUsR0FBRyxNQUFNLE1BQU07QUFBQSxJQUNyRCxRQUFRLE9BQU87QUFBQSxFQUNqQjtBQUNGLENBQUM7QUFPSSxJQUFNLFdBQVcsQ0FDdEIsSUFDQSxVQUN1QjtBQUFBLEVBQ3ZCLEdBQUc7QUFBQSxFQUNILE1BQU0sRUFBRSxHQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUksR0FBRyxLQUFLO0FBQ3RDO0FBT08sSUFBTSxNQUFNLENBQVUsSUFBdUIsVUFDN0Msa0JBQWtCLElBQUksS0FBSzsiLAogICJuYW1lcyI6IFsiY29tcG9zZU1pZGRsZXdhcmUiLCAibWFrZU9wZXJhdGlvblJlamVjdGVkIl0KfQo=
@@ -0,0 +1,69 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ record
5
+ } from "./chunk-GIPXUIZQ.js";
6
+
7
+ // ../logix-core/src/Middleware.ts
8
+ import { Effect } from "../effect.js";
9
+ var makeDebugLogger = (config) => (op) => Effect.gen(function* () {
10
+ if (op.meta?.policy?.disableObservers) {
11
+ return yield* op.effect;
12
+ }
13
+ if (config?.logger) {
14
+ config.logger(op);
15
+ } else {
16
+ yield* Effect.logDebug(
17
+ `[EffectOp] kind=${op.kind} name=${op.name}`
18
+ );
19
+ }
20
+ return yield* op.effect;
21
+ });
22
+ var applyDebug = (stack, config) => [...stack, makeDebugLogger(config)];
23
+ var makeDebugObserver = (config) => (op) => Effect.gen(function* () {
24
+ if (op.meta?.policy?.disableObservers) {
25
+ return yield* op.effect;
26
+ }
27
+ if (!config?.filter || config.filter(op)) {
28
+ const meta = op.meta ?? {};
29
+ const slimOp = {
30
+ id: op.id,
31
+ kind: op.kind,
32
+ name: op.name,
33
+ payload: op.payload,
34
+ meta: op.meta
35
+ };
36
+ yield* record({
37
+ type: "trace:effectop",
38
+ moduleId: typeof meta.moduleId === "string" ? meta.moduleId : void 0,
39
+ instanceId: typeof meta.instanceId === "string" ? meta.instanceId : void 0,
40
+ runtimeLabel: typeof meta.runtimeLabel === "string" ? meta.runtimeLabel : void 0,
41
+ txnSeq: typeof meta.txnSeq === "number" && Number.isFinite(meta.txnSeq) ? Math.floor(meta.txnSeq) : void 0,
42
+ data: slimOp
43
+ });
44
+ }
45
+ return yield* op.effect;
46
+ });
47
+ var applyDebugObserver = (stack, config) => [...stack, makeDebugObserver(config)];
48
+ var withDebug = (stack, options) => {
49
+ let next = stack;
50
+ if (options?.logger !== false) {
51
+ const loggerConfig = typeof options?.logger === "function" ? { logger: options.logger } : void 0;
52
+ next = applyDebug(next, loggerConfig);
53
+ }
54
+ if (options?.observer !== false) {
55
+ const observerOption = options?.observer;
56
+ const observerConfig = observerOption === void 0 ? void 0 : observerOption;
57
+ next = applyDebugObserver(next, observerConfig);
58
+ }
59
+ return next;
60
+ };
61
+
62
+ export {
63
+ makeDebugLogger,
64
+ applyDebug,
65
+ makeDebugObserver,
66
+ applyDebugObserver,
67
+ withDebug
68
+ };
69
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvTWlkZGxld2FyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gTWlkZGxld2FyZSBcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTUxNjVcdTUzRTNcdUZGMDhAbG9naXgvY29yZS9NaWRkbGV3YXJlXHVGRjA5XHUzMDAyXG4vLyAtIFx1NjNEMFx1NEY5Qlx1NTdGQVx1NEU4RSBFZmZlY3RPcCBcdTc2ODRcdThDMDNcdThCRDUvXHU4OUMyXHU2RDRCXHU0RTJEXHU5NUY0XHU0RUY2XHU3QjQ5XHU4Rjg1XHU1MkE5XHU1REU1XHU1MTc3XHVGRjFCXG4vLyAtIFF1ZXJ5IC8gRGVidWdPYnNlcnZlciBcdTdCNDlcdTgwRkRcdTUyOUJcdTU3MjhcdTY3MkNcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTRFMEJcdTYyNjlcdTVDNTVcdTMwMDJcblxuaW1wb3J0IHsgRWZmZWN0IH0gZnJvbSBcImVmZmVjdFwiXG5pbXBvcnQgKiBhcyBFZmZlY3RPcCBmcm9tIFwiLi9FZmZlY3RPcC5qc1wiXG5pbXBvcnQgKiBhcyBEZWJ1ZyBmcm9tIFwiLi9EZWJ1Zy5qc1wiXG5cbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmUgPSBFZmZlY3RPcC5NaWRkbGV3YXJlXG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlU3RhY2sgPSBFZmZlY3RPcC5NaWRkbGV3YXJlU3RhY2tcblxuZXhwb3J0IGludGVyZmFjZSBEZWJ1Z0xvZ2dlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBcdTUzRUZcdTkwMDlcdUZGMUFcdTgxRUFcdTVCOUFcdTRFNDlcdTY1RTVcdTVGRDdcdTUxRkRcdTY1NzBcdUZGMENcdTY1QjlcdTRGQkZcdTU3MjhcdTZENEJcdThCRDVcdTRFMkRcdTYzNTVcdTgzQjdcdThDMDNcdTc1MjhcdTMwMDJcbiAgICogLSBcdTgyRTVcdTY3MkFcdTYzRDBcdTRGOUJcdUZGMENcdTUyMTlcdTlFRDhcdThCQTRcdTRGN0ZcdTc1MjggRWZmZWN0LmxvZ0RlYnVnIFx1OEY5M1x1NTFGQVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VyPzogKG9wOiBFZmZlY3RPcC5FZmZlY3RPcDxhbnksIGFueSwgYW55PikgPT4gdm9pZFxufVxuXG4vKipcbiAqIFx1NTIxQlx1NUVGQVx1NEUwMFx1NEUyQVx1N0I4MFx1NTM1NVx1NzY4NCBEZWJ1ZyBcdTY1RTVcdTVGRDdcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUFcbiAqIC0gXHU1NzI4XHU2MjY3XHU4ODRDIEVmZmVjdCBcdTRFNEJcdTUyNERcdThCQjBcdTVGNTVcdTRFMDBcdTY3NjFcdTY1RTVcdTVGRDdcdUZGMUJcbiAqIC0gXHU0RTBEXHU2NTM5XHU1M0Q4XHU3RUQzXHU2NzlDXHU0RTBFXHU5NTE5XHU4QkVGXHU4QkVEXHU0RTQ5XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVidWdMb2dnZXIgPSAoXG4gIGNvbmZpZz86IERlYnVnTG9nZ2VyQ29uZmlnLFxuKTogTWlkZGxld2FyZSA9PlxuICA8QSwgRSwgUj4ob3A6IEVmZmVjdE9wLkVmZmVjdE9wPEEsIEUsIFI+KTogRWZmZWN0LkVmZmVjdDxBLCBFLCBSPiA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgIC8vIFx1N0VBRlx1ODlDMlx1NkQ0Qlx1N0M3Qlx1ODBGRFx1NTI5Qlx1RkYxQVx1NTE0MVx1OEJCOFx1ODhBQlx1NUM0MFx1OTBFOFx1N0I1Nlx1NzU2NVx1NTE3M1x1OTVFRFx1MzAwMlxuICAgICAgaWYgKG9wLm1ldGE/LnBvbGljeT8uZGlzYWJsZU9ic2VydmVycykge1xuICAgICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZz8ubG9nZ2VyKSB7XG4gICAgICAgIGNvbmZpZy5sb2dnZXIob3ApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFxuICAgICAgICAgIGBbRWZmZWN0T3BdIGtpbmQ9JHtvcC5raW5kfSBuYW1lPSR7b3AubmFtZX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgIH0pXG5cbi8qKlxuICogYXBwbHlEZWJ1Z1x1RkYxQVxuICogLSBcdTU3MjhcdTczQjBcdTY3MDkgTWlkZGxld2FyZVN0YWNrIFx1NjcyQlx1NUMzRVx1OEZGRFx1NTJBMFx1NEUwMFx1NEUyQSBEZWJ1Z0xvZ2dlciBcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUJcbiAqIC0gXHU4RkQ0XHU1NkRFXHU2NUIwXHU3Njg0IHN0YWNrXHVGRjBDXHU0RTBEXHU0RkVFXHU2NTM5XHU1MzlGXHU2NTcwXHU3RUM0XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseURlYnVnID0gKFxuICBzdGFjazogTWlkZGxld2FyZVN0YWNrLFxuICBjb25maWc/OiBEZWJ1Z0xvZ2dlckNvbmZpZyxcbik6IE1pZGRsZXdhcmVTdGFjayA9PiBbLi4uc3RhY2ssIG1ha2VEZWJ1Z0xvZ2dlcihjb25maWcpXVxuXG4vKipcbiAqIERlYnVnT2JzZXJ2ZXJDb25maWdcdUZGMUFcbiAqIC0gXHU5ODg0XHU3NTU5XHU4RkM3XHU2RUU0XHU1MTY1XHU1M0UzXHVGRjFBXHU1M0VGXHU2MzA5XHU2QTIxXHU1NzU3IC8ga2luZCAvIG5hbWUgXHU3QjQ5XHU3RUY0XHU1RUE2XHU3QjVCXHU5MDA5XHU5NzAwXHU4OTgxXHU4OUMyXHU2RDRCXHU3Njg0IEVmZmVjdE9wXHUzMDAyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdPYnNlcnZlckNvbmZpZyB7XG4gIHJlYWRvbmx5IGZpbHRlcj86IChcbiAgICBvcDogRWZmZWN0T3AuRWZmZWN0T3A8YW55LCBhbnksIGFueT4sXG4gICkgPT4gYm9vbGVhblxufVxuXG4vKipcbiAqIG1ha2VEZWJ1Z09ic2VydmVyXHVGRjFBXG4gKiAtIFx1NUMwNiBFZmZlY3RPcCBcdTZENDFcdTdFREZcdTRFMDBcdTY1MzZcdTUzRTNcdTUyMzAgRGVidWdTaW5rXHVGRjA4RWZmZWN0T3AgXHUyMTkyIERlYnVnLkV2ZW50XHVGRjA5XHVGRjFCXG4gKiAtIFx1NUY1M1x1NTI0RFx1OTAxQVx1OEZDNyB0cmFjZToqIFx1NEU4Qlx1NEVGNlx1NUMwNiBFZmZlY3RPcCBcdTc2ODQgU2xpbSBcdTg5QzZcdTU2RkVcdTkwMEZcdTRGMjBcdTUyMzAgRGVidWcgXHU2RDQxXHVGRjA4XHU3OTgxXHU2QjYyXHU2NDNBXHU1RTI2IGVmZmVjdCBcdTk1RURcdTUzMDVcdUZGMDlcdUZGMUFcbiAqICAgLSB0eXBlOiBcInRyYWNlOmVmZmVjdG9wXCJcbiAqICAgLSBtb2R1bGVJZDogXHU2NzY1XHU4MUVBIG9wLm1ldGE/Lm1vZHVsZUlkXHVGRjA4XHU4MkU1XHU1QjU4XHU1NzI4XHVGRjA5XG4gKiAgIC0gZGF0YTogeyBpZCwga2luZCwgbmFtZSwgcGF5bG9hZCwgbWV0YSB9XG4gKlxuICogXHU4QkY0XHU2NjBFXHVGRjFBXG4gKiAtIFx1NEUwRFx1NjUzOVx1NTNEOFx1NTM5Rlx1NjcwOSBFZmZlY3QgXHU4ODRDXHU0RTNBXHVGRjBDXHU0RUM1XHU4RkZEXHU1MkEwIERlYnVnIFx1NEZBN1x1ODlDMlx1NkQ0Qlx1RkYxQlxuICogLSBcdTUxNzdcdTRGNTNcdTc2ODQgRGV2dG9vbHMgLyBUaW1lbGluZSBcdTg5QzZcdTU2RkVcdTUzRUZcdTRFRTVcdTU3RkFcdTRFOEUgdHJhY2U6ZWZmZWN0b3AgXHU0RThCXHU0RUY2XHU5MUNEXHU1RUZBIEVmZmVjdE9wIFx1NjVGNlx1OTVGNFx1N0VCRlx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgbWFrZURlYnVnT2JzZXJ2ZXIgPSAoXG4gIGNvbmZpZz86IERlYnVnT2JzZXJ2ZXJDb25maWcsXG4pOiBNaWRkbGV3YXJlID0+XG4gIDxBLCBFLCBSPihvcDogRWZmZWN0T3AuRWZmZWN0T3A8QSwgRSwgUj4pOiBFZmZlY3QuRWZmZWN0PEEsIEUsIFI+ID0+XG4gICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgLy8gXHU3RUFGXHU4OUMyXHU2RDRCXHU3QzdCXHU4MEZEXHU1MjlCXHVGRjFBXHU1MTQxXHU4QkI4XHU4OEFCXHU1QzQwXHU5MEU4XHU3QjU2XHU3NTY1XHU1MTczXHU5NUVEXHUzMDAyXG4gICAgICBpZiAob3AubWV0YT8ucG9saWN5Py5kaXNhYmxlT2JzZXJ2ZXJzKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCogb3AuZWZmZWN0XG4gICAgICB9XG4gICAgICBpZiAoIWNvbmZpZz8uZmlsdGVyIHx8IGNvbmZpZy5maWx0ZXIob3ApKSB7XG4gICAgICAgIGNvbnN0IG1ldGE6IGFueSA9IG9wLm1ldGEgPz8ge31cbiAgICAgICAgY29uc3Qgc2xpbU9wID0ge1xuICAgICAgICAgIGlkOiBvcC5pZCxcbiAgICAgICAgICBraW5kOiBvcC5raW5kLFxuICAgICAgICAgIG5hbWU6IG9wLm5hbWUsXG4gICAgICAgICAgcGF5bG9hZDogb3AucGF5bG9hZCxcbiAgICAgICAgICBtZXRhOiBvcC5tZXRhLFxuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiBEZWJ1Zy5yZWNvcmQoe1xuICAgICAgICAgIHR5cGU6IFwidHJhY2U6ZWZmZWN0b3BcIixcbiAgICAgICAgICBtb2R1bGVJZDogdHlwZW9mIG1ldGEubW9kdWxlSWQgPT09IFwic3RyaW5nXCIgPyBtZXRhLm1vZHVsZUlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGluc3RhbmNlSWQ6IHR5cGVvZiBtZXRhLmluc3RhbmNlSWQgPT09IFwic3RyaW5nXCIgPyBtZXRhLmluc3RhbmNlSWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcnVudGltZUxhYmVsOiB0eXBlb2YgbWV0YS5ydW50aW1lTGFiZWwgPT09IFwic3RyaW5nXCIgPyBtZXRhLnJ1bnRpbWVMYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0eG5TZXE6XG4gICAgICAgICAgICB0eXBlb2YgbWV0YS50eG5TZXEgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1ldGEudHhuU2VxKVxuICAgICAgICAgICAgICA/IE1hdGguZmxvb3IobWV0YS50eG5TZXEpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGRhdGE6IHNsaW1PcCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB5aWVsZCogb3AuZWZmZWN0XG4gICAgfSlcblxuLyoqXG4gKiBhcHBseURlYnVnT2JzZXJ2ZXJcdUZGMUFcbiAqIC0gXHU1NzI4XHU3M0IwXHU2NzA5IE1pZGRsZXdhcmVTdGFjayBcdTY3MkJcdTVDM0VcdThGRkRcdTUyQTAgRGVidWdPYnNlcnZlciBcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUJcbiAqIC0gXHU4RkQ0XHU1NkRFXHU2NUIwXHU3Njg0IHN0YWNrXHVGRjBDXHU0RTBEXHU0RkVFXHU2NTM5XHU1MzlGXHU2NTcwXHU3RUM0XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseURlYnVnT2JzZXJ2ZXIgPSAoXG4gIHN0YWNrOiBNaWRkbGV3YXJlU3RhY2ssXG4gIGNvbmZpZz86IERlYnVnT2JzZXJ2ZXJDb25maWcsXG4pOiBNaWRkbGV3YXJlU3RhY2sgPT4gWy4uLnN0YWNrLCBtYWtlRGVidWdPYnNlcnZlcihjb25maWcpXVxuXG4vKipcbiAqIFdpdGhEZWJ1Z09wdGlvbnNcdUZGMUFcbiAqIC0gXHU5QUQ4XHU1QzQyXHU3RUM0XHU1NDA4XHU1MTY1XHU1M0UzXHU3Njg0XHU5MTREXHU3RjZFXHU5ODc5XHVGRjBDXHU3NTI4XHU0RThFXHU1NzI4XHU3M0IwXHU2NzA5IE1pZGRsZXdhcmVTdGFjayBcdTRFMEFcdThGRkRcdTUyQTAgRGVidWcgXHU4MEZEXHU1MjlCXHUzMDAyXG4gKlxuICogXHU3RUE2XHU1QjlBXHVGRjFBXG4gKiAtIGxvZ2dlcjpcbiAqICAgLSBcdTY3MkFcdThCQkVcdTdGNkVcdUZGMDh1bmRlZmluZWRcdUZGMDlcdUZGMUFcdTU0MkZcdTc1MjhcdTlFRDhcdThCQTQgRGVidWdMb2dnZXJcdUZGMDhFZmZlY3QubG9nRGVidWdcdUZGMDlcdUZGMUJcbiAqICAgLSBcdTYzRDBcdTRGOUJcdTUxRkRcdTY1NzBcdUZGMUFcdTRGN0ZcdTc1MjhcdTgxRUFcdTVCOUFcdTRFNDkgbG9nZ2VyKG9wKSBcdTY2RkZcdTRFRTNcdTlFRDhcdThCQTRcdTg4NENcdTRFM0FcdUZGMUJcbiAqICAgLSBcdTY2M0VcdTVGMEYgZmFsc2VcdUZGMUFcdTRFMERcdThGRkRcdTUyQTAgRGVidWdMb2dnZXIgXHU0RTJEXHU5NUY0XHU0RUY2XHUzMDAyXG4gKiAtIG9ic2VydmVyOlxuICogICAtIFx1NjcyQVx1OEJCRVx1N0Y2RVx1RkYwOHVuZGVmaW5lZFx1RkYwOVx1RkYxQVx1NTQyRlx1NzUyOCBEZWJ1Z09ic2VydmVyXHVGRjBDXHU0RjdGXHU3NTI4XHU5RUQ4XHU4QkE0XHU5MTREXHU3RjZFXHVGRjFCXG4gKiAgIC0gXHU2M0QwXHU0RjlCIERlYnVnT2JzZXJ2ZXJDb25maWdcdUZGMUFcdTYzMDlcdTkxNERcdTdGNkVcdTU0MkZcdTc1MjggRGVidWdPYnNlcnZlclx1RkYxQlxuICogICAtIFx1NjYzRVx1NUYwRiBmYWxzZVx1RkYxQVx1NEUwRFx1OEZGRFx1NTJBMCBEZWJ1Z09ic2VydmVyIFx1NEUyRFx1OTVGNFx1NEVGNlx1MzAwMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhEZWJ1Z09wdGlvbnMge1xuICByZWFkb25seSBsb2dnZXI/OiBEZWJ1Z0xvZ2dlckNvbmZpZ1tcImxvZ2dlclwiXSB8IGZhbHNlXG4gIHJlYWRvbmx5IG9ic2VydmVyPzogRGVidWdPYnNlcnZlckNvbmZpZyB8IGZhbHNlXG59XG5cbi8qKlxuICogd2l0aERlYnVnXHVGRjFBXG4gKiAtIFx1NTcyOFx1NzNCMFx1NjcwOSBNaWRkbGV3YXJlU3RhY2sgXHU0RTBBXHU4RkZEXHU1MkEwIERlYnVnTG9nZ2VyICsgRGVidWdPYnNlcnZlciBcdTk4ODRcdThCQkVcdUZGMUJcbiAqIC0gXHU2NTJGXHU2MzAxXHU5MDFBXHU4RkM3IG9wdGlvbnMgXHU2M0E3XHU1MjM2IGxvZ2dlciAvIG9ic2VydmVyIFx1NjYyRlx1NTQyNlx1NTQyRlx1NzUyOFx1NTNDQVx1NTE3Nlx1OTE0RFx1N0Y2RVx1RkYxQlxuICogLSBcdThGRDRcdTU2REVcdTY1QjBcdTc2ODQgc3RhY2tcdUZGMENcdTRFMERcdTRGRUVcdTY1MzlcdTUzOUZcdTY1NzBcdTdFQzRcdTMwMDJcbiAqXG4gKiBcdTUxNzhcdTU3OEJcdTc1MjhcdTZDRDVcdUZGMUFcbiAqXG4gKiAgIGxldCBzdGFjazogTWlkZGxld2FyZVN0YWNrID0gW21ldHJpY3MsIHRpbWluZ11cbiAqICAgc3RhY2sgPSBNaWRkbGV3YXJlLndpdGhEZWJ1ZyhzdGFjaywge1xuICogICAgIGxvZ2dlcjogKG9wKSA9PiBjb25zb2xlLmxvZyhvcC5raW5kLCBvcC5uYW1lKSxcbiAqICAgICBvYnNlcnZlcjogeyBmaWx0ZXI6IChvcCkgPT4gb3Aua2luZCAhPT0gXCJzZXJ2aWNlXCIgfSxcbiAqICAgfSlcbiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhEZWJ1ZyA9IChcbiAgc3RhY2s6IE1pZGRsZXdhcmVTdGFjayxcbiAgb3B0aW9ucz86IFdpdGhEZWJ1Z09wdGlvbnMsXG4pOiBNaWRkbGV3YXJlU3RhY2sgPT4ge1xuICBsZXQgbmV4dCA9IHN0YWNrXG5cbiAgLy8gRGVidWdMb2dnZXJcdUZGMUFcdTlFRDhcdThCQTRcdTVGMDBcdTU0MkZcdUZGMENcdTk2NjRcdTk3NUVcdTY2M0VcdTVGMEYgbG9nZ2VyID09PSBmYWxzZVx1MzAwMlxuICBpZiAob3B0aW9ucz8ubG9nZ2VyICE9PSBmYWxzZSkge1xuICAgIGNvbnN0IGxvZ2dlckNvbmZpZzogRGVidWdMb2dnZXJDb25maWcgfCB1bmRlZmluZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbnM/LmxvZ2dlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgID8geyBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBuZXh0ID0gYXBwbHlEZWJ1ZyhuZXh0LCBsb2dnZXJDb25maWcpXG4gIH1cblxuICAvLyBEZWJ1Z09ic2VydmVyXHVGRjFBXHU5RUQ4XHU4QkE0XHU1RjAwXHU1NDJGXHVGRjBDXHU5NjY0XHU5NzVFXHU2NjNFXHU1RjBGIG9ic2VydmVyID09PSBmYWxzZVx1MzAwMlxuICBpZiAob3B0aW9ucz8ub2JzZXJ2ZXIgIT09IGZhbHNlKSB7XG4gICAgLy8gXHU4RkQ5XHU5MUNDXHU1REYyXHU3RUNGXHU5MDFBXHU4RkM3XHU2NzYxXHU0RUY2XHU2MzkyXHU5NjY0XHU0RTg2IG9ic2VydmVyID09PSBmYWxzZVx1RkYwQ1x1NTNFQVx1OTcwMFx1ODk4MVx1NTcyOFx1NjcwOVx1OTE0RFx1N0Y2RVx1NUJGOVx1OEM2MVx1NjVGNlx1OTAwRlx1NEYyMFx1RkYxQlxuICAgIC8vIHVuZGVmaW5lZCBcdTg4NjhcdTc5M0FcdTRGN0ZcdTc1MjggRGVidWdPYnNlcnZlciBcdTlFRDhcdThCQTRcdTg4NENcdTRFM0FcdTMwMDJcbiAgICBjb25zdCBvYnNlcnZlck9wdGlvbiA9IG9wdGlvbnM/Lm9ic2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2ZXJDb25maWc6IERlYnVnT2JzZXJ2ZXJDb25maWcgfCB1bmRlZmluZWQgPVxuICAgICAgb2JzZXJ2ZXJPcHRpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9ic2VydmVyT3B0aW9uXG4gICAgbmV4dCA9IGFwcGx5RGVidWdPYnNlcnZlcihuZXh0LCBvYnNlcnZlckNvbmZpZylcbiAgfVxuXG4gIHJldHVybiBuZXh0XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBSUEsU0FBUyxjQUFjO0FBb0JoQixJQUFNLGtCQUFrQixDQUM3QixXQUVBLENBQVUsT0FDUixPQUFPLElBQUksYUFBYTtBQUV0QixNQUFJLEdBQUcsTUFBTSxRQUFRLGtCQUFrQjtBQUNyQyxXQUFPLE9BQU8sR0FBRztBQUFBLEVBQ25CO0FBQ0EsTUFBSSxRQUFRLFFBQVE7QUFDbEIsV0FBTyxPQUFPLEVBQUU7QUFBQSxFQUNsQixPQUFPO0FBQ0wsV0FBTyxPQUFPO0FBQUEsTUFDWixtQkFBbUIsR0FBRyxJQUFJLFNBQVMsR0FBRyxJQUFJO0FBQUEsSUFDNUM7QUFBQSxFQUNGO0FBQ0EsU0FBTyxPQUFPLEdBQUc7QUFDbkIsQ0FBQztBQU9FLElBQU0sYUFBYSxDQUN4QixPQUNBLFdBQ29CLENBQUMsR0FBRyxPQUFPLGdCQUFnQixNQUFNLENBQUM7QUF3QmpELElBQU0sb0JBQW9CLENBQy9CLFdBRUEsQ0FBVSxPQUNSLE9BQU8sSUFBSSxhQUFhO0FBRXRCLE1BQUksR0FBRyxNQUFNLFFBQVEsa0JBQWtCO0FBQ3JDLFdBQU8sT0FBTyxHQUFHO0FBQUEsRUFDbkI7QUFDQSxNQUFJLENBQUMsUUFBUSxVQUFVLE9BQU8sT0FBTyxFQUFFLEdBQUc7QUFDeEMsVUFBTSxPQUFZLEdBQUcsUUFBUSxDQUFDO0FBQzlCLFVBQU0sU0FBUztBQUFBLE1BQ2IsSUFBSSxHQUFHO0FBQUEsTUFDUCxNQUFNLEdBQUc7QUFBQSxNQUNULE1BQU0sR0FBRztBQUFBLE1BQ1QsU0FBUyxHQUFHO0FBQUEsTUFDWixNQUFNLEdBQUc7QUFBQSxJQUNYO0FBQ0EsV0FBYSxPQUFPO0FBQUEsTUFDbEIsTUFBTTtBQUFBLE1BQ04sVUFBVSxPQUFPLEtBQUssYUFBYSxXQUFXLEtBQUssV0FBVztBQUFBLE1BQzlELFlBQVksT0FBTyxLQUFLLGVBQWUsV0FBVyxLQUFLLGFBQWE7QUFBQSxNQUNwRSxjQUFjLE9BQU8sS0FBSyxpQkFBaUIsV0FBVyxLQUFLLGVBQWU7QUFBQSxNQUMxRSxRQUNFLE9BQU8sS0FBSyxXQUFXLFlBQVksT0FBTyxTQUFTLEtBQUssTUFBTSxJQUMxRCxLQUFLLE1BQU0sS0FBSyxNQUFNLElBQ3RCO0FBQUEsTUFDTixNQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sT0FBTyxHQUFHO0FBQ25CLENBQUM7QUFPRSxJQUFNLHFCQUFxQixDQUNoQyxPQUNBLFdBQ29CLENBQUMsR0FBRyxPQUFPLGtCQUFrQixNQUFNLENBQUM7QUFtQ25ELElBQU0sWUFBWSxDQUN2QixPQUNBLFlBQ29CO0FBQ3BCLE1BQUksT0FBTztBQUdYLE1BQUksU0FBUyxXQUFXLE9BQU87QUFDN0IsVUFBTSxlQUNKLE9BQU8sU0FBUyxXQUFXLGFBQ3ZCLEVBQUUsUUFBUSxRQUFRLE9BQU8sSUFDekI7QUFDTixXQUFPLFdBQVcsTUFBTSxZQUFZO0FBQUEsRUFDdEM7QUFHQSxNQUFJLFNBQVMsYUFBYSxPQUFPO0FBRy9CLFVBQU0saUJBQWlCLFNBQVM7QUFDaEMsVUFBTSxpQkFDSixtQkFBbUIsU0FBWSxTQUFZO0FBQzdDLFdBQU8sbUJBQW1CLE1BQU0sY0FBYztBQUFBLEVBQ2hEO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,166 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ record
5
+ } from "./chunk-CVZPRIDB.js";
6
+ import {
7
+ EffectOpMiddlewareTag,
8
+ make,
9
+ run
10
+ } from "./chunk-UNVLTK4N.js";
11
+ import {
12
+ RunSessionTag
13
+ } from "./chunk-RS5FFPUV.js";
14
+
15
+ // ../logix-core/src/internal/runtime/core/FlowRuntime.ts
16
+ import { Effect, Stream, Ref, Option } from "../effect.js";
17
+ var getMiddlewareStack = () => Effect.serviceOption(EffectOpMiddlewareTag).pipe(
18
+ Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.stack : [])
19
+ );
20
+ var getRuntimeScope = (runtime) => {
21
+ if (!runtime) return {};
22
+ if (typeof runtime !== "object" && typeof runtime !== "function") return {};
23
+ const scope = runtime;
24
+ return {
25
+ moduleId: typeof scope.moduleId === "string" ? scope.moduleId : void 0,
26
+ instanceId: typeof scope.instanceId === "string" ? scope.instanceId : void 0
27
+ };
28
+ };
29
+ var resolveEffect = (eff, payload) => typeof eff === "function" ? eff(payload) : eff;
30
+ var make2 = (runtime, runtimeInternals) => {
31
+ const scope = getRuntimeScope(runtime);
32
+ const resolveConcurrencyLimit = () => runtimeInternals ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(
33
+ Effect.map((p) => p.concurrencyLimit)
34
+ ) : Effect.succeed(16);
35
+ const runAsFlowOp = (name, payload, eff, options) => Effect.gen(function* () {
36
+ const stack = yield* getMiddlewareStack();
37
+ const meta = {
38
+ ...options?.meta ?? {},
39
+ policy: options?.policy,
40
+ tags: options?.tags,
41
+ trace: options?.trace,
42
+ moduleId: scope.moduleId,
43
+ instanceId: scope.instanceId
44
+ };
45
+ if (!(typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq))) {
46
+ const sessionOpt = yield* Effect.serviceOption(RunSessionTag);
47
+ if (Option.isSome(sessionOpt)) {
48
+ const key = meta.instanceId ?? "global";
49
+ meta.opSeq = sessionOpt.value.local.nextSeq("opSeq", key);
50
+ }
51
+ }
52
+ const op = make({
53
+ kind: "flow",
54
+ name,
55
+ payload,
56
+ effect: eff,
57
+ meta
58
+ });
59
+ return yield* run(op, stack);
60
+ });
61
+ const runEffect = (eff) => (payload) => resolveEffect(eff, payload);
62
+ const runStreamSequential = (eff, options) => (stream) => Stream.runForEach(
63
+ stream,
64
+ (payload) => runAsFlowOp(
65
+ "flow.run",
66
+ payload,
67
+ runEffect(eff)(payload),
68
+ options
69
+ )
70
+ );
71
+ const runStreamParallel = (eff, options) => (stream) => Effect.gen(function* () {
72
+ const concurrency = yield* resolveConcurrencyLimit();
73
+ return yield* Stream.runDrain(
74
+ stream.pipe(
75
+ Stream.mapEffect(
76
+ (payload) => runAsFlowOp(
77
+ "flow.runParallel",
78
+ payload,
79
+ runEffect(eff)(payload),
80
+ options
81
+ ),
82
+ { concurrency }
83
+ )
84
+ )
85
+ ).pipe(
86
+ Effect.catchAllCause(
87
+ (cause) => record({
88
+ type: "diagnostic",
89
+ moduleId: scope.moduleId,
90
+ instanceId: scope.instanceId,
91
+ code: "flow::unhandled_failure",
92
+ severity: "error",
93
+ message: "Flow watcher (runParallel) failed with an unhandled error.",
94
+ hint: "\u5728 watcher \u5185\u663E\u5F0F\u5904\u7406\u9519\u8BEF\uFF08catch/catchAll\uFF09\u6216\u7528 TaskRunner \u7684 failure \u5199\u56DE\uFF1B\u907F\u514D silent failure\u3002",
95
+ kind: "flow_unhandled_failure",
96
+ trigger: {
97
+ kind: "flow",
98
+ name: "runParallel"
99
+ }
100
+ }).pipe(Effect.zipRight(Effect.failCause(cause)))
101
+ )
102
+ );
103
+ });
104
+ return {
105
+ fromAction: (predicate) => runtime.actions$.pipe(Stream.filter(predicate)),
106
+ fromState: (selector) => runtime.changes(selector),
107
+ debounce: (ms) => (stream) => Stream.debounce(stream, ms),
108
+ throttle: (ms) => (stream) => Stream.throttle(stream, {
109
+ cost: () => 1,
110
+ units: 1,
111
+ duration: ms,
112
+ strategy: "enforce"
113
+ }),
114
+ filter: (predicate) => (stream) => Stream.filter(stream, predicate),
115
+ run: (eff, options) => (stream) => runStreamSequential(eff, options)(stream),
116
+ runParallel: (eff, options) => (stream) => runStreamParallel(eff, options)(stream),
117
+ runLatest: (eff, options) => (stream) => Stream.runDrain(
118
+ Stream.map(
119
+ stream,
120
+ (payload) => runAsFlowOp(
121
+ "flow.runLatest",
122
+ payload,
123
+ runEffect(eff)(payload),
124
+ options
125
+ )
126
+ ).pipe(
127
+ Stream.flatMap((effect) => Stream.fromEffect(effect), {
128
+ switch: true
129
+ })
130
+ )
131
+ ),
132
+ runExhaust: (eff, options) => (stream) => Effect.gen(function* () {
133
+ const concurrency = yield* resolveConcurrencyLimit();
134
+ const busyRef = yield* Ref.make(false);
135
+ const mapper = (payload) => Effect.gen(function* () {
136
+ const acquired = yield* Ref.modify(
137
+ busyRef,
138
+ (busy) => busy ? [false, busy] : [true, true]
139
+ );
140
+ if (!acquired) {
141
+ return;
142
+ }
143
+ try {
144
+ yield* runAsFlowOp(
145
+ "flow.runExhaust",
146
+ payload,
147
+ runEffect(eff)(payload),
148
+ options
149
+ );
150
+ } finally {
151
+ yield* Ref.set(busyRef, false);
152
+ }
153
+ });
154
+ return yield* Stream.runDrain(
155
+ stream.pipe(
156
+ Stream.mapEffect(mapper, { concurrency })
157
+ )
158
+ );
159
+ })
160
+ };
161
+ };
162
+
163
+ export {
164
+ make2 as make
165
+ };
166
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0Zsb3dSdW50aW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBFZmZlY3QsIFN0cmVhbSwgUmVmLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCJcbmltcG9ydCB0eXBlIHtcbiAgQW55TW9kdWxlU2hhcGUsXG4gIE1vZHVsZVJ1bnRpbWUsXG4gIFN0YXRlT2YsXG4gIEFjdGlvbk9mLFxuICBNb2R1bGVTaGFwZSxcbn0gZnJvbSBcIi4vbW9kdWxlLmpzXCJcbmltcG9ydCB0eXBlICogYXMgTG9naWMgZnJvbSBcIi4vTG9naWNNaWRkbGV3YXJlLmpzXCJcbmltcG9ydCAqIGFzIEVmZmVjdE9wIGZyb20gXCIuLi8uLi8uLi9FZmZlY3RPcC5qc1wiXG5pbXBvcnQgKiBhcyBFZmZlY3RPcENvcmUgZnJvbSBcIi4uL0VmZmVjdE9wQ29yZS5qc1wiXG5pbXBvcnQgeyBSdW5TZXNzaW9uVGFnIH0gZnJvbSBcIi4uLy4uL29ic2VydmFiaWxpdHkvcnVuU2Vzc2lvbi5qc1wiXG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVJbnRlcm5hbHMgfSBmcm9tIFwiLi9SdW50aW1lSW50ZXJuYWxzLmpzXCJcbmltcG9ydCAqIGFzIERlYnVnIGZyb20gXCIuL0RlYnVnU2luay5qc1wiXG5cbmNvbnN0IGdldE1pZGRsZXdhcmVTdGFjayA9ICgpOiBFZmZlY3QuRWZmZWN0PFxuICBFZmZlY3RPcC5NaWRkbGV3YXJlU3RhY2ssXG4gIG5ldmVyLFxuICBhbnlcbj4gPT5cbiAgRWZmZWN0LnNlcnZpY2VPcHRpb24oRWZmZWN0T3BDb3JlLkVmZmVjdE9wTWlkZGxld2FyZVRhZykucGlwZShcbiAgICBFZmZlY3QubWFwKChtYXliZSkgPT4gKE9wdGlvbi5pc1NvbWUobWF5YmUpID8gbWF5YmUudmFsdWUuc3RhY2sgOiBbXSkpLFxuICApXG5cbmNvbnN0IGdldFJ1bnRpbWVTY29wZSA9IChcbiAgcnVudGltZTogdW5rbm93bixcbik6IHsgcmVhZG9ubHkgbW9kdWxlSWQ/OiBzdHJpbmc7IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiBzdHJpbmcgfSA9PiB7XG4gIGlmICghcnVudGltZSkgcmV0dXJuIHt9XG4gIGlmICh0eXBlb2YgcnVudGltZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcnVudGltZSAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4ge31cbiAgY29uc3Qgc2NvcGUgPSBydW50aW1lIGFzIHsgcmVhZG9ubHkgbW9kdWxlSWQ/OiB1bmtub3duOyByZWFkb25seSBpbnN0YW5jZUlkPzogdW5rbm93biB9XG4gIHJldHVybiB7XG4gICAgbW9kdWxlSWQ6IHR5cGVvZiBzY29wZS5tb2R1bGVJZCA9PT0gXCJzdHJpbmdcIiA/IHNjb3BlLm1vZHVsZUlkIDogdW5kZWZpbmVkLFxuICAgIGluc3RhbmNlSWQ6IHR5cGVvZiBzY29wZS5pbnN0YW5jZUlkID09PSBcInN0cmluZ1wiID8gc2NvcGUuaW5zdGFuY2VJZCA6IHVuZGVmaW5lZCxcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaTxTaCBleHRlbmRzIE1vZHVsZVNoYXBlPGFueSwgYW55PiwgUiA9IG5ldmVyPiB7XG4gIHJlYWRvbmx5IGZyb21BY3Rpb246IDxUIGV4dGVuZHMgQWN0aW9uT2Y8U2g+PihcbiAgICBwcmVkaWNhdGU6IChhOiBBY3Rpb25PZjxTaD4pID0+IGEgaXMgVFxuICApID0+IFN0cmVhbS5TdHJlYW08VD5cblxuICByZWFkb25seSBmcm9tU3RhdGU6IDxWPihcbiAgICBzZWxlY3RvcjogKHM6IFN0YXRlT2Y8U2g+KSA9PiBWXG4gICkgPT4gU3RyZWFtLlN0cmVhbTxWPlxuXG4gIHJlYWRvbmx5IGRlYm91bmNlOiA8Vj4oXG4gICAgbXM6IG51bWJlclxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IFN0cmVhbS5TdHJlYW08Vj5cblxuICByZWFkb25seSB0aHJvdHRsZTogPFY+KFxuICAgIG1zOiBudW1iZXJcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgZmlsdGVyOiA8Vj4oXG4gICAgcHJlZGljYXRlOiAodmFsdWU6IFYpID0+IGJvb2xlYW5cbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgcnVuOiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxuXG4gIHJlYWRvbmx5IHJ1blBhcmFsbGVsOiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxuXG4gIHJlYWRvbmx5IHJ1bkxhdGVzdDogPFYsIEEgPSB2b2lkLCBFID0gbmV2ZXIsIFIyID0gdW5rbm93bj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFYpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIExvZ2ljLkVudjxTaCwgUiAmIFIyPj5cblxuICByZWFkb25seSBydW5FeGhhdXN0OiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxufVxuXG5jb25zdCByZXNvbHZlRWZmZWN0ID0gPFQsIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFIsIEEsIEU+KFxuICBlZmY6XG4gICAgfCBMb2dpYy5PZjxTaCwgUiwgQSwgRT5cbiAgICB8ICgocGF5bG9hZDogVCkgPT4gTG9naWMuT2Y8U2gsIFIsIEEsIEU+KSxcbiAgcGF5bG9hZDogVFxuKTogTG9naWMuT2Y8U2gsIFIsIEEsIEU+ID0+XG4gIHR5cGVvZiBlZmYgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gKGVmZiBhcyAocDogVCkgPT4gTG9naWMuT2Y8U2gsIFIsIEEsIEU+KShwYXlsb2FkKVxuICAgIDogZWZmXG5cbmV4cG9ydCBjb25zdCBtYWtlID0gPFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFIgPSBuZXZlcj4oXG4gIHJ1bnRpbWU6IE1vZHVsZVJ1bnRpbWU8U3RhdGVPZjxTaD4sIEFjdGlvbk9mPFNoPj4sXG4gIHJ1bnRpbWVJbnRlcm5hbHM/OiBSdW50aW1lSW50ZXJuYWxzLFxuKTogQXBpPFNoLCBSPiA9PiB7XG4gIGNvbnN0IHNjb3BlID0gZ2V0UnVudGltZVNjb3BlKHJ1bnRpbWUpXG4gIGNvbnN0IHJlc29sdmVDb25jdXJyZW5jeUxpbWl0ID0gKCk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbnVtYmVyIHwgXCJ1bmJvdW5kZWRcIixcbiAgICBuZXZlcixcbiAgICBhbnlcbiAgPiA9PlxuICAgIHJ1bnRpbWVJbnRlcm5hbHNcbiAgICAgID8gcnVudGltZUludGVybmFscy5jb25jdXJyZW5jeS5yZXNvbHZlQ29uY3VycmVuY3lQb2xpY3koKS5waXBlKFxuICAgICAgICAgIEVmZmVjdC5tYXAoKHApID0+IHAuY29uY3VycmVuY3lMaW1pdCksXG4gICAgICAgIClcbiAgICAgIDogRWZmZWN0LnN1Y2NlZWQoMTYpXG5cbiAgY29uc3QgcnVuQXNGbG93T3AgPSA8QSwgRSwgUjIsIFY+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwYXlsb2FkOiBWLFxuICAgIGVmZjogRWZmZWN0LkVmZmVjdDxBLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+LFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEEsIEUsIExvZ2ljLkVudjxTaCwgUiAmIFIyPj4gPT5cbiAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICBjb25zdCBzdGFjayA9IHlpZWxkKiBnZXRNaWRkbGV3YXJlU3RhY2soKVxuICAgICAgY29uc3QgbWV0YTogYW55ID0ge1xuICAgICAgICAuLi4ob3B0aW9ucz8ubWV0YSA/PyB7fSksXG4gICAgICAgIHBvbGljeTogb3B0aW9ucz8ucG9saWN5LFxuICAgICAgICB0YWdzOiBvcHRpb25zPy50YWdzLFxuICAgICAgICB0cmFjZTogb3B0aW9ucz8udHJhY2UsXG4gICAgICAgIG1vZHVsZUlkOiBzY29wZS5tb2R1bGVJZCxcbiAgICAgICAgaW5zdGFuY2VJZDogc2NvcGUuaW5zdGFuY2VJZCxcbiAgICAgIH1cblxuICAgICAgaWYgKCEodHlwZW9mIG1ldGEub3BTZXEgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1ldGEub3BTZXEpKSkge1xuICAgICAgICBjb25zdCBzZXNzaW9uT3B0ID0geWllbGQqIEVmZmVjdC5zZXJ2aWNlT3B0aW9uKFJ1blNlc3Npb25UYWcpXG4gICAgICAgIGlmIChPcHRpb24uaXNTb21lKHNlc3Npb25PcHQpKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gbWV0YS5pbnN0YW5jZUlkID8/IFwiZ2xvYmFsXCJcbiAgICAgICAgICBtZXRhLm9wU2VxID0gc2Vzc2lvbk9wdC52YWx1ZS5sb2NhbC5uZXh0U2VxKFwib3BTZXFcIiwga2V5KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wID0gRWZmZWN0T3AubWFrZTxBLCBFLCBhbnk+KHtcbiAgICAgICAga2luZDogXCJmbG93XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIGVmZmVjdDogZWZmIGFzIGFueSxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4geWllbGQqIEVmZmVjdE9wLnJ1bihvcCwgc3RhY2spXG4gICAgfSkgYXMgYW55XG5cbiAgY29uc3QgcnVuRWZmZWN0ID1cbiAgICA8VCwgQSwgRSwgUjI+KFxuICAgICAgZWZmOlxuICAgICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICAgIHwgKChwYXlsb2FkOiBUKSA9PiBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPilcbiAgICApID0+XG4gICAgICAocGF5bG9hZDogVCkgPT5cbiAgICAgICAgcmVzb2x2ZUVmZmVjdDxULCBTaCwgUiAmIFIyLCBBLCBFPihlZmYsIHBheWxvYWQpXG5cbiAgY29uc3QgcnVuU3RyZWFtU2VxdWVudGlhbCA9IDxULCBBLCBFLCBSMj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFQpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFQ+KTogRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+ID0+XG4gICAgU3RyZWFtLnJ1bkZvckVhY2goc3RyZWFtLCAocGF5bG9hZCkgPT5cbiAgICAgIHJ1bkFzRmxvd09wPEEsIEUsIFIyLCBUPihcbiAgICAgICAgXCJmbG93LnJ1blwiLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBydW5FZmZlY3Q8VCwgQSwgRSwgUjI+KGVmZikocGF5bG9hZCksXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICBjb25zdCBydW5TdHJlYW1QYXJhbGxlbCA9IDxULCBBLCBFLCBSMj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFQpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFQ+KTogRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+ID0+XG4gICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQoKVxuXG4gICAgICByZXR1cm4geWllbGQqIFN0cmVhbS5ydW5EcmFpbihcbiAgICAgICAgc3RyZWFtLnBpcGUoXG4gICAgICAgICAgU3RyZWFtLm1hcEVmZmVjdChcbiAgICAgICAgICAgIChwYXlsb2FkKSA9PlxuICAgICAgICAgICAgICBydW5Bc0Zsb3dPcDxBLCBFLCBSMiwgVD4oXG4gICAgICAgICAgICAgICAgXCJmbG93LnJ1blBhcmFsbGVsXCIsXG4gICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBydW5FZmZlY3Q8VCwgQSwgRSwgUjI+KGVmZikocGF5bG9hZCksXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHsgY29uY3VycmVuY3kgfSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS5waXBlKFxuICAgICAgICBFZmZlY3QuY2F0Y2hBbGxDYXVzZSgoY2F1c2UpID0+XG4gICAgICAgICAgRGVidWcucmVjb3JkKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZGlhZ25vc3RpY1wiLFxuICAgICAgICAgICAgbW9kdWxlSWQ6IHNjb3BlLm1vZHVsZUlkLFxuICAgICAgICAgICAgaW5zdGFuY2VJZDogc2NvcGUuaW5zdGFuY2VJZCxcbiAgICAgICAgICAgIGNvZGU6IFwiZmxvdzo6dW5oYW5kbGVkX2ZhaWx1cmVcIixcbiAgICAgICAgICAgIHNldmVyaXR5OiBcImVycm9yXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIkZsb3cgd2F0Y2hlciAocnVuUGFyYWxsZWwpIGZhaWxlZCB3aXRoIGFuIHVuaGFuZGxlZCBlcnJvci5cIixcbiAgICAgICAgICAgIGhpbnQ6XG4gICAgICAgICAgICAgIFwiXHU1NzI4IHdhdGNoZXIgXHU1MTg1XHU2NjNFXHU1RjBGXHU1OTA0XHU3NDA2XHU5NTE5XHU4QkVGXHVGRjA4Y2F0Y2gvY2F0Y2hBbGxcdUZGMDlcdTYyMTZcdTc1MjggVGFza1J1bm5lciBcdTc2ODQgZmFpbHVyZSBcdTUxOTlcdTU2REVcdUZGMUJcdTkwN0ZcdTUxNEQgc2lsZW50IGZhaWx1cmVcdTMwMDJcIixcbiAgICAgICAgICAgIGtpbmQ6IFwiZmxvd191bmhhbmRsZWRfZmFpbHVyZVwiLFxuICAgICAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgICAgICBraW5kOiBcImZsb3dcIixcbiAgICAgICAgICAgICAgbmFtZTogXCJydW5QYXJhbGxlbFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KS5waXBlKEVmZmVjdC56aXBSaWdodChFZmZlY3QuZmFpbENhdXNlKGNhdXNlKSkpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH0pIGFzIGFueVxuXG4gIHJldHVybiB7XG4gICAgZnJvbUFjdGlvbjogPFQgZXh0ZW5kcyBBY3Rpb25PZjxTaD4+KFxuICAgICAgcHJlZGljYXRlOiAoYTogQWN0aW9uT2Y8U2g+KSA9PiBhIGlzIFRcbiAgICApID0+IHJ1bnRpbWUuYWN0aW9ucyQucGlwZShTdHJlYW0uZmlsdGVyKHByZWRpY2F0ZSkpLFxuXG4gICAgZnJvbVN0YXRlOiA8Vj4oc2VsZWN0b3I6IChzOiBTdGF0ZU9mPFNoPikgPT4gVikgPT5cbiAgICAgIHJ1bnRpbWUuY2hhbmdlcyhzZWxlY3RvciksXG5cbiAgICBkZWJvdW5jZTogKG1zOiBudW1iZXIpID0+IChzdHJlYW0pID0+IFN0cmVhbS5kZWJvdW5jZShzdHJlYW0sIG1zKSxcblxuICAgIHRocm90dGxlOiAobXM6IG51bWJlcikgPT4gKHN0cmVhbSkgPT5cbiAgICAgIFN0cmVhbS50aHJvdHRsZShzdHJlYW0sIHtcbiAgICAgICAgY29zdDogKCkgPT4gMSxcbiAgICAgICAgdW5pdHM6IDEsXG4gICAgICAgIGR1cmF0aW9uOiBtcyxcbiAgICAgICAgc3RyYXRlZ3k6IFwiZW5mb3JjZVwiLFxuICAgICAgfSksXG5cbiAgICBmaWx0ZXI6IChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSA9PiAoc3RyZWFtKSA9PlxuICAgICAgU3RyZWFtLmZpbHRlcihzdHJlYW0sIHByZWRpY2F0ZSksXG5cbiAgICBydW46IChlZmYsIG9wdGlvbnMpID0+IChzdHJlYW0pID0+XG4gICAgICBydW5TdHJlYW1TZXF1ZW50aWFsPGFueSwgYW55LCBhbnksIGFueT4oZWZmLCBvcHRpb25zKShzdHJlYW0pLFxuXG4gICAgcnVuUGFyYWxsZWw6IChlZmYsIG9wdGlvbnMpID0+IChzdHJlYW0pID0+XG4gICAgICBydW5TdHJlYW1QYXJhbGxlbDxhbnksIGFueSwgYW55LCBhbnk+KGVmZiwgb3B0aW9ucykoc3RyZWFtKSxcblxuICAgIHJ1bkxhdGVzdDogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT5cbiAgICAgIFN0cmVhbS5ydW5EcmFpbihcbiAgICAgICAgU3RyZWFtLm1hcChzdHJlYW0sIChwYXlsb2FkKSA9PlxuICAgICAgICAgIHJ1bkFzRmxvd09wPGFueSwgYW55LCBhbnksIGFueT4oXG4gICAgICAgICAgICBcImZsb3cucnVuTGF0ZXN0XCIsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgcnVuRWZmZWN0PGFueSwgYW55LCBhbnksIGFueT4oZWZmKShwYXlsb2FkKSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgU3RyZWFtLmZsYXRNYXAoKGVmZmVjdCkgPT4gU3RyZWFtLmZyb21FZmZlY3QoZWZmZWN0KSwge1xuICAgICAgICAgICAgc3dpdGNoOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG5cbiAgICBydW5FeGhhdXN0OiAoZWZmLCBvcHRpb25zKSA9PiAoc3RyZWFtKSA9PlxuICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeSA9IHlpZWxkKiByZXNvbHZlQ29uY3VycmVuY3lMaW1pdCgpXG4gICAgICAgIGNvbnN0IGJ1c3lSZWYgPSB5aWVsZCogUmVmLm1ha2UoZmFsc2UpXG4gICAgICAgIGNvbnN0IG1hcHBlciA9IChwYXlsb2FkOiBhbnkpID0+XG4gICAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgYWNxdWlyZWQgPSB5aWVsZCogUmVmLm1vZGlmeShidXN5UmVmLCAoYnVzeSkgPT5cbiAgICAgICAgICAgICAgYnVzeSA/IChbZmFsc2UsIGJ1c3ldIGFzIGNvbnN0KSA6IChbdHJ1ZSwgdHJ1ZV0gYXMgY29uc3QpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAoIWFjcXVpcmVkKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgeWllbGQqIHJ1bkFzRmxvd09wPGFueSwgYW55LCBhbnksIGFueT4oXG4gICAgICAgICAgICAgICAgXCJmbG93LnJ1bkV4aGF1c3RcIixcbiAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgIHJ1bkVmZmVjdDxhbnksIGFueSwgYW55LCBhbnk+KGVmZikocGF5bG9hZCksXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgeWllbGQqIFJlZi5zZXQoYnVzeVJlZiwgZmFsc2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4geWllbGQqIFN0cmVhbS5ydW5EcmFpbihcbiAgICAgICAgICBzdHJlYW0ucGlwZShcbiAgICAgICAgICAgIFN0cmVhbS5tYXBFZmZlY3QobWFwcGVyLCB7IGNvbmN1cnJlbmN5IH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KSxcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxRQUFRLFFBQVEsS0FBSyxjQUFjO0FBZTVDLElBQU0scUJBQXFCLE1BS3pCLE9BQU8sY0FBMkIscUJBQXFCLEVBQUU7QUFBQSxFQUN2RCxPQUFPLElBQUksQ0FBQyxVQUFXLE9BQU8sT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFFO0FBQ3ZFO0FBRUYsSUFBTSxrQkFBa0IsQ0FDdEIsWUFDaUU7QUFDakUsTUFBSSxDQUFDLFFBQVMsUUFBTyxDQUFD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