@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,16 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ getNodeEnv,
5
+ isDevEnv
6
+ } from "./chunk-XE7ULSGQ.js";
7
+
8
+ // ../logix-core/src/Env.ts
9
+ var getNodeEnv2 = () => getNodeEnv();
10
+ var isDevEnv2 = () => isDevEnv();
11
+
12
+ export {
13
+ getNodeEnv2 as getNodeEnv,
14
+ isDevEnv2 as isDevEnv
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvRW52LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyBcdTUxNkNcdTUxNzFcdTczQUZcdTU4ODNcdTY4QzBcdTZENEJcdTVERTVcdTUxNzdcdUZGMDhAbG9naXgvY29yZS9FbnZcdUZGMDlcdUZGMUFcbi8vIC0gZ2V0Tm9kZUVudlx1RkYxQVx1OTAxQVx1OEZDNyBnbG9iYWxUaGlzLnByb2Nlc3MuZW52Lk5PREVfRU5WIFx1OEJGQlx1NTNENlx1OEMwM1x1NzUyOFx1NjVCOVx1OEZEMFx1ODg0Q1x1NzNBRlx1NTg4M1x1RkYxQlxuLy8gLSBpc0RldkVudlx1RkYxQVx1N0VBNlx1NUI5QVx1NEUzQSBOT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgXHU1MzczXHU4OUM2XHU0RTNBXHU1RjAwXHU1M0QxXHU3M0FGXHU1ODgzXHUzMDAyXG4vLyBcdTVCOUVcdTk2NDVcdTVCOUVcdTczQjBcdTRFMEJcdTZDODlcdTUyMzAgaW50ZXJuYWwvcnVudGltZS9jb3JlL2Vudi50c1x1RkYwQ1x1OTA3Rlx1NTE0RFx1NTcyOFx1NTkxQVx1NEUyQVx1NTMwNVx1NEUyRFx1OTFDRFx1NTkwRFx1NUI5RVx1NzNCMFx1MzAwMlxuXG5pbXBvcnQgKiBhcyBJbnRlcm5hbCBmcm9tICcuL2ludGVybmFsL3J1bnRpbWUvY29yZS9lbnYuanMnXG5cbmV4cG9ydCBjb25zdCBnZXROb2RlRW52ID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiBJbnRlcm5hbC5nZXROb2RlRW52KClcblxuZXhwb3J0IGNvbnN0IGlzRGV2RW52ID0gKCk6IGJvb2xlYW4gPT4gSW50ZXJuYWwuaXNEZXZFbnYoKVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7QUFPTyxJQUFNQSxjQUFhLE1BQW1DLFdBQVc7QUFFakUsSUFBTUMsWUFBVyxNQUF3QixTQUFTOyIsCiAgIm5hbWVzIjogWyJnZXROb2RlRW52IiwgImlzRGV2RW52Il0KfQo=
@@ -0,0 +1,159 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ normalizeFieldPath
5
+ } from "./chunk-5XOBKSOT.js";
6
+
7
+ // ../logix-core/src/internal/digest.ts
8
+ var stableStringify = (value) => {
9
+ if (value === null) return "null";
10
+ const t = typeof value;
11
+ if (t === "string") return JSON.stringify(value);
12
+ if (t === "number") return Number.isFinite(value) ? String(value) : "null";
13
+ if (t === "boolean") return value ? "true" : "false";
14
+ if (Array.isArray(value)) {
15
+ return `[${value.map(stableStringify).join(",")}]`;
16
+ }
17
+ if (t === "object") {
18
+ const record = value;
19
+ const keys = Object.keys(record).sort((a, b) => a.localeCompare(b));
20
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(",")}}`;
21
+ }
22
+ return "null";
23
+ };
24
+ var fnv1a32 = (input) => {
25
+ let hash = 2166136261;
26
+ for (let i = 0; i < input.length; i++) {
27
+ hash ^= input.charCodeAt(i);
28
+ hash = hash * 16777619 >>> 0;
29
+ }
30
+ return hash.toString(16).padStart(8, "0");
31
+ };
32
+
33
+ // ../logix-core/src/internal/state-trait/ir.ts
34
+ var normalizeFieldPaths = (paths) => {
35
+ if (!paths || paths.length === 0) return [];
36
+ const out = [];
37
+ for (const path of paths) {
38
+ const normalized = normalizeFieldPath(path);
39
+ if (normalized) out.push(normalized);
40
+ }
41
+ return out;
42
+ };
43
+ var normalizeFieldPath2 = (path) => path ? normalizeFieldPath(path) : void 0;
44
+ var toNodeKind = (step) => {
45
+ switch (step.kind) {
46
+ case "computed-update":
47
+ return "computed";
48
+ case "link-propagate":
49
+ return "link";
50
+ case "source-refresh":
51
+ return "source";
52
+ case "check-validate":
53
+ return "check";
54
+ }
55
+ };
56
+ var findEntryForStep = (program, step) => {
57
+ const fieldPath = step.targetFieldPath;
58
+ if (!fieldPath) return void 0;
59
+ const kind = toNodeKind(step);
60
+ return program.entries.find(
61
+ (e) => e.fieldPath === fieldPath && (e.kind === kind || kind === "check" && e.kind === "check" || kind === "source" && e.kind === "source" || kind === "link" && e.kind === "link" || kind === "computed" && e.kind === "computed")
62
+ );
63
+ };
64
+ var getReadsForEntry = (entry) => {
65
+ if (!entry) return void 0;
66
+ if (entry.kind === "computed") {
67
+ return entry.meta.deps;
68
+ }
69
+ if (entry.kind === "source") {
70
+ return entry.meta.deps;
71
+ }
72
+ if (entry.kind === "link") {
73
+ const from = entry.meta.from;
74
+ return from ? [from] : [];
75
+ }
76
+ if (entry.kind === "check") {
77
+ const rules = entry.meta?.rules ?? {};
78
+ const out = [];
79
+ for (const name of Object.keys(rules)) {
80
+ const rule = rules[name];
81
+ const deps = rule?.deps;
82
+ if (deps) out.push(...deps);
83
+ }
84
+ return out;
85
+ }
86
+ return void 0;
87
+ };
88
+ var exportStaticIr = (params) => {
89
+ const moduleId = params.moduleId;
90
+ const version = params.version ?? "009";
91
+ const metaByField = /* @__PURE__ */ new Map();
92
+ for (const node of params.program.graph.nodes) {
93
+ const meta = node.meta;
94
+ if (!meta || typeof meta !== "object") continue;
95
+ const label = typeof meta.label === "string" ? meta.label : void 0;
96
+ const description = typeof meta.description === "string" ? meta.description : void 0;
97
+ const tags = Array.isArray(meta.tags) && meta.tags.every((t) => typeof t === "string") ? meta.tags : void 0;
98
+ const group = typeof meta.group === "string" ? meta.group : void 0;
99
+ const docsUrl = typeof meta.docsUrl === "string" ? meta.docsUrl : void 0;
100
+ const cacheGroup = typeof meta.cacheGroup === "string" ? meta.cacheGroup : void 0;
101
+ const annotationsRaw = meta.annotations;
102
+ const annotations = annotationsRaw && typeof annotationsRaw === "object" && !Array.isArray(annotationsRaw) ? annotationsRaw : void 0;
103
+ if (label || description || tags || group || docsUrl || cacheGroup || annotations) {
104
+ metaByField.set(node.id, {
105
+ label,
106
+ description,
107
+ tags,
108
+ group,
109
+ docsUrl,
110
+ cacheGroup,
111
+ annotations
112
+ });
113
+ }
114
+ }
115
+ const nodes = params.program.plan.steps.map((step) => {
116
+ const kind = toNodeKind(step);
117
+ const entry = findEntryForStep(params.program, step);
118
+ const reads = normalizeFieldPaths(getReadsForEntry(entry));
119
+ const target = step.targetFieldPath;
120
+ const write = normalizeFieldPath2(target);
121
+ const writes = write ? [write] : [];
122
+ const meta = target ? metaByField.get(target) : void 0;
123
+ const base2 = {
124
+ nodeId: step.id,
125
+ kind,
126
+ reads,
127
+ writes: kind === "check" ? [] : writes,
128
+ meta
129
+ };
130
+ if (kind !== "check" && target && !write) {
131
+ return { ...base2, writesUnknown: true };
132
+ }
133
+ return base2;
134
+ });
135
+ const edges = params.program.graph.edges.map((edge) => ({
136
+ edgeId: edge.id,
137
+ from: edge.from,
138
+ to: edge.to,
139
+ kind: edge.kind
140
+ }));
141
+ const base = {
142
+ version,
143
+ moduleId,
144
+ nodes,
145
+ edges
146
+ };
147
+ const digest = `stir:${version}:${fnv1a32(stableStringify(base))}`;
148
+ return {
149
+ ...base,
150
+ digest
151
+ };
152
+ };
153
+
154
+ export {
155
+ stableStringify,
156
+ fnv1a32,
157
+ exportStaticIr
158
+ };
159
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvZGlnZXN0LnRzIiwgIi4uLy4uLy4uLy4uL2xvZ2l4LWNvcmUvc3JjL2ludGVybmFsL3N0YXRlLXRyYWl0L2lyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIGludGVybmFsL2RpZ2VzdFx1RkYxQVxuICogLSBcdTRFM0EgUnVudGltZSAvIFN0YXRpYyBJUiAvIFRyYWl0cyBcdTdCNDlcdTYzRDBcdTRGOUJcdTY3MDBcdTVDMEZcdTc2ODRcdTIwMUNcdTdBMzNcdTVCOUFcdTY0NThcdTg5ODFcdTIwMURcdTVERTVcdTUxNzdcdUZGMUJcbiAqIC0gXHU3NkVFXHU2ODA3XHU2NjJGXHVGRjFBXHU4REU4XHU4RkQwXHU4ODRDL1x1OERFOFx1OEZEQlx1N0EwQlx1OEY5M1x1NTFGQVx1N0EzM1x1NUI5QVx1MzAwMVx1NEUxNFx1NUI5RVx1NzNCMFx1OERCM1x1NTkxRlx1OEY3Qlx1OTFDRlx1RkYwOFx1OTA3Rlx1NTE0RFx1NUYxNVx1NTE2NVx1NEY5RFx1OEQ1Nlx1RkYwOVx1MzAwMlxuICpcbiAqIFx1NkNFOFx1NjEwRlx1RkYxQVx1OEZEOVx1OTFDQ1x1NzY4NCBzdGFibGVTdHJpbmdpZnkgXHU1RTc2XHU0RTBEXHU4RkZEXHU2QzQyXHU1QjhDXHU2NTc0IEpTT04gXHU3QjQ5XHU0RUY3XHVGRjBDXHU0RUM1XHU4OTg2XHU3NkQ2XHU2NzJDXHU0RUQzXHU5NzAwXHU4OTgxXHU3Njg0XHU1QjUwXHU5NkM2XHVGRjFBXG4gKiAtIGtleSBcdTYzOTJcdTVFOEZcdTdBMzNcdTVCOUFcdUZGMDhcdTVCRjlcdThDNjFcdTVCNTdcdTZCQjVcdTYzMDlcdTVCNTdcdTUxNzhcdTVFOEZcdUZGMDlcdUZGMUJcbiAqIC0gbnVtYmVyIFx1OTc1RVx1NjcwOVx1OTY1MFx1NTAzQ1x1RkYwOE5hTi9cdTAwQjFJbmZpbml0eVx1RkYwOVx1OTY0RFx1N0VBN1x1NEUzQSBudWxsXHVGRjFCXG4gKiAtIFx1NTE3Nlx1NEVENlx1NjVFMFx1NkNENVx1ODg2OFx1OEZCRVx1NzY4NFx1NTAzQ1x1RkYwOHVuZGVmaW5lZC9mdW5jdGlvbi9zeW1ib2wgXHU3QjQ5XHVGRjA5XHU5NjREXHU3RUE3XHU0RTNBIG51bGxcdUZGMUJcbiAqIC0gb2JqZWN0IFx1NTE4NSB1bmRlZmluZWQgXHU0RTBEXHU0RjFBXHU4OEFCXHU3NzAxXHU3NTY1XHVGRjBDXHU4MDBDXHU2NjJGXHU3RjE2XHU3ODAxXHU0RTNBIG51bGxcdUZGMDhcdTRFMEUgSlNPTi5zdHJpbmdpZnkgXHU4ODRDXHU0RTNBXHU0RTBEXHU1NDBDXHVGRjA5XHUzMDAyXG4gKi9cblxuZXhwb3J0IGNvbnN0IHN0YWJsZVN0cmluZ2lmeSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIFwibnVsbFwiXG4gIGNvbnN0IHQgPSB0eXBlb2YgdmFsdWVcbiAgaWYgKHQgPT09IFwic3RyaW5nXCIpIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcbiAgaWYgKHQgPT09IFwibnVtYmVyXCIpIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6IFwibnVsbFwiXG4gIGlmICh0ID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYFske3ZhbHVlLm1hcChzdGFibGVTdHJpbmdpZnkpLmpvaW4oXCIsXCIpfV1gXG4gIH1cblxuICBpZiAodCA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IHJlY29yZCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlY29yZCkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKVxuICAgIHJldHVybiBgeyR7a2V5c1xuICAgICAgLm1hcCgoaykgPT4gYCR7SlNPTi5zdHJpbmdpZnkoayl9OiR7c3RhYmxlU3RyaW5naWZ5KHJlY29yZFtrXSl9YClcbiAgICAgIC5qb2luKFwiLFwiKX19YFxuICB9XG5cbiAgcmV0dXJuIFwibnVsbFwiXG59XG5cbi8qKlxuICogZm52MWEzMlx1RkYxQVxuICogLSAzMi1iaXQgRk5WLTFhIGhhc2hcdUZGMDhcdTc1MjhcdTRFOEVcdTc3RURcdTY0NThcdTg5ODFcdUZGMDlcdUZGMUJcdThGOTNcdTUxRkFcdTU2RkFcdTVCOUEgOCBcdTRGNEQgaGV4XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBmbnYxYTMyID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgaGFzaCA9IDB4ODExYzlkYzVcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGhhc2ggXj0gaW5wdXQuY2hhckNvZGVBdChpKVxuICAgIGhhc2ggPSAoaGFzaCAqIDB4MDEwMDAxOTMpID4+PiAwXG4gIH1cbiAgcmV0dXJuIGhhc2gudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKVxufVxuXG4iLCAiaW1wb3J0IHR5cGUgeyBTdGF0ZVRyYWl0RW50cnksIFN0YXRlVHJhaXRQbGFuU3RlcCwgU3RhdGVUcmFpdFByb2dyYW0gfSBmcm9tIFwiLi9tb2RlbC5qc1wiXG5pbXBvcnQgKiBhcyBDYW5vbmljYWxGaWVsZFBhdGggZnJvbSBcIi4uL2ZpZWxkLXBhdGguanNcIlxuaW1wb3J0IHsgZm52MWEzMiwgc3RhYmxlU3RyaW5naWZ5IH0gZnJvbSBcIi4uL2RpZ2VzdC5qc1wiXG5cbmV4cG9ydCB0eXBlIEZpZWxkUGF0aCA9IENhbm9uaWNhbEZpZWxkUGF0aC5GaWVsZFBhdGhcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNJck5vZGUge1xuICByZWFkb25seSBub2RlSWQ6IHN0cmluZ1xuICByZWFkb25seSBraW5kOiBzdHJpbmdcbiAgcmVhZG9ubHkgcmVhZHM6IFJlYWRvbmx5QXJyYXk8RmllbGRQYXRoPlxuICByZWFkb25seSB3cml0ZXM6IFJlYWRvbmx5QXJyYXk8RmllbGRQYXRoPlxuICByZWFkb25seSB3cml0ZXNVbmtub3duPzogYm9vbGVhblxuICByZWFkb25seSBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICByZWFkb25seSBtZXRhPzoge1xuICAgIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICByZWFkb25seSB0YWdzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gICAgcmVhZG9ubHkgZ3JvdXA/OiBzdHJpbmdcbiAgICByZWFkb25seSBkb2NzVXJsPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2FjaGVHcm91cD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGFubm90YXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0lyRWRnZSB7XG4gIHJlYWRvbmx5IGVkZ2VJZDogc3RyaW5nXG4gIHJlYWRvbmx5IGZyb206IHN0cmluZ1xuICByZWFkb25seSB0bzogc3RyaW5nXG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0lyIHtcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nXG4gIHJlYWRvbmx5IG1vZHVsZUlkOiBzdHJpbmdcbiAgLyoqXG4gICAqIFx1N0EzM1x1NUI5QVx1NjQ1OFx1ODk4MVx1RkYwOFx1NzUyOFx1NEU4RSBkcmlmdCBkZXRlY3Rpb24gLyBcdTVCRjlcdTZCRDRcdUZGMDlcdUZGMUFcdTRFQzVcdTc1MzFcdTVGNTNcdTUyNERcdTVCRkNcdTUxRkFcdTdFRDNcdTY3ODRcdTUxQjNcdTVCOUFcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGRpZ2VzdDogc3RyaW5nXG4gIHJlYWRvbmx5IG5vZGVzOiBSZWFkb25seUFycmF5PFN0YXRpY0lyTm9kZT5cbiAgcmVhZG9ubHkgZWRnZXM6IFJlYWRvbmx5QXJyYXk8U3RhdGljSXJFZGdlPlxuICByZWFkb25seSBjb25mbGljdHM/OiBSZWFkb25seUFycmF5PHVua25vd24+XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUZpZWxkUGF0aHMgPSAoXG4gIHBhdGhzOiBSZWFkb25seUFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQsXG4pOiBSZWFkb25seUFycmF5PEZpZWxkUGF0aD4gPT4ge1xuICBpZiAoIXBhdGhzIHx8IHBhdGhzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGNvbnN0IG91dDogQXJyYXk8RmllbGRQYXRoPiA9IFtdXG4gIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBDYW5vbmljYWxGaWVsZFBhdGgubm9ybWFsaXplRmllbGRQYXRoKHBhdGgpXG4gICAgaWYgKG5vcm1hbGl6ZWQpIG91dC5wdXNoKG5vcm1hbGl6ZWQpXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5jb25zdCBub3JtYWxpemVGaWVsZFBhdGggPSAocGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkKTogRmllbGRQYXRoIHwgdW5kZWZpbmVkID0+XG4gIHBhdGggPyBDYW5vbmljYWxGaWVsZFBhdGgubm9ybWFsaXplRmllbGRQYXRoKHBhdGgpIDogdW5kZWZpbmVkXG5cbmNvbnN0IHRvTm9kZUtpbmQgPSAoc3RlcDogU3RhdGVUcmFpdFBsYW5TdGVwKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChzdGVwLmtpbmQpIHtcbiAgICBjYXNlIFwiY29tcHV0ZWQtdXBkYXRlXCI6XG4gICAgICByZXR1cm4gXCJjb21wdXRlZFwiXG4gICAgY2FzZSBcImxpbmstcHJvcGFnYXRlXCI6XG4gICAgICByZXR1cm4gXCJsaW5rXCJcbiAgICBjYXNlIFwic291cmNlLXJlZnJlc2hcIjpcbiAgICAgIHJldHVybiBcInNvdXJjZVwiXG4gICAgY2FzZSBcImNoZWNrLXZhbGlkYXRlXCI6XG4gICAgICByZXR1cm4gXCJjaGVja1wiXG4gIH1cbn1cblxuY29uc3QgZmluZEVudHJ5Rm9yU3RlcCA9IChcbiAgcHJvZ3JhbTogU3RhdGVUcmFpdFByb2dyYW08YW55PixcbiAgc3RlcDogU3RhdGVUcmFpdFBsYW5TdGVwLFxuKTogU3RhdGVUcmFpdEVudHJ5PGFueSwgc3RyaW5nPiB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGZpZWxkUGF0aCA9IHN0ZXAudGFyZ2V0RmllbGRQYXRoXG4gIGlmICghZmllbGRQYXRoKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGtpbmQgPSB0b05vZGVLaW5kKHN0ZXApXG4gIHJldHVybiBwcm9ncmFtLmVudHJpZXMuZmluZChcbiAgICAoZSkgPT5cbiAgICAgIGUuZmllbGRQYXRoID09PSBmaWVsZFBhdGggJiZcbiAgICAgIChlLmtpbmQgPT09IGtpbmQgfHxcbiAgICAgICAgKGtpbmQgPT09IFwiY2hlY2tcIiAmJiBlLmtpbmQgPT09IFwiY2hlY2tcIikgfHxcbiAgICAgICAgKGtpbmQgPT09IFwic291cmNlXCIgJiYgZS5raW5kID09PSBcInNvdXJjZVwiKSB8fFxuICAgICAgICAoa2luZCA9PT0gXCJsaW5rXCIgJiYgZS5raW5kID09PSBcImxpbmtcIikgfHxcbiAgICAgICAgKGtpbmQgPT09IFwiY29tcHV0ZWRcIiAmJiBlLmtpbmQgPT09IFwiY29tcHV0ZWRcIikpLFxuICApXG59XG5cbmNvbnN0IGdldFJlYWRzRm9yRW50cnkgPSAoXG4gIGVudHJ5OiBTdGF0ZVRyYWl0RW50cnk8YW55LCBzdHJpbmc+IHwgdW5kZWZpbmVkLFxuKTogUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFlbnRyeSkgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAoZW50cnkua2luZCA9PT0gXCJjb21wdXRlZFwiKSB7XG4gICAgcmV0dXJuIChlbnRyeS5tZXRhIGFzIGFueSkuZGVwcyBhcyBSZWFkb25seUFycmF5PHN0cmluZz4gfCB1bmRlZmluZWRcbiAgfVxuICBpZiAoZW50cnkua2luZCA9PT0gXCJzb3VyY2VcIikge1xuICAgIHJldHVybiAoZW50cnkubWV0YSBhcyBhbnkpLmRlcHMgYXMgUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkXG4gIH1cbiAgaWYgKGVudHJ5LmtpbmQgPT09IFwibGlua1wiKSB7XG4gICAgY29uc3QgZnJvbSA9IChlbnRyeS5tZXRhIGFzIGFueSkuZnJvbSBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICByZXR1cm4gZnJvbSA/IFtmcm9tXSA6IFtdXG4gIH1cbiAgaWYgKGVudHJ5LmtpbmQgPT09IFwiY2hlY2tcIikge1xuICAgIGNvbnN0IHJ1bGVzID0gKChlbnRyeS5tZXRhIGFzIGFueSk/LnJ1bGVzID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgY29uc3Qgb3V0OiBBcnJheTxzdHJpbmc+ID0gW11cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMocnVsZXMpKSB7XG4gICAgICBjb25zdCBydWxlID0gcnVsZXNbbmFtZV1cbiAgICAgIGNvbnN0IGRlcHMgPSBydWxlPy5kZXBzIGFzIFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZFxuICAgICAgaWYgKGRlcHMpIG91dC5wdXNoKC4uLmRlcHMpXG4gICAgfVxuICAgIHJldHVybiBvdXRcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCBleHBvcnRTdGF0aWNJciA9IChwYXJhbXM6IHtcbiAgcmVhZG9ubHkgcHJvZ3JhbTogU3RhdGVUcmFpdFByb2dyYW08YW55PlxuICByZWFkb25seSBtb2R1bGVJZDogc3RyaW5nXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmdcbn0pOiBTdGF0aWNJciA9PiB7XG4gIGNvbnN0IG1vZHVsZUlkID0gcGFyYW1zLm1vZHVsZUlkXG4gIGNvbnN0IHZlcnNpb24gPSBwYXJhbXMudmVyc2lvbiA/PyBcIjAwOVwiXG5cbiAgY29uc3QgbWV0YUJ5RmllbGQgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICByZWFkb25seSBsYWJlbD86IHN0cmluZ1xuICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IHRhZ3M/OiBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgICAgIHJlYWRvbmx5IGdyb3VwPzogc3RyaW5nXG4gICAgICByZWFkb25seSBkb2NzVXJsPzogc3RyaW5nXG4gICAgICByZWFkb25seSBjYWNoZUdyb3VwPzogc3RyaW5nXG4gICAgICByZWFkb25seSBhbm5vdGF0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgfVxuICA+KClcbiAgZm9yIChjb25zdCBub2RlIG9mIHBhcmFtcy5wcm9ncmFtLmdyYXBoLm5vZGVzKSB7XG4gICAgY29uc3QgbWV0YSA9IG5vZGUubWV0YSBhcyBhbnlcbiAgICBpZiAoIW1ldGEgfHwgdHlwZW9mIG1ldGEgIT09IFwib2JqZWN0XCIpIGNvbnRpbnVlXG4gICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgbWV0YS5sYWJlbCA9PT0gXCJzdHJpbmdcIiA/IG1ldGEubGFiZWwgOiB1bmRlZmluZWRcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHR5cGVvZiBtZXRhLmRlc2NyaXB0aW9uID09PSBcInN0cmluZ1wiID8gbWV0YS5kZXNjcmlwdGlvbiA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IHRhZ3MgPVxuICAgICAgQXJyYXkuaXNBcnJheShtZXRhLnRhZ3MpICYmIG1ldGEudGFncy5ldmVyeSgodDogdW5rbm93bikgPT4gdHlwZW9mIHQgPT09IFwic3RyaW5nXCIpXG4gICAgICAgID8gKG1ldGEudGFncyBhcyBSZWFkb25seUFycmF5PHN0cmluZz4pXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgY29uc3QgZ3JvdXAgPSB0eXBlb2YgbWV0YS5ncm91cCA9PT0gXCJzdHJpbmdcIiA/IG1ldGEuZ3JvdXAgOiB1bmRlZmluZWRcbiAgICBjb25zdCBkb2NzVXJsID0gdHlwZW9mIG1ldGEuZG9jc1VybCA9PT0gXCJzdHJpbmdcIiA/IG1ldGEuZG9jc1VybCA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IGNhY2hlR3JvdXAgPSB0eXBlb2YgbWV0YS5jYWNoZUdyb3VwID09PSBcInN0cmluZ1wiID8gbWV0YS5jYWNoZUdyb3VwIDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBhbm5vdGF0aW9uc1JhdyA9IG1ldGEuYW5ub3RhdGlvbnNcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9XG4gICAgICBhbm5vdGF0aW9uc1JhdyAmJlxuICAgICAgdHlwZW9mIGFubm90YXRpb25zUmF3ID09PSBcIm9iamVjdFwiICYmXG4gICAgICAhQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uc1JhdylcbiAgICAgICAgPyAoYW5ub3RhdGlvbnNSYXcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAobGFiZWwgfHwgZGVzY3JpcHRpb24gfHwgdGFncyB8fCBncm91cCB8fCBkb2NzVXJsIHx8IGNhY2hlR3JvdXAgfHwgYW5ub3RhdGlvbnMpIHtcbiAgICAgIG1ldGFCeUZpZWxkLnNldChub2RlLmlkLCB7XG4gICAgICAgIGxhYmVsLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgdGFncyxcbiAgICAgICAgZ3JvdXAsXG4gICAgICAgIGRvY3NVcmwsXG4gICAgICAgIGNhY2hlR3JvdXAsXG4gICAgICAgIGFubm90YXRpb25zLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBub2RlczogQXJyYXk8U3RhdGljSXJOb2RlPiA9IHBhcmFtcy5wcm9ncmFtLnBsYW4uc3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgY29uc3Qga2luZCA9IHRvTm9kZUtpbmQoc3RlcClcbiAgICBjb25zdCBlbnRyeSA9IGZpbmRFbnRyeUZvclN0ZXAocGFyYW1zLnByb2dyYW0sIHN0ZXApXG4gICAgY29uc3QgcmVhZHMgPSBub3JtYWxpemVGaWVsZFBhdGhzKGdldFJlYWRzRm9yRW50cnkoZW50cnkpKVxuXG4gICAgY29uc3QgdGFyZ2V0ID0gc3RlcC50YXJnZXRGaWVsZFBhdGhcbiAgICBjb25zdCB3cml0ZSA9IG5vcm1hbGl6ZUZpZWxkUGF0aCh0YXJnZXQpXG4gICAgY29uc3Qgd3JpdGVzID0gd3JpdGUgPyBbd3JpdGVdIDogW11cblxuICAgIGNvbnN0IG1ldGEgPSB0YXJnZXQgPyBtZXRhQnlGaWVsZC5nZXQodGFyZ2V0KSA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgYmFzZTogU3RhdGljSXJOb2RlID0ge1xuICAgICAgbm9kZUlkOiBzdGVwLmlkLFxuICAgICAga2luZCxcbiAgICAgIHJlYWRzLFxuICAgICAgd3JpdGVzOiBraW5kID09PSBcImNoZWNrXCIgPyBbXSA6IHdyaXRlcyxcbiAgICAgIG1ldGEsXG4gICAgfVxuXG4gICAgaWYgKGtpbmQgIT09IFwiY2hlY2tcIiAmJiB0YXJnZXQgJiYgIXdyaXRlKSB7XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCB3cml0ZXNVbmtub3duOiB0cnVlIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhc2VcbiAgfSlcblxuICBjb25zdCBlZGdlczogQXJyYXk8U3RhdGljSXJFZGdlPiA9IHBhcmFtcy5wcm9ncmFtLmdyYXBoLmVkZ2VzLm1hcCgoZWRnZSkgPT4gKHtcbiAgICBlZGdlSWQ6IGVkZ2UuaWQsXG4gICAgZnJvbTogZWRnZS5mcm9tLFxuICAgIHRvOiBlZGdlLnRvLFxuICAgIGtpbmQ6IGVkZ2Uua2luZCxcbiAgfSkpXG5cbiAgY29uc3QgYmFzZSA9IHtcbiAgICB2ZXJzaW9uLFxuICAgIG1vZHVsZUlkLFxuICAgIG5vZGVzLFxuICAgIGVkZ2VzLFxuICB9IGFzIGNvbnN0XG5cbiAgY29uc3QgZGlnZXN0ID0gYHN0aXI6JHt2ZXJzaW9ufToke2ZudjFhMzIoc3RhYmxlU3RyaW5naWZ5KGJhc2UpKX1gXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlLFxuICAgIGRpZ2VzdCxcbiAgfVxufVxuIl0sCiAg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
@@ -0,0 +1,69 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ record
5
+ } from "./chunk-KA7PZA6F.js";
6
+
7
+ // ../logix-core/src/middleware/index.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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvbWlkZGxld2FyZS9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gTWlkZGxld2FyZSBcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTUxNjVcdTUzRTNcdTMwMDJcbi8vIC0gXHU2M0QwXHU0RjlCXHU1N0ZBXHU0RThFIEVmZmVjdE9wIFx1NzY4NFx1OEMwM1x1OEJENS9cdTg5QzJcdTZENEJcdTRFMkRcdTk1RjRcdTRFRjZcdTdCNDlcdThGODVcdTUyQTlcdTVERTVcdTUxNzdcdUZGMUJcbi8vIC0gUXVlcnkgLyBEZWJ1Z09ic2VydmVyIFx1N0I0OVx1ODBGRFx1NTI5Qlx1NTcyOFx1NjcyQ1x1NTQ3RFx1NTQwRFx1N0E3QVx1OTVGNFx1NEUwQlx1NjI2OVx1NUM1NVx1MzAwMlxuXG5pbXBvcnQgeyBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCJcbmltcG9ydCAqIGFzIEVmZmVjdE9wIGZyb20gXCIuLi9lZmZlY3RvcC5qc1wiXG5pbXBvcnQgKiBhcyBEZWJ1ZyBmcm9tIFwiLi4vRGVidWcuanNcIlxuXG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gRWZmZWN0T3AuTWlkZGxld2FyZVxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZVN0YWNrID0gRWZmZWN0T3AuTWlkZGxld2FyZVN0YWNrXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdMb2dnZXJDb25maWcge1xuICAvKipcbiAgICogXHU1M0VGXHU5MDA5XHVGRjFBXHU4MUVBXHU1QjlBXHU0RTQ5XHU2NUU1XHU1RkQ3XHU1MUZEXHU2NTcwXHVGRjBDXHU2NUI5XHU0RkJGXHU1NzI4XHU2RDRCXHU4QkQ1XHU0RTJEXHU2MzU1XHU4M0I3XHU4QzAzXHU3NTI4XHUzMDAyXG4gICAqIC0gXHU4MkU1XHU2NzJBXHU2M0QwXHU0RjlCXHVGRjBDXHU1MjE5XHU5RUQ4XHU4QkE0XHU0RjdGXHU3NTI4IEVmZmVjdC5sb2dEZWJ1ZyBcdThGOTNcdTUxRkFcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dlcj86IChvcDogRWZmZWN0T3AuRWZmZWN0T3A8YW55LCBhbnksIGFueT4pID0+IHZvaWRcbn1cblxuLyoqXG4gKiBcdTUyMUJcdTVFRkFcdTRFMDBcdTRFMkFcdTdCODBcdTUzNTVcdTc2ODQgRGVidWcgXHU2NUU1XHU1RkQ3XHU0RTJEXHU5NUY0XHU0RUY2XHVGRjFBXG4gKiAtIFx1NTcyOFx1NjI2N1x1ODg0QyBFZmZlY3QgXHU0RTRCXHU1MjREXHU4QkIwXHU1RjU1XHU0RTAwXHU2NzYxXHU2NUU1XHU1RkQ3XHVGRjFCXG4gKiAtIFx1NEUwRFx1NjUzOVx1NTNEOFx1N0VEM1x1Njc5Q1x1NEUwRVx1OTUxOVx1OEJFRlx1OEJFRFx1NEU0OVx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgbWFrZURlYnVnTG9nZ2VyID0gKFxuICBjb25maWc/OiBEZWJ1Z0xvZ2dlckNvbmZpZyxcbik6IE1pZGRsZXdhcmUgPT5cbiAgPEEsIEUsIFI+KG9wOiBFZmZlY3RPcC5FZmZlY3RPcDxBLCBFLCBSPik6IEVmZmVjdC5FZmZlY3Q8QSwgRSwgUj4gPT5cbiAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAvLyBcdTdFQUZcdTg5QzJcdTZENEJcdTdDN0JcdTgwRkRcdTUyOUJcdUZGMUFcdTUxNDFcdThCQjhcdTg4QUJcdTVDNDBcdTkwRThcdTdCNTZcdTc1NjVcdTUxNzNcdTk1RURcdTMwMDJcbiAgICAgIGlmIChvcC5tZXRhPy5wb2xpY3k/LmRpc2FibGVPYnNlcnZlcnMpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkKiBvcC5lZmZlY3RcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWc/LmxvZ2dlcikge1xuICAgICAgICBjb25maWcubG9nZ2VyKG9wKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeWllbGQqIEVmZmVjdC5sb2dEZWJ1ZyhcbiAgICAgICAgICBgW0VmZmVjdE9wXSBraW5kPSR7b3Aua2luZH0gbmFtZT0ke29wLm5hbWV9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHlpZWxkKiBvcC5lZmZlY3RcbiAgICB9KVxuXG4vKipcbiAqIGFwcGx5RGVidWdcdUZGMUFcbiAqIC0gXHU1NzI4XHU3M0IwXHU2NzA5IE1pZGRsZXdhcmVTdGFjayBcdTY3MkJcdTVDM0VcdThGRkRcdTUyQTBcdTRFMDBcdTRFMkEgRGVidWdMb2dnZXIgXHU0RTJEXHU5NUY0XHU0RUY2XHVGRjFCXG4gKiAtIFx1OEZENFx1NTZERVx1NjVCMFx1NzY4NCBzdGFja1x1RkYwQ1x1NEUwRFx1NEZFRVx1NjUzOVx1NTM5Rlx1NjU3MFx1N0VDNFx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlEZWJ1ZyA9IChcbiAgc3RhY2s6IE1pZGRsZXdhcmVTdGFjayxcbiAgY29uZmlnPzogRGVidWdMb2dnZXJDb25maWcsXG4pOiBNaWRkbGV3YXJlU3RhY2sgPT4gWy4uLnN0YWNrLCBtYWtlRGVidWdMb2dnZXIoY29uZmlnKV1cblxuLyoqXG4gKiBEZWJ1Z09ic2VydmVyQ29uZmlnXHVGRjFBXG4gKiAtIFx1OTg4NFx1NzU1OVx1OEZDN1x1NkVFNFx1NTE2NVx1NTNFM1x1RkYxQVx1NTNFRlx1NjMwOVx1NkEyMVx1NTc1NyAvIGtpbmQgLyBuYW1lIFx1N0I0OVx1N0VGNFx1NUVBNlx1N0I1Qlx1OTAwOVx1OTcwMFx1ODk4MVx1ODlDMlx1NkQ0Qlx1NzY4NCBFZmZlY3RPcFx1MzAwMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlYnVnT2JzZXJ2ZXJDb25maWcge1xuICByZWFkb25seSBmaWx0ZXI/OiAoXG4gICAgb3A6IEVmZmVjdE9wLkVmZmVjdE9wPGFueSwgYW55LCBhbnk+LFxuICApID0+IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBtYWtlRGVidWdPYnNlcnZlclx1RkYxQVxuICogLSBcdTVDMDYgRWZmZWN0T3AgXHU2RDQxXHU3RURGXHU0RTAwXHU2NTM2XHU1M0UzXHU1MjMwIERlYnVnU2lua1x1RkYwOEVmZmVjdE9wIFx1MjE5MiBEZWJ1Zy5FdmVudFx1RkYwOVx1RkYxQlxuICogLSBcdTVGNTNcdTUyNERcdTkwMUFcdThGQzcgdHJhY2U6KiBcdTRFOEJcdTRFRjZcdTVDMDYgRWZmZWN0T3AgXHU3Njg0IFNsaW0gXHU4OUM2XHU1NkZFXHU5MDBGXHU0RjIwXHU1MjMwIERlYnVnIFx1NkQ0MVx1RkYwOFx1Nzk4MVx1NkI2Mlx1NjQzQVx1NUUyNiBlZmZlY3QgXHU5NUVEXHU1MzA1XHVGRjA5XHVGRjFBXG4gKiAgIC0gdHlwZTogXCJ0cmFjZTplZmZlY3RvcFwiXG4gKiAgIC0gbW9kdWxlSWQ6IFx1Njc2NVx1ODFFQSBvcC5tZXRhPy5tb2R1bGVJZFx1RkYwOFx1ODJFNVx1NUI1OFx1NTcyOFx1RkYwOVxuICogICAtIGRhdGE6IHsgaWQsIGtpbmQsIG5hbWUsIHBheWxvYWQsIG1ldGEgfVxuICpcbiAqIFx1OEJGNFx1NjYwRVx1RkYxQVxuICogLSBcdTRFMERcdTY1MzlcdTUzRDhcdTUzOUZcdTY3MDkgRWZmZWN0IFx1ODg0Q1x1NEUzQVx1RkYwQ1x1NEVDNVx1OEZGRFx1NTJBMCBEZWJ1ZyBcdTRGQTdcdTg5QzJcdTZENEJcdUZGMUJcbiAqIC0gXHU1MTc3XHU0RjUzXHU3Njg0IERldnRvb2xzIC8gVGltZWxpbmUgXHU4OUM2XHU1NkZFXHU1M0VGXHU0RUU1XHU1N0ZBXHU0RThFIHRyYWNlOmVmZmVjdG9wIFx1NEU4Qlx1NEVGNlx1OTFDRFx1NUVGQSBFZmZlY3RPcCBcdTY1RjZcdTk1RjRcdTdFQkZcdTMwMDJcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VEZWJ1Z09ic2VydmVyID0gKFxuICBjb25maWc/OiBEZWJ1Z09ic2VydmVyQ29uZmlnLFxuKTogTWlkZGxld2FyZSA9PlxuICA8QSwgRSwgUj4ob3A6IEVmZmVjdE9wLkVmZmVjdE9wPEEsIEUsIFI+KTogRWZmZWN0LkVmZmVjdDxBLCBFLCBSPiA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgIC8vIFx1N0VBRlx1ODlDMlx1NkQ0Qlx1N0M3Qlx1ODBGRFx1NTI5Qlx1RkYxQVx1NTE0MVx1OEJCOFx1ODhBQlx1NUM0MFx1OTBFOFx1N0I1Nlx1NzU2NVx1NTE3M1x1OTVFRFx1MzAwMlxuICAgICAgaWYgKG9wLm1ldGE/LnBvbGljeT8uZGlzYWJsZU9ic2VydmVycykge1xuICAgICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgICAgfVxuICAgICAgaWYgKCFjb25maWc/LmZpbHRlciB8fCBjb25maWcuZmlsdGVyKG9wKSkge1xuICAgICAgICBjb25zdCBtZXRhOiBhbnkgPSBvcC5tZXRhID8/IHt9XG4gICAgICAgIGNvbnN0IHNsaW1PcCA9IHtcbiAgICAgICAgICBpZDogb3AuaWQsXG4gICAgICAgICAga2luZDogb3Aua2luZCxcbiAgICAgICAgICBuYW1lOiBvcC5uYW1lLFxuICAgICAgICAgIHBheWxvYWQ6IG9wLnBheWxvYWQsXG4gICAgICAgICAgbWV0YTogb3AubWV0YSxcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCogRGVidWcucmVjb3JkKHtcbiAgICAgICAgICB0eXBlOiBcInRyYWNlOmVmZmVjdG9wXCIsXG4gICAgICAgICAgbW9kdWxlSWQ6IHR5cGVvZiBtZXRhLm1vZHVsZUlkID09PSBcInN0cmluZ1wiID8gbWV0YS5tb2R1bGVJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBpbnN0YW5jZUlkOiB0eXBlb2YgbWV0YS5pbnN0YW5jZUlkID09PSBcInN0cmluZ1wiID8gbWV0YS5pbnN0YW5jZUlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHJ1bnRpbWVMYWJlbDogdHlwZW9mIG1ldGEucnVudGltZUxhYmVsID09PSBcInN0cmluZ1wiID8gbWV0YS5ydW50aW1lTGFiZWwgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdHhuU2VxOlxuICAgICAgICAgICAgdHlwZW9mIG1ldGEudHhuU2VxID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZShtZXRhLnR4blNlcSlcbiAgICAgICAgICAgICAgPyBNYXRoLmZsb29yKG1ldGEudHhuU2VxKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBkYXRhOiBzbGltT3AsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgIH0pXG5cbi8qKlxuICogYXBwbHlEZWJ1Z09ic2VydmVyXHVGRjFBXG4gKiAtIFx1NTcyOFx1NzNCMFx1NjcwOSBNaWRkbGV3YXJlU3RhY2sgXHU2NzJCXHU1QzNFXHU4RkZEXHU1MkEwIERlYnVnT2JzZXJ2ZXIgXHU0RTJEXHU5NUY0XHU0RUY2XHVGRjFCXG4gKiAtIFx1OEZENFx1NTZERVx1NjVCMFx1NzY4NCBzdGFja1x1RkYwQ1x1NEUwRFx1NEZFRVx1NjUzOVx1NTM5Rlx1NjU3MFx1N0VDNFx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlEZWJ1Z09ic2VydmVyID0gKFxuICBzdGFjazogTWlkZGxld2FyZVN0YWNrLFxuICBjb25maWc/OiBEZWJ1Z09ic2VydmVyQ29uZmlnLFxuKTogTWlkZGxld2FyZVN0YWNrID0+IFsuLi5zdGFjaywgbWFrZURlYnVnT2JzZXJ2ZXIoY29uZmlnKV1cblxuLyoqXG4gKiBXaXRoRGVidWdPcHRpb25zXHVGRjFBXG4gKiAtIFx1OUFEOFx1NUM0Mlx1N0VDNFx1NTQwOFx1NTE2NVx1NTNFM1x1NzY4NFx1OTE0RFx1N0Y2RVx1OTg3OVx1RkYwQ1x1NzUyOFx1NEU4RVx1NTcyOFx1NzNCMFx1NjcwOSBNaWRkbGV3YXJlU3RhY2sgXHU0RTBBXHU4RkZEXHU1MkEwIERlYnVnIFx1ODBGRFx1NTI5Qlx1MzAwMlxuICpcbiAqIFx1N0VBNlx1NUI5QVx1RkYxQVxuICogLSBsb2dnZXI6XG4gKiAgIC0gXHU2NzJBXHU4QkJFXHU3RjZFXHVGRjA4dW5kZWZpbmVkXHVGRjA5XHVGRjFBXHU1NDJGXHU3NTI4XHU5RUQ4XHU4QkE0IERlYnVnTG9nZ2VyXHVGRjA4RWZmZWN0LmxvZ0RlYnVnXHVGRjA5XHVGRjFCXG4gKiAgIC0gXHU2M0QwXHU0RjlCXHU1MUZEXHU2NTcwXHVGRjFBXHU0RjdGXHU3NTI4XHU4MUVBXHU1QjlBXHU0RTQ5IGxvZ2dlcihvcCkgXHU2NkZGXHU0RUUzXHU5RUQ4XHU4QkE0XHU4ODRDXHU0RTNBXHVGRjFCXG4gKiAgIC0gXHU2NjNFXHU1RjBGIGZhbHNlXHVGRjFBXHU0RTBEXHU4RkZEXHU1MkEwIERlYnVnTG9nZ2VyIFx1NEUyRFx1OTVGNFx1NEVGNlx1MzAwMlxuICogLSBvYnNlcnZlcjpcbiAqICAgLSBcdTY3MkFcdThCQkVcdTdGNkVcdUZGMDh1bmRlZmluZWRcdUZGMDlcdUZGMUFcdTU0MkZcdTc1MjggRGVidWdPYnNlcnZlclx1RkYwQ1x1NEY3Rlx1NzUyOFx1OUVEOFx1OEJBNFx1OTE0RFx1N0Y2RVx1RkYxQlxuICogICAtIFx1NjNEMFx1NEY5QiBEZWJ1Z09ic2VydmVyQ29uZmlnXHVGRjFBXHU2MzA5XHU5MTREXHU3RjZFXHU1NDJGXHU3NTI4IERlYnVnT2JzZXJ2ZXJcdUZGMUJcbiAqICAgLSBcdTY2M0VcdTVGMEYgZmFsc2VcdUZGMUFcdTRFMERcdThGRkRcdTUyQTAgRGVidWdPYnNlcnZlciBcdTRFMkRcdTk1RjRcdTRFRjZcdTMwMDJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaXRoRGVidWdPcHRpb25zIHtcbiAgcmVhZG9ubHkgbG9nZ2VyPzogRGVidWdMb2dnZXJDb25maWdbXCJsb2dnZXJcIl0gfCBmYWxzZVxuICByZWFkb25seSBvYnNlcnZlcj86IERlYnVnT2JzZXJ2ZXJDb25maWcgfCBmYWxzZVxufVxuXG4vKipcbiAqIHdpdGhEZWJ1Z1x1RkYxQVxuICogLSBcdTU3MjhcdTczQjBcdTY3MDkgTWlkZGxld2FyZVN0YWNrIFx1NEUwQVx1OEZGRFx1NTJBMCBEZWJ1Z0xvZ2dlciArIERlYnVnT2JzZXJ2ZXIgXHU5ODg0XHU4QkJFXHVGRjFCXG4gKiAtIFx1NjUyRlx1NjMwMVx1OTAxQVx1OEZDNyBvcHRpb25zIFx1NjNBN1x1NTIzNiBsb2dnZXIgLyBvYnNlcnZlciBcdTY2MkZcdTU0MjZcdTU0MkZcdTc1MjhcdTUzQ0FcdTUxNzZcdTkxNERcdTdGNkVcdUZGMUJcbiAqIC0gXHU4RkQ0XHU1NkRFXHU2NUIwXHU3Njg0IHN0YWNrXHVGRjBDXHU0RTBEXHU0RkVFXHU2NTM5XHU1MzlGXHU2NTcwXHU3RUM0XHUzMDAyXG4gKlxuICogXHU1MTc4XHU1NzhCXHU3NTI4XHU2Q0Q1XHVGRjFBXG4gKlxuICogICBsZXQgc3RhY2s6IE1pZGRsZXdhcmVTdGFjayA9IFttZXRyaWNzLCB0aW1pbmddXG4gKiAgIHN0YWNrID0gTWlkZGxld2FyZS53aXRoRGVidWcoc3RhY2ssIHtcbiAqICAgICBsb2dnZXI6IChvcCkgPT4gY29uc29sZS5sb2cob3Aua2luZCwgb3AubmFtZSksXG4gKiAgICAgb2JzZXJ2ZXI6IHsgZmlsdGVyOiAob3ApID0+IG9wLmtpbmQgIT09IFwic2VydmljZVwiIH0sXG4gKiAgIH0pXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoRGVidWcgPSAoXG4gIHN0YWNrOiBNaWRkbGV3YXJlU3RhY2ssXG4gIG9wdGlvbnM/OiBXaXRoRGVidWdPcHRpb25zLFxuKTogTWlkZGxld2FyZVN0YWNrID0+IHtcbiAgbGV0IG5leHQgPSBzdGFja1xuXG4gIC8vIERlYnVnTG9nZ2VyXHVGRjFBXHU5RUQ4XHU4QkE0XHU1RjAwXHU1NDJGXHVGRjBDXHU5NjY0XHU5NzVFXHU2NjNFXHU1RjBGIGxvZ2dlciA9PT0gZmFsc2VcdTMwMDJcbiAgaWYgKG9wdGlvbnM/LmxvZ2dlciAhPT0gZmFsc2UpIHtcbiAgICBjb25zdCBsb2dnZXJDb25maWc6IERlYnVnTG9nZ2VyQ29uZmlnIHwgdW5kZWZpbmVkID1cbiAgICAgIHR5cGVvZiBvcHRpb25zPy5sb2dnZXIgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/IHsgbG9nZ2VyOiBvcHRpb25zLmxvZ2dlciB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgbmV4dCA9IGFwcGx5RGVidWcobmV4dCwgbG9nZ2VyQ29uZmlnKVxuICB9XG5cbiAgLy8gRGVidWdPYnNlcnZlclx1RkYxQVx1OUVEOFx1OEJBNFx1NUYwMFx1NTQyRlx1RkYwQ1x1OTY2NFx1OTc1RVx1NjYzRVx1NUYwRiBvYnNlcnZlciA9PT0gZmFsc2VcdTMwMDJcbiAgaWYgKG9wdGlvbnM/Lm9ic2VydmVyICE9PSBmYWxzZSkge1xuICAgIC8vIFx1OEZEOVx1OTFDQ1x1NURGMlx1N0VDRlx1OTAxQVx1OEZDN1x1Njc2MVx1NEVGNlx1NjM5Mlx1OTY2NFx1NEU4NiBvYnNlcnZlciA9PT0gZmFsc2VcdUZGMENcdTUzRUFcdTk3MDBcdTg5ODFcdTU3MjhcdTY3MDlcdTkxNERcdTdGNkVcdTVCRjlcdThDNjFcdTY1RjZcdTkwMEZcdTRGMjBcdUZGMUJcbiAgICAvLyB1bmRlZmluZWQgXHU4ODY4XHU3OTNBXHU0RjdGXHU3NTI4IERlYnVnT2JzZXJ2ZXIgXHU5RUQ4XHU4QkE0XHU4ODRDXHU0RTNBXHUzMDAyXG4gICAgY29uc3Qgb2JzZXJ2ZXJPcHRpb24gPSBvcHRpb25zPy5vYnNlcnZlclxuICAgIGNvbnN0IG9ic2VydmVyQ29uZmlnOiBEZWJ1Z09ic2VydmVyQ29uZmlnIHwgdW5kZWZpbmVkID1cbiAgICAgIG9ic2VydmVyT3B0aW9uID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvYnNlcnZlck9wdGlvblxuICAgIG5leHQgPSBhcHBseURlYnVnT2JzZXJ2ZXIobmV4dCwgb2JzZXJ2ZXJDb25maWcpXG4gIH1cblxuICByZXR1cm4gbmV4dFxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQUlBLFNBQVMsY0FBYztBQW9CaEIsSUFBTSxrQkFBa0IsQ0FDN0IsV0FFQSxDQUFVLE9BQ1IsT0FBTyxJQUFJLGFBQWE7QUFFdEIsTUFBSSxHQUFHLE1BQU0sUUFBUSxrQkFBa0I7QUFDckMsV0FBTyxPQUFPLEdBQUc7QUFBQSxFQUNuQjtBQUNBLE1BQUksUUFBUSxRQUFRO0FBQ2xCLFdBQU8sT0FBTyxFQUFFO0FBQUEsRUFDbEIsT0FBTztBQUNMLFdBQU8sT0FBTztBQUFBLE1BQ1osbUJBQW1CLEdBQUcsSUFBSSxTQUFTLEdBQUcsSUFBSTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUNBLFNBQU8sT0FBTyxHQUFHO0FBQ25CLENBQUM7QUFPRSxJQUFNLGFBQWEsQ0FDeEIsT0FDQSxXQUNvQixDQUFDLEdBQUcsT0FBTyxnQkFBZ0IsTUFBTSxDQUFDO0FBd0JqRCxJQUFNLG9CQUFvQixDQUMvQixXQUVBLENBQVUsT0FDUixPQUFPLElBQUksYUFBYTtBQUV0QixNQUFJLEdBQUcsTUFBTSxRQUFRLGtCQUFrQjtBQUNyQyxXQUFPLE9BQU8sR0FBRztBQUFBLEVBQ25CO0FBQ0EsTUFBSSxDQUFDLFFBQVEsVUFBVSxPQUFPLE9BQU8sRUFBRSxHQUFHO0FBQ3hDLFVBQU0sT0FBWSxHQUFHLFFBQVEsQ0FBQztBQUM5QixVQUFNLFNBQVM7QUFBQSxNQUNiLElBQUksR0FBRztBQUFBLE1BQ1AsTUFBTSxHQUFHO0FBQUEsTUFDVCxNQUFNLEdBQUc7QUFBQSxNQUNULFNBQVMsR0FBRztBQUFBLE1BQ1osTUFBTSxHQUFHO0FBQUEsSUFDWDtBQUNBLFdBQWEsT0FBTztBQUFBLE1BQ2xCLE1BQU07QUFBQSxNQUNOLFVBQVUsT0FBTyxLQUFLLGFBQWEsV0FBVyxLQUFLLFdBQVc7QUFBQSxNQUM5RCxZQUFZLE9BQU8sS0FBSyxlQUFlLFdBQVcsS0FBSyxhQUFhO0FBQUEsTUFDcEUsY0FBYyxPQUFPLEtBQUssaUJBQWlCLFdBQVcsS0FBSyxlQUFlO0FBQUEsTUFDMUUsUUFDRSxPQUFPLEtBQUssV0FBVyxZQUFZLE9BQU8sU0FBUyxLQUFLLE1BQU0sSUFDMUQsS0FBSyxNQUFNLEtBQUssTUFBTSxJQUN0QjtBQUFBLE1BQ04sTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0g7QUFDQSxTQUFPLE9BQU8sR0FBRztBQUNuQixDQUFDO0FBT0UsSUFBTSxxQkFBcUIsQ0FDaEMsT0FDQSxXQUNvQixDQUFDLEdBQUcsT0FBTyxrQkFBa0IsTUFBTSxDQUFDO0FBbUNuRCxJQUFNLFlBQVksQ0FDdkIsT0FDQSxZQUNvQjtBQUNwQixNQUFJLE9BQU87QUFHWCxNQUFJLFNBQVMsV0FBVyxPQUFPO0FBQzdCLFVBQU0sZUFDSixPQUFPLFNBQVMsV0FBVyxhQUN2QixFQUFFLFFBQVEsUUFBUSxPQUFPLElBQ3pCO0FBQ04sV0FBTyxXQUFXLE1BQU0sWUFBWTtBQUFBLEVBQ3RDO0FBR0EsTUFBSSxTQUFTLGFBQWEsT0FBTztBQUcvQixVQUFNLGlCQUFpQixTQUFTO0FBQ2hDLFVBQU0saUJBQ0osbUJBQW1CLFNBQVksU0FBWTtBQUM3QyxXQUFPLG1CQUFtQixNQUFNLGNBQWM7QUFBQSxFQUNoRDtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K