@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-LTFCYZQ6.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,153 @@
1
+ // @logixjs/core subpath bundles for @logixjs/sandbox
2
+
3
+ import {
4
+ RunSessionTag,
5
+ make,
6
+ run
7
+ } from "./chunk-W365QUZ5.js";
8
+ import {
9
+ record
10
+ } from "./chunk-SH7TP5CJ.js";
11
+ import {
12
+ EffectOpMiddlewareTag
13
+ } from "./chunk-SI5OKFFY.js";
14
+ import {
15
+ isReadQuery
16
+ } from "./chunk-LWI7BXFN.js";
17
+
18
+ // ../logix-core/src/internal/runtime/core/FlowRuntime.ts
19
+ import { Effect, Stream, Ref, Option } from "../effect.js";
20
+ var getMiddlewareStack = () => Effect.serviceOption(EffectOpMiddlewareTag).pipe(
21
+ Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.stack : [])
22
+ );
23
+ var getRuntimeScope = (runtime) => {
24
+ if (!runtime) return {};
25
+ if (typeof runtime !== "object" && typeof runtime !== "function") return {};
26
+ const scope = runtime;
27
+ return {
28
+ moduleId: typeof scope.moduleId === "string" ? scope.moduleId : void 0,
29
+ instanceId: typeof scope.instanceId === "string" ? scope.instanceId : void 0
30
+ };
31
+ };
32
+ var resolveEffect = (eff, payload) => typeof eff === "function" ? eff(payload) : eff;
33
+ var make2 = (runtime, runtimeInternals) => {
34
+ const scope = getRuntimeScope(runtime);
35
+ const resolveConcurrencyLimit = () => runtimeInternals ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(Effect.map((p) => p.concurrencyLimit)) : Effect.succeed(16);
36
+ const runAsFlowOp = (name, payload, eff, options) => Effect.gen(function* () {
37
+ const stack = yield* getMiddlewareStack();
38
+ const meta = {
39
+ ...options?.meta ?? {},
40
+ policy: options?.policy,
41
+ tags: options?.tags,
42
+ trace: options?.trace,
43
+ moduleId: scope.moduleId,
44
+ instanceId: scope.instanceId
45
+ };
46
+ if (!(typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq))) {
47
+ const sessionOpt = yield* Effect.serviceOption(RunSessionTag);
48
+ if (Option.isSome(sessionOpt)) {
49
+ const key = meta.instanceId ?? "global";
50
+ meta.opSeq = sessionOpt.value.local.nextSeq("opSeq", key);
51
+ }
52
+ }
53
+ const op = make({
54
+ kind: "flow",
55
+ name,
56
+ payload,
57
+ effect: eff,
58
+ meta
59
+ });
60
+ return yield* run(op, stack);
61
+ });
62
+ const runEffect = (eff) => (payload) => resolveEffect(eff, payload);
63
+ const runStreamSequential = (eff, options) => (stream) => Stream.runForEach(
64
+ stream,
65
+ (payload) => runAsFlowOp("flow.run", payload, runEffect(eff)(payload), options)
66
+ );
67
+ const runStreamParallel = (eff, options) => (stream) => Effect.gen(function* () {
68
+ const concurrency = yield* resolveConcurrencyLimit();
69
+ return yield* Stream.runDrain(
70
+ stream.pipe(
71
+ Stream.mapEffect(
72
+ (payload) => runAsFlowOp("flow.runParallel", payload, runEffect(eff)(payload), options),
73
+ { concurrency }
74
+ )
75
+ )
76
+ ).pipe(
77
+ Effect.catchAllCause(
78
+ (cause) => record({
79
+ type: "diagnostic",
80
+ moduleId: scope.moduleId,
81
+ instanceId: scope.instanceId,
82
+ code: "flow::unhandled_failure",
83
+ severity: "error",
84
+ message: "Flow watcher (runParallel) failed with an unhandled error.",
85
+ hint: "Handle errors explicitly inside the watcher (catch/catchAll) or write back via TaskRunner failure; avoid silent failures.",
86
+ kind: "flow_unhandled_failure",
87
+ trigger: {
88
+ kind: "flow",
89
+ name: "runParallel"
90
+ }
91
+ }).pipe(Effect.zipRight(Effect.failCause(cause)))
92
+ )
93
+ );
94
+ });
95
+ return {
96
+ fromAction: (predicate) => runtime.actions$.pipe(Stream.filter(predicate)),
97
+ fromState: (selectorOrQuery) => runtime.changes(isReadQuery(selectorOrQuery) ? selectorOrQuery.select : selectorOrQuery),
98
+ debounce: (ms) => (stream) => Stream.debounce(stream, ms),
99
+ throttle: (ms) => (stream) => Stream.throttle(stream, {
100
+ cost: () => 1,
101
+ units: 1,
102
+ duration: ms,
103
+ strategy: "enforce"
104
+ }),
105
+ filter: (predicate) => (stream) => Stream.filter(stream, predicate),
106
+ run: (eff, options) => (stream) => runStreamSequential(eff, options)(stream),
107
+ runParallel: (eff, options) => (stream) => runStreamParallel(eff, options)(stream),
108
+ runLatest: (eff, options) => (stream) => Stream.runDrain(
109
+ Stream.map(
110
+ stream,
111
+ (payload) => runAsFlowOp(
112
+ "flow.runLatest",
113
+ payload,
114
+ runEffect(eff)(payload),
115
+ options
116
+ )
117
+ ).pipe(
118
+ Stream.flatMap((effect) => Stream.fromEffect(effect), {
119
+ switch: true
120
+ })
121
+ )
122
+ ),
123
+ runExhaust: (eff, options) => (stream) => Effect.gen(function* () {
124
+ const concurrency = yield* resolveConcurrencyLimit();
125
+ const busyRef = yield* Ref.make(false);
126
+ const mapper = (payload) => Effect.gen(function* () {
127
+ const acquired = yield* Ref.modify(
128
+ busyRef,
129
+ (busy) => busy ? [false, busy] : [true, true]
130
+ );
131
+ if (!acquired) {
132
+ return;
133
+ }
134
+ try {
135
+ yield* runAsFlowOp(
136
+ "flow.runExhaust",
137
+ payload,
138
+ runEffect(eff)(payload),
139
+ options
140
+ );
141
+ } finally {
142
+ yield* Ref.set(busyRef, false);
143
+ }
144
+ });
145
+ return yield* Stream.runDrain(stream.pipe(Stream.mapEffect(mapper, { concurrency })));
146
+ })
147
+ };
148
+ };
149
+
150
+ export {
151
+ make2 as make
152
+ };
153
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0Zsb3dSdW50aW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBFZmZlY3QsIFN0cmVhbSwgUmVmLCBPcHRpb24gfSBmcm9tICdlZmZlY3QnXG5pbXBvcnQgdHlwZSB7IEFueU1vZHVsZVNoYXBlLCBMb2dpY0VmZmVjdCwgTW9kdWxlUnVudGltZSwgU3RhdGVPZiwgQWN0aW9uT2YsIE1vZHVsZVNoYXBlIH0gZnJvbSAnLi9tb2R1bGUuanMnXG5pbXBvcnQgdHlwZSAqIGFzIExvZ2ljIGZyb20gJy4vTG9naWNNaWRkbGV3YXJlLmpzJ1xuaW1wb3J0ICogYXMgRWZmZWN0T3AgZnJvbSAnLi4vLi4vZWZmZWN0LW9wLmpzJ1xuaW1wb3J0ICogYXMgRWZmZWN0T3BDb3JlIGZyb20gJy4vRWZmZWN0T3BDb3JlLmpzJ1xuaW1wb3J0IHsgUnVuU2Vzc2lvblRhZyB9IGZyb20gJy4uLy4uL29ic2VydmFiaWxpdHkvcnVuU2Vzc2lvbi5qcydcbmltcG9ydCB0eXBlIHsgUnVudGltZUludGVybmFscyB9IGZyb20gJy4vUnVudGltZUludGVybmFscy5qcydcbmltcG9ydCAqIGFzIERlYnVnIGZyb20gJy4vRGVidWdTaW5rLmpzJ1xuaW1wb3J0ICogYXMgUmVhZFF1ZXJ5IGZyb20gJy4vUmVhZFF1ZXJ5LmpzJ1xuXG5jb25zdCBnZXRNaWRkbGV3YXJlU3RhY2sgPSAoKTogRWZmZWN0LkVmZmVjdDxFZmZlY3RPcC5NaWRkbGV3YXJlU3RhY2ssIG5ldmVyLCBhbnk+ID0+XG4gIEVmZmVjdC5zZXJ2aWNlT3B0aW9uKEVmZmVjdE9wQ29yZS5FZmZlY3RPcE1pZGRsZXdhcmVUYWcpLnBpcGUoXG4gICAgRWZmZWN0Lm1hcCgobWF5YmUpID0+IChPcHRpb24uaXNTb21lKG1heWJlKSA/IG1heWJlLnZhbHVlLnN0YWNrIDogW10pKSxcbiAgKVxuXG5jb25zdCBnZXRSdW50aW1lU2NvcGUgPSAocnVudGltZTogdW5rbm93bik6IHsgcmVhZG9ubHkgbW9kdWxlSWQ/OiBzdHJpbmc7IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiBzdHJpbmcgfSA9PiB7XG4gIGlmICghcnVudGltZSkgcmV0dXJuIHt9XG4gIGlmICh0eXBlb2YgcnVudGltZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIHJ1bnRpbWUgIT09ICdmdW5jdGlvbicpIHJldHVybiB7fVxuICBjb25zdCBzY29wZSA9IHJ1bnRpbWUgYXMgeyByZWFkb25seSBtb2R1bGVJZD86IHVua25vd247IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiB1bmtub3duIH1cbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVJZDogdHlwZW9mIHNjb3BlLm1vZHVsZUlkID09PSAnc3RyaW5nJyA/IHNjb3BlLm1vZHVsZUlkIDogdW5kZWZpbmVkLFxuICAgIGluc3RhbmNlSWQ6IHR5cGVvZiBzY29wZS5pbnN0YW5jZUlkID09PSAnc3RyaW5nJyA/IHNjb3BlLmluc3RhbmNlSWQgOiB1bmRlZmluZWQsXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGk8U2ggZXh0ZW5kcyBNb2R1bGVTaGFwZTxhbnksIGFueT4sIFIgPSBuZXZlcj4ge1xuICByZWFkb25seSBmcm9tQWN0aW9uOiA8VCBleHRlbmRzIEFjdGlvbk9mPFNoPj4ocHJlZGljYXRlOiAoYTogQWN0aW9uT2Y8U2g+KSA9PiBhIGlzIFQpID0+IFN0cmVhbS5TdHJlYW08VD5cblxuICByZWFkb25seSBmcm9tU3RhdGU6IHtcbiAgICA8Vj4oc2VsZWN0b3I6IChzOiBTdGF0ZU9mPFNoPikgPT4gVik6IFN0cmVhbS5TdHJlYW08Vj5cbiAgICA8Vj4ocXVlcnk6IFJlYWRRdWVyeS5SZWFkUXVlcnk8U3RhdGVPZjxTaD4sIFY+KTogU3RyZWFtLlN0cmVhbTxWPlxuICB9XG5cbiAgcmVhZG9ubHkgZGVib3VuY2U6IDxWPihtczogbnVtYmVyKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgdGhyb3R0bGU6IDxWPihtczogbnVtYmVyKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgZmlsdGVyOiA8Vj4ocHJlZGljYXRlOiAodmFsdWU6IFYpID0+IGJvb2xlYW4pID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IFN0cmVhbS5TdHJlYW08Vj5cblxuICByZWFkb25seSBydW46IDxWLCBBID0gdm9pZCwgRSA9IG5ldmVyLCBSMiA9IHVua25vd24+KFxuICAgIGVmZjogTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgQSwgRT4gfCAoKHBheWxvYWQ6IFYpID0+IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCB2b2lkLCBFPlxuXG4gIHJlYWRvbmx5IHJ1blBhcmFsbGVsOiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+IHwgKChwYXlsb2FkOiBWKSA9PiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCBBLCBFPiksXG4gICAgb3B0aW9ucz86IExvZ2ljLk9wZXJhdGlvbk9wdGlvbnMsXG4gICkgPT4gKHN0cmVhbTogU3RyZWFtLlN0cmVhbTxWPikgPT4gTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgdm9pZCwgRT5cblxuICByZWFkb25seSBydW5MYXRlc3Q6IDxWLCBBID0gdm9pZCwgRSA9IG5ldmVyLCBSMiA9IHVua25vd24+KFxuICAgIGVmZjogTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgQSwgRT4gfCAoKHBheWxvYWQ6IFYpID0+IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCB2b2lkLCBFPlxuXG4gIHJlYWRvbmx5IHJ1bkV4aGF1c3Q6IDxWLCBBID0gdm9pZCwgRSA9IG5ldmVyLCBSMiA9IHVua25vd24+KFxuICAgIGVmZjogTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgQSwgRT4gfCAoKHBheWxvYWQ6IFYpID0+IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCB2b2lkLCBFPlxufVxuXG5jb25zdCByZXNvbHZlRWZmZWN0ID0gPFQsIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFIsIEEsIEU+KFxuICBlZmY6IExvZ2ljRWZmZWN0PFNoLCBSLCBBLCBFPiB8ICgocGF5bG9hZDogVCkgPT4gTG9naWNFZmZlY3Q8U2gsIFIsIEEsIEU+KSxcbiAgcGF5bG9hZDogVCxcbik6IExvZ2ljRWZmZWN0PFNoLCBSLCBBLCBFPiA9PlxuICB0eXBlb2YgZWZmID09PSAnZnVuY3Rpb24nID8gKGVmZiBhcyAocDogVCkgPT4gTG9naWNFZmZlY3Q8U2gsIFIsIEEsIEU+KShwYXlsb2FkKSA6IGVmZlxuXG5leHBvcnQgY29uc3QgbWFrZSA9IDxTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlLCBSID0gbmV2ZXI+KFxuICBydW50aW1lOiBNb2R1bGVSdW50aW1lPFN0YXRlT2Y8U2g+LCBBY3Rpb25PZjxTaD4+LFxuICBydW50aW1lSW50ZXJuYWxzPzogUnVudGltZUludGVybmFscyxcbik6IEFwaTxTaCwgUj4gPT4ge1xuICBjb25zdCBzY29wZSA9IGdldFJ1bnRpbWVTY29wZShydW50aW1lKVxuICBjb25zdCByZXNvbHZlQ29uY3VycmVuY3lMaW1pdCA9ICgpOiBFZmZlY3QuRWZmZWN0PG51bWJlciB8ICd1bmJvdW5kZWQnLCBuZXZlciwgYW55PiA9PlxuICAgIHJ1bnRpbWVJbnRlcm5hbHNcbiAgICAgID8gcnVudGltZUludGVybmFscy5jb25jdXJyZW5jeS5yZXNvbHZlQ29uY3VycmVuY3lQb2xpY3koKS5waXBlKEVmZmVjdC5tYXAoKHApID0+IHAuY29uY3VycmVuY3lMaW1pdCkpXG4gICAgICA6IEVmZmVjdC5zdWNjZWVkKDE2KVxuXG4gIGNvbnN0IHJ1bkFzRmxvd09wID0gPEEsIEUsIFIyLCBWPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogVixcbiAgICBlZmY6IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+LFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApOiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCBBLCBFPiA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgIGNvbnN0IHN0YWNrID0geWllbGQqIGdldE1pZGRsZXdhcmVTdGFjaygpXG4gICAgICBjb25zdCBtZXRhOiBhbnkgPSB7XG4gICAgICAgIC4uLihvcHRpb25zPy5tZXRhID8/IHt9KSxcbiAgICAgICAgcG9saWN5OiBvcHRpb25zPy5wb2xpY3ksXG4gICAgICAgIHRhZ3M6IG9wdGlvbnM/LnRhZ3MsXG4gICAgICAgIHRyYWNlOiBvcHRpb25zPy50cmFjZSxcbiAgICAgICAgbW9kdWxlSWQ6IHNjb3BlLm1vZHVsZUlkLFxuICAgICAgICBpbnN0YW5jZUlkOiBzY29wZS5pbnN0YW5jZUlkLFxuICAgICAgfVxuXG4gICAgICBpZiAoISh0eXBlb2YgbWV0YS5vcFNlcSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKG1ldGEub3BTZXEpKSkge1xuICAgICAgICBjb25zdCBzZXNzaW9uT3B0ID0geWllbGQqIEVmZmVjdC5zZXJ2aWNlT3B0aW9uKFJ1blNlc3Npb25UYWcpXG4gICAgICAgIGlmIChPcHRpb24uaXNTb21lKHNlc3Npb25PcHQpKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gbWV0YS5pbnN0YW5jZUlkID8/ICdnbG9iYWwnXG4gICAgICAgICAgbWV0YS5vcFNlcSA9IHNlc3Npb25PcHQudmFsdWUubG9jYWwubmV4dFNlcSgnb3BTZXEnLCBrZXkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3AgPSBFZmZlY3RPcC5tYWtlPEEsIEUsIGFueT4oe1xuICAgICAgICBraW5kOiAnZmxvdycsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIGVmZmVjdDogZWZmIGFzIGFueSxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4geWllbGQqIEVmZmVjdE9wLnJ1bihvcCwgc3RhY2spXG4gICAgfSkgYXMgYW55XG5cbiAgY29uc3QgcnVuRWZmZWN0ID1cbiAgICA8VCwgQSwgRSwgUjI+KFxuICAgICAgZWZmOiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCBBLCBFPiB8ICgocGF5bG9hZDogVCkgPT4gTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgICkgPT5cbiAgICAocGF5bG9hZDogVCkgPT5cbiAgICAgIHJlc29sdmVFZmZlY3Q8VCwgU2gsIFIgJiBSMiwgQSwgRT4oZWZmLCBwYXlsb2FkKVxuXG4gIGNvbnN0IHJ1blN0cmVhbVNlcXVlbnRpYWwgPVxuICAgIDxULCBBLCBFLCBSMj4oXG4gICAgICBlZmY6IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+IHwgKChwYXlsb2FkOiBUKSA9PiBMb2dpY0VmZmVjdDxTaCwgUiAmIFIyLCBBLCBFPiksXG4gICAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgICApID0+XG4gICAgKHN0cmVhbTogU3RyZWFtLlN0cmVhbTxUPik6IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIHZvaWQsIEU+ID0+XG4gICAgICBTdHJlYW0ucnVuRm9yRWFjaChzdHJlYW0sIChwYXlsb2FkKSA9PlxuICAgICAgICBydW5Bc0Zsb3dPcDxBLCBFLCBSMiwgVD4oJ2Zsb3cucnVuJywgcGF5bG9hZCwgcnVuRWZmZWN0PFQsIEEsIEUsIFIyPihlZmYpKHBheWxvYWQpLCBvcHRpb25zKSxcbiAgICAgIClcblxuICBjb25zdCBydW5TdHJlYW1QYXJhbGxlbCA9XG4gICAgPFQsIEEsIEUsIFIyPihcbiAgICAgIGVmZjogTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgQSwgRT4gfCAoKHBheWxvYWQ6IFQpID0+IExvZ2ljRWZmZWN0PFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICAgICkgPT5cbiAgICAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFQ+KTogTG9naWNFZmZlY3Q8U2gsIFIgJiBSMiwgdm9pZCwgRT4gPT5cbiAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQoKVxuXG4gICAgICAgIHJldHVybiB5aWVsZCogU3RyZWFtLnJ1bkRyYWluKFxuICAgICAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAgICAgU3RyZWFtLm1hcEVmZmVjdChcbiAgICAgICAgICAgICAgKHBheWxvYWQpID0+XG4gICAgICAgICAgICAgICAgcnVuQXNGbG93T3A8QSwgRSwgUjIsIFQ+KCdmbG93LnJ1blBhcmFsbGVsJywgcGF5bG9hZCwgcnVuRWZmZWN0PFQsIEEsIEUsIFIyPihlZmYpKHBheWxvYWQpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgeyBjb25jdXJyZW5jeSB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgRWZmZWN0LmNhdGNoQWxsQ2F1c2UoKGNhdXNlKSA9PlxuICAgICAgICAgICAgRGVidWcucmVjb3JkKHtcbiAgICAgICAgICAgICAgdHlwZTogJ2RpYWdub3N0aWMnLFxuICAgICAgICAgICAgICBtb2R1bGVJZDogc2NvcGUubW9kdWxlSWQsXG4gICAgICAgICAgICAgIGluc3RhbmNlSWQ6IHNjb3BlLmluc3RhbmNlSWQsXG4gICAgICAgICAgICAgIGNvZGU6ICdmbG93Ojp1bmhhbmRsZWRfZmFpbHVyZScsXG4gICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnRmxvdyB3YXRjaGVyIChydW5QYXJhbGxlbCkgZmFpbGVkIHdpdGggYW4gdW5oYW5kbGVkIGVycm9yLicsXG4gICAgICAgICAgICAgIGhpbnQ6ICdIYW5kbGUgZXJyb3JzIGV4cGxpY2l0bHkgaW5zaWRlIHRoZSB3YXRjaGVyIChjYXRjaC9jYXRjaEFsbCkgb3Igd3JpdGUgYmFjayB2aWEgVGFza1J1bm5lciBmYWlsdXJlOyBhdm9pZCBzaWxlbnQgZmFpbHVyZXMuJyxcbiAgICAgICAgICAgICAga2luZDogJ2Zsb3dfdW5oYW5kbGVkX2ZhaWx1cmUnLFxuICAgICAgICAgICAgICB0cmlnZ2VyOiB7XG4gICAgICAgICAgICAgICAga2luZDogJ2Zsb3cnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdydW5QYXJhbGxlbCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KS5waXBlKEVmZmVjdC56aXBSaWdodChFZmZlY3QuZmFpbENhdXNlKGNhdXNlKSkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0pIGFzIGFueVxuXG4gIHJldHVybiB7XG4gICAgZnJvbUFjdGlvbjogPFQgZXh0ZW5kcyBBY3Rpb25PZjxTaD4+KHByZWRpY2F0ZTogKGE6IEFjdGlvbk9mPFNoPikgPT4gYSBpcyBUKSA9PlxuICAgICAgcnVudGltZS5hY3Rpb25zJC5waXBlKFN0cmVhbS5maWx0ZXIocHJlZGljYXRlKSksXG5cbiAgICBmcm9tU3RhdGU6IDxWPihzZWxlY3Rvck9yUXVlcnk6ICgoczogU3RhdGVPZjxTaD4pID0+IFYpIHwgUmVhZFF1ZXJ5LlJlYWRRdWVyeTxTdGF0ZU9mPFNoPiwgVj4pID0+XG4gICAgICBydW50aW1lLmNoYW5nZXMoUmVhZFF1ZXJ5LmlzUmVhZFF1ZXJ5KHNlbGVjdG9yT3JRdWVyeSkgPyBzZWxlY3Rvck9yUXVlcnkuc2VsZWN0IDogc2VsZWN0b3JPclF1ZXJ5KSxcblxuICAgIGRlYm91bmNlOiAobXM6IG51bWJlcikgPT4gKHN0cmVhbSkgPT4gU3RyZWFtLmRlYm91bmNlKHN0cmVhbSwgbXMpLFxuXG4gICAgdGhyb3R0bGU6IChtczogbnVtYmVyKSA9PiAoc3RyZWFtKSA9PlxuICAgICAgU3RyZWFtLnRocm90dGxlKHN0cmVhbSwge1xuICAgICAgICBjb3N0OiAoKSA9PiAxLFxuICAgICAgICB1bml0czogMSxcbiAgICAgICAgZHVyYXRpb246IG1zLFxuICAgICAgICBzdHJhdGVneTogJ2VuZm9yY2UnLFxuICAgICAgfSksXG5cbiAgICBmaWx0ZXI6IChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSA9PiAoc3RyZWFtKSA9PiBTdHJlYW0uZmlsdGVyKHN0cmVhbSwgcHJlZGljYXRlKSxcblxuICAgIHJ1bjogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT4gcnVuU3RyZWFtU2VxdWVudGlhbDxhbnksIGFueSwgYW55LCBhbnk+KGVmZiwgb3B0aW9ucykoc3RyZWFtKSxcblxuICAgIHJ1blBhcmFsbGVsOiAoZWZmLCBvcHRpb25zKSA9PiAoc3RyZWFtKSA9PiBydW5TdHJlYW1QYXJhbGxlbDxhbnksIGFueSwgYW55LCBhbnk+KGVmZiwgb3B0aW9ucykoc3RyZWFtKSxcblxuICAgIHJ1bkxhdGVzdDogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT5cbiAgICAgIFN0cmVhbS5ydW5EcmFpbihcbiAgICAgICAgU3RyZWFtLm1hcChzdHJlYW0sIChwYXlsb2FkKSA9PlxuICAgICAgICAgIHJ1bkFzRmxvd09wPGFueSwgYW55LCBhbnksIGFueT4oXG4gICAgICAgICAgICAnZmxvdy5ydW5MYXRlc3QnLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHJ1bkVmZmVjdDxhbnksIGFueSwgYW55LCBhbnk+KGVmZikocGF5bG9hZCksXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICksXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBTdHJlYW0uZmxhdE1hcCgoZWZmZWN0KSA9PiBTdHJlYW0uZnJvbUVmZmVjdChlZmZlY3QpLCB7XG4gICAgICAgICAgICBzd2l0Y2g6IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuXG4gICAgcnVuRXhoYXVzdDogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT5cbiAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQoKVxuICAgICAgICBjb25zdCBidXN5UmVmID0geWllbGQqIFJlZi5tYWtlKGZhbHNlKVxuICAgICAgICBjb25zdCBtYXBwZXIgPSAocGF5bG9hZDogYW55KSA9PlxuICAgICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjcXVpcmVkID0geWllbGQqIFJlZi5tb2RpZnkoYnVzeVJlZiwgKGJ1c3kpID0+XG4gICAgICAgICAgICAgIGJ1c3kgPyAoW2ZhbHNlLCBidXN5XSBhcyBjb25zdCkgOiAoW3RydWUsIHRydWVdIGFzIGNvbnN0KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmICghYWNxdWlyZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB5aWVsZCogcnVuQXNGbG93T3A8YW55LCBhbnksIGFueSwgYW55PihcbiAgICAgICAgICAgICAgICAnZmxvdy5ydW5FeGhhdXN0JyxcbiAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgIHJ1bkVmZmVjdDxhbnksIGFueSwgYW55LCBhbnk+KGVmZikocGF5bG9hZCksXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgeWllbGQqIFJlZi5zZXQoYnVzeVJlZiwgZmFsc2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4geWllbGQqIFN0cmVhbS5ydW5EcmFpbihzdHJlYW0ucGlwZShTdHJlYW0ubWFwRWZmZWN0KG1hcHBlciwgeyBjb25jdXJyZW5jeSB9KSkpXG4gICAgICB9KSxcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxRQUFRLFFBQVEsS0FBSyxjQUFjO0FBVTVDLElBQU0scUJBQXFCLE1BQ3pCLE9BQU8sY0FBMkIscUJBQXFCLEVBQUU7QUFBQSxFQUN2RCxPQUFPLElBQUksQ0FBQyxVQUFXLE9BQU8sT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFFO0FBQ3ZFO0FBRUYsSUFBTSxrQkFBa0IsQ0FBQyxZQUFtRjtBQUMxRyxNQUFJLENBQUMsUUFBUyxRQUFPLENBQUM7QUFDdEIsTUFBSSxPQUFPLFlBQVksWUFBWSxPQUFPLFlBQVksV0FBWSxRQUFPLENBQUM7QUFDMUUsUUFBTSxRQUFRO0FBQ2QsU0FBTztBQUFBLElBQ0wsVUFBVSxPQUFPLE1BQU0sYUFBYSxXQUFXLE1BQU0sV0FBVztBQUFBLElBQ2hFLFlBQVksT0FBTyxNQUFNLGVBQWUsV0FBVyxNQUFNLGFBQWE7QUFBQSxFQUN4RTtBQUNGO0FBcUNBLElBQU0sZ0JBQWdCLENBQ3BCLEtBQ0EsWUFFQSxPQUFPLFFBQVEsYUFBYyxJQUEyQyxPQUFPLElBQUk7QUFFOUUsSUFBTUEsUUFBTyxDQUNsQixTQUNBLHFCQUNlO0FBQ2YsUUFBTSxRQUFR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QUFBLE1BQ1AsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLElBQ1osQ0FBQztBQUFBLElBRUgsUUFBUSxDQUFDLGNBQXVDLENBQUMsV0FBVyxPQUFPLE9BQU8sUUFBUSxTQUFTO0FBQUEsSUFFM0YsS0FBSyxDQUFDLEtBQUssWUFBWSxDQUFDLFdBQVcsb0JBQXdDLEtBQUssT0FBTyxFQUFFLE1BQU07QUFBQSxJQUUvRixhQUFhLENBQUMsS0FBSyxZQUFZLENBQUMsV0FBVyxrQkFBc0MsS0FBSyxPQUFPLEVBQUUsTUFBTTtBQUFBLElBRXJHLFdBQVcsQ0FBQyxLQUFLLFlBQVksQ0FBQyxXQUM1QixPQUFPO0FBQUEsTUFDTCxPQUFPO0FBQUEsUUFBSTtBQUFBLFFBQVEsQ0FBQyxZQUNsQjtBQUFBLFVBQ0U7QUFBQSxVQUNBO0FBQUEsVUFDQSxVQUE4QixHQUFHLEVBQUUsT0FBTztBQUFBLFVBQzFDO0FBQUEsUUFDRjtBQUFBLE1BQ0YsRUFBRTtBQUFBLFFBQ0EsT0FBTyxRQUFRLENBQUMsV0FBVyxPQUFPLFdBQVcsTUFBTSxHQUFHO0FBQUEsVUFDcEQsUUFBUTtBQUFBLFFBQ1YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsSUFFRixZQUFZLENBQUMsS0FBSyxZQUFZLENBQUMsV0FDN0IsT0FBTyxJQUFJLGFBQWE7QUFDdEIsWUFBTSxjQUFjLE9BQU8sd0JBQXdCO0FBQ25ELFlBQU0sVUFBVSxPQUFPLElBQUksS0FBSyxLQUFLO0FBQ3JDLFlBQU0sU0FBUyxDQUFDLFlBQ2QsT0FBTyxJQUFJLGFBQWE7QUFDdEIsY0FBTSxXQUFXLE9BQU8sSUFBSTtBQUFBLFVBQU87QUFBQSxVQUFTLENBQUMsU0FDM0MsT0FBUSxDQUFDLE9BQU8sSUFBSSxJQUFlLENBQUMsTUFBTSxJQUFJO0FBQUEsUUFDaEQ7QUFDQSxZQUFJLENBQUMsVUFBVTtBQUNiO0FBQUEsUUFDRjtBQUNBLFlBQUk7QUFDRixpQkFBTztBQUFBLFlBQ0w7QUFBQSxZQUNBO0FBQUEsWUFDQSxVQUE4QixHQUFHLEVBQUUsT0FBTztBQUFBLFlBQzFDO0FBQUEsVUFDRjtBQUFBLFFBQ0YsVUFBRTtBQUNBLGlCQUFPLElBQUksSUFBSSxTQUFTLEtBQUs7QUFBQSxRQUMvQjtBQUFBLE1BQ0YsQ0FBQztBQUVILGFBQU8sT0FBTyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sVUFBVSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUFBLElBQ3RGLENBQUM7QUFBQSxFQUNMO0FBQ0Y7IiwKICAibmFtZXMiOiBbIm1ha2UiXQp9Cg==
@@ -0,0 +1,219 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ exportStaticIr,
5
+ fnv1a32,
6
+ stableStringify
7
+ } from "./chunk-QGIM3FQK.js";
8
+ import {
9
+ getModuleTraitsProgram
10
+ } from "./chunk-6FKWRVP4.js";
11
+ import {
12
+ isJsonValue
13
+ } from "./chunk-RYSSJBGX.js";
14
+
15
+ // ../logix-core/src/internal/reflection/staticIr.ts
16
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
17
+ var isModuleImpl = (value) => isRecord(value) && value._tag === "ModuleImpl" && isRecord(value.module);
18
+ var resolveModuleId = (input) => {
19
+ if (isModuleImpl(input)) {
20
+ const id = input.module.id;
21
+ return typeof id === "string" && id.length > 0 ? id : "unknown";
22
+ }
23
+ if (isRecord(input)) {
24
+ const id = input.id;
25
+ if (typeof id === "string" && id.length > 0) return id;
26
+ const tag = input.tag;
27
+ if (tag && (typeof tag === "object" || typeof tag === "function")) {
28
+ const tagId = tag.id;
29
+ if (typeof tagId === "string" && tagId.length > 0) return tagId;
30
+ }
31
+ }
32
+ return "unknown";
33
+ };
34
+ var resolveModuleTag = (input) => {
35
+ if (isModuleImpl(input)) return input.module;
36
+ if (isRecord(input) && input.tag) return input.tag;
37
+ return void 0;
38
+ };
39
+ var exportStaticIr2 = (module) => {
40
+ const tag = resolveModuleTag(module);
41
+ if (!tag) return void 0;
42
+ const program = getModuleTraitsProgram(tag);
43
+ if (!program) return void 0;
44
+ return exportStaticIr({
45
+ program,
46
+ moduleId: resolveModuleId(module)
47
+ });
48
+ };
49
+
50
+ // ../logix-core/src/internal/reflection/manifest.ts
51
+ var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
52
+ var isModuleImpl2 = (value) => isRecord2(value) && value._tag === "ModuleImpl" && isRecord2(value.module);
53
+ var resolveModuleId2 = (input) => {
54
+ if (isModuleImpl2(input)) {
55
+ const id = input.module.id;
56
+ return typeof id === "string" && id.length > 0 ? id : "unknown";
57
+ }
58
+ if (isRecord2(input)) {
59
+ const id = input.id;
60
+ if (typeof id === "string" && id.length > 0) return id;
61
+ const tag = input.tag;
62
+ if (tag && (typeof tag === "object" || typeof tag === "function")) {
63
+ const tagId = tag.id;
64
+ if (typeof tagId === "string" && tagId.length > 0) return tagId;
65
+ }
66
+ }
67
+ return "unknown";
68
+ };
69
+ var resolveActionKeys = (input) => {
70
+ const tag = isModuleImpl2(input) ? input.module : input?.tag;
71
+ const actionMap = tag?.shape?.actionMap;
72
+ if (!isRecord2(actionMap)) return [];
73
+ return Object.keys(actionMap).sort();
74
+ };
75
+ var resolveSchemaKeys = (input) => {
76
+ if (!isRecord2(input)) return void 0;
77
+ const schemas = input.schemas;
78
+ if (!isRecord2(schemas)) return void 0;
79
+ return Object.keys(schemas).sort();
80
+ };
81
+ var resolveSource = (input) => {
82
+ if (!isRecord2(input)) return void 0;
83
+ const dev = input.dev;
84
+ const source = dev?.source;
85
+ if (!isRecord2(source)) return void 0;
86
+ const file = source.file;
87
+ const line = source.line;
88
+ const column = source.column;
89
+ if (typeof file !== "string" || file.length === 0) return void 0;
90
+ if (typeof line !== "number" || !Number.isInteger(line) || line < 1) return void 0;
91
+ if (typeof column !== "number" || !Number.isInteger(column) || column < 1) return void 0;
92
+ return { file, line, column };
93
+ };
94
+ var resolveMeta = (input) => {
95
+ if (!isRecord2(input)) return void 0;
96
+ const meta = input.meta;
97
+ if (!isRecord2(meta)) return void 0;
98
+ const out = {};
99
+ for (const key of Object.keys(meta).sort()) {
100
+ const value = meta[key];
101
+ if (isJsonValue(value)) {
102
+ out[key] = value;
103
+ }
104
+ }
105
+ return Object.keys(out).length > 0 ? out : void 0;
106
+ };
107
+ var MODULE_INTERNAL = /* @__PURE__ */ Symbol.for("logix.module.internal");
108
+ var resolveLogicUnits = (input) => {
109
+ if (!isRecord2(input)) return void 0;
110
+ const internal = input[MODULE_INTERNAL];
111
+ const mounted = internal?.mounted;
112
+ if (!Array.isArray(mounted)) return void 0;
113
+ const out = [];
114
+ for (const unit of mounted) {
115
+ if (!isRecord2(unit)) continue;
116
+ const kind = unit.kind;
117
+ const id = unit.id;
118
+ if (typeof kind !== "string" || kind.length === 0) continue;
119
+ if (typeof id !== "string" || id.length === 0) continue;
120
+ const derived = unit.derived === true ? true : void 0;
121
+ const name = typeof unit.name === "string" ? unit.name : void 0;
122
+ out.push({ kind, id, derived, name });
123
+ }
124
+ out.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : a.kind.localeCompare(b.kind));
125
+ return out.length > 0 ? out : void 0;
126
+ };
127
+ var digestOf = (base) => `manifest:025:${fnv1a32(stableStringify(base))}`;
128
+ var utf8ByteLength = (value) => {
129
+ const json = JSON.stringify(value);
130
+ if (typeof TextEncoder !== "undefined") {
131
+ return new TextEncoder().encode(json).length;
132
+ }
133
+ return json.length;
134
+ };
135
+ var applyMaxBytes = (manifest, maxBytes) => {
136
+ const originalBytes = utf8ByteLength(manifest);
137
+ if (originalBytes <= maxBytes) return manifest;
138
+ const dropped = [];
139
+ const truncatedArrays = [];
140
+ const baseMarker = () => ({
141
+ truncated: true,
142
+ maxBytes,
143
+ originalBytes,
144
+ dropped,
145
+ truncatedArrays
146
+ });
147
+ const withMarker = (next2) => {
148
+ const meta = {
149
+ __logix: baseMarker()
150
+ };
151
+ return { ...next2, meta };
152
+ };
153
+ let next = withMarker(manifest);
154
+ const dropField = (field) => {
155
+ if (next[field] !== void 0) {
156
+ dropped.push(String(field));
157
+ next = withMarker({ ...next, [field]: void 0 });
158
+ }
159
+ };
160
+ dropField("meta");
161
+ if (utf8ByteLength(next) <= maxBytes) return next;
162
+ dropField("source");
163
+ if (utf8ByteLength(next) <= maxBytes) return next;
164
+ dropField("staticIr");
165
+ if (utf8ByteLength(next) <= maxBytes) return next;
166
+ dropField("logicUnits");
167
+ if (utf8ByteLength(next) <= maxBytes) return next;
168
+ dropField("schemaKeys");
169
+ if (utf8ByteLength(next) <= maxBytes) return next;
170
+ while (utf8ByteLength(next) > maxBytes && next.actionKeys.length > 1) {
171
+ truncatedArrays.push("actionKeys");
172
+ next = withMarker({
173
+ ...next,
174
+ actionKeys: next.actionKeys.slice(0, Math.ceil(next.actionKeys.length / 2))
175
+ });
176
+ }
177
+ return next;
178
+ };
179
+ var extractManifest = (module, options) => {
180
+ const manifestVersion = "025";
181
+ const moduleId = resolveModuleId2(module);
182
+ const actionKeys = resolveActionKeys(module);
183
+ const schemaKeys = resolveSchemaKeys(module);
184
+ const logicUnits = resolveLogicUnits(module);
185
+ const source = resolveSource(module);
186
+ const meta = resolveMeta(module);
187
+ const staticIr = options?.includeStaticIr ? exportStaticIr2(module) : void 0;
188
+ const digestBase = {
189
+ manifestVersion,
190
+ moduleId,
191
+ actionKeys,
192
+ schemaKeys,
193
+ logicUnits,
194
+ staticIrDigest: staticIr?.digest
195
+ };
196
+ const digest = digestOf(digestBase);
197
+ const manifest = {
198
+ manifestVersion,
199
+ moduleId,
200
+ actionKeys,
201
+ schemaKeys,
202
+ logicUnits,
203
+ source,
204
+ meta,
205
+ staticIr,
206
+ digest
207
+ };
208
+ const maxBytes = options?.budgets?.maxBytes;
209
+ if (typeof maxBytes === "number" && Number.isFinite(maxBytes) && maxBytes > 0) {
210
+ return applyMaxBytes(manifest, maxBytes);
211
+ }
212
+ return manifest;
213
+ };
214
+
215
+ export {
216
+ exportStaticIr2 as exportStaticIr,
217
+ extractManifest
218
+ };
219
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcmVmbGVjdGlvbi9zdGF0aWNJci50cyIsICIuLi8uLi8uLi8uLi9sb2dpeC1jb3JlL3NyYy9pbnRlcm5hbC9yZWZsZWN0aW9uL21hbmlmZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFueU1vZHVsZVNoYXBlLCBNb2R1bGVJbXBsIH0gZnJvbSBcIi4uL3J1bnRpbWUvY29yZS9tb2R1bGUuanNcIlxuaW1wb3J0IHsgZ2V0TW9kdWxlVHJhaXRzUHJvZ3JhbSB9IGZyb20gXCIuLi9ydW50aW1lL2NvcmUvcnVudGltZUludGVybmFsc0FjY2Vzc29yLmpzXCJcbmltcG9ydCB0eXBlIHsgU3RhdGljSXIgfSBmcm9tIFwiLi4vc3RhdGUtdHJhaXQvaXIuanNcIlxuaW1wb3J0IHR5cGUgeyBTdGF0ZVRyYWl0UHJvZ3JhbSB9IGZyb20gXCIuLi9zdGF0ZS10cmFpdC9tb2RlbC5qc1wiXG5pbXBvcnQgeyBleHBvcnRTdGF0aWNJciBhcyBleHBvcnRTdGF0ZVRyYWl0U3RhdGljSXIgfSBmcm9tIFwiLi4vc3RhdGUtdHJhaXQvaXIuanNcIlxuXG5jb25zdCBpc1JlY29yZCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcblxuY29uc3QgaXNNb2R1bGVJbXBsID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTW9kdWxlSW1wbDxhbnksIEFueU1vZHVsZVNoYXBlLCBhbnk+ID0+XG4gIGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS5fdGFnID09PSBcIk1vZHVsZUltcGxcIiAmJiBpc1JlY29yZCh2YWx1ZS5tb2R1bGUpXG5cbmNvbnN0IHJlc29sdmVNb2R1bGVJZCA9IChpbnB1dDogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmIChpc01vZHVsZUltcGwoaW5wdXQpKSB7XG4gICAgY29uc3QgaWQgPSAoaW5wdXQubW9kdWxlIGFzIGFueSkuaWRcbiAgICByZXR1cm4gdHlwZW9mIGlkID09PSBcInN0cmluZ1wiICYmIGlkLmxlbmd0aCA+IDAgPyBpZCA6IFwidW5rbm93blwiXG4gIH1cblxuICBpZiAoaXNSZWNvcmQoaW5wdXQpKSB7XG4gICAgY29uc3QgaWQgPSBpbnB1dC5pZFxuICAgIGlmICh0eXBlb2YgaWQgPT09IFwic3RyaW5nXCIgJiYgaWQubGVuZ3RoID4gMCkgcmV0dXJuIGlkXG4gICAgY29uc3QgdGFnID0gKGlucHV0IGFzIGFueSkudGFnXG4gICAgaWYgKHRhZyAmJiAodHlwZW9mIHRhZyA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdGFnID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgICBjb25zdCB0YWdJZCA9ICh0YWcgYXMgYW55KS5pZFxuICAgICAgaWYgKHR5cGVvZiB0YWdJZCA9PT0gXCJzdHJpbmdcIiAmJiB0YWdJZC5sZW5ndGggPiAwKSByZXR1cm4gdGFnSWRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXCJ1bmtub3duXCJcbn1cblxuY29uc3QgcmVzb2x2ZU1vZHVsZVRhZyA9IChpbnB1dDogdW5rbm93bik6IHVua25vd24gPT4ge1xuICBpZiAoaXNNb2R1bGVJbXBsKGlucHV0KSkgcmV0dXJuIGlucHV0Lm1vZHVsZVxuICBpZiAoaXNSZWNvcmQoaW5wdXQpICYmIChpbnB1dCBhcyBhbnkpLnRhZykgcmV0dXJuIChpbnB1dCBhcyBhbnkpLnRhZ1xuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCBleHBvcnRTdGF0aWNJciA9IChtb2R1bGU6IHVua25vd24pOiBTdGF0aWNJciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHRhZyA9IHJlc29sdmVNb2R1bGVUYWcobW9kdWxlKVxuICBpZiAoIXRhZykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IHByb2dyYW0gPSBnZXRNb2R1bGVUcmFpdHNQcm9ncmFtKHRhZykgYXMgU3RhdGVUcmFpdFByb2dyYW08YW55PiB8IHVuZGVmaW5lZFxuICBpZiAoIXByb2dyYW0pIHJldHVybiB1bmRlZmluZWRcblxuICByZXR1cm4gZXhwb3J0U3RhdGVUcmFpdFN0YXRpY0lyKHtcbiAgICBwcm9ncmFtLFxuICAgIG1vZHVsZUlkOiByZXNvbHZlTW9kdWxlSWQobW9kdWxlKSxcbiAgfSlcbn1cblxuIiwgImltcG9ydCB0eXBlIHsgQW55TW9kdWxlU2hhcGUsIE1vZHVsZUltcGwgfSBmcm9tIFwiLi4vcnVudGltZS9jb3JlL21vZHVsZS5qc1wiXG5pbXBvcnQgeyBzdGFibGVTdHJpbmdpZnksIGZudjFhMzIgfSBmcm9tIFwiLi4vZGlnZXN0LmpzXCJcbmltcG9ydCB7IGlzSnNvblZhbHVlLCB0eXBlIEpzb25WYWx1ZSB9IGZyb20gXCIuLi9vYnNlcnZhYmlsaXR5L2pzb25WYWx1ZS5qc1wiXG5pbXBvcnQgeyBleHBvcnRTdGF0aWNJciB9IGZyb20gXCIuL3N0YXRpY0lyLmpzXCJcblxuZXhwb3J0IGludGVyZmFjZSBNYW5pZmVzdEJ1ZGdldHMge1xuICByZWFkb25seSBtYXhCeXRlcz86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RNYW5pZmVzdE9wdGlvbnMge1xuICByZWFkb25seSBpbmNsdWRlU3RhdGljSXI/OiBib29sZWFuXG4gIHJlYWRvbmx5IGJ1ZGdldHM/OiBNYW5pZmVzdEJ1ZGdldHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdExvZ2ljVW5pdCB7XG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZ1xuICByZWFkb25seSBpZDogc3RyaW5nXG4gIHJlYWRvbmx5IGRlcml2ZWQ/OiBib29sZWFuXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdCB7XG4gIHJlYWRvbmx5IG1hbmlmZXN0VmVyc2lvbjogc3RyaW5nXG4gIHJlYWRvbmx5IG1vZHVsZUlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgYWN0aW9uS2V5czogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IHNjaGVtYUtleXM/OiBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgcmVhZG9ubHkgbG9naWNVbml0cz86IFJlYWRvbmx5QXJyYXk8TW9kdWxlTWFuaWZlc3RMb2dpY1VuaXQ+XG4gIHJlYWRvbmx5IHNvdXJjZT86IHtcbiAgICByZWFkb25seSBmaWxlOiBzdHJpbmdcbiAgICByZWFkb25seSBsaW5lOiBudW1iZXJcbiAgICByZWFkb25seSBjb2x1bW46IG51bWJlclxuICB9XG4gIHJlYWRvbmx5IG1ldGE/OiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+XG4gIHJlYWRvbmx5IHN0YXRpY0lyPzogUmV0dXJuVHlwZTx0eXBlb2YgZXhwb3J0U3RhdGljSXI+XG4gIHJlYWRvbmx5IGRpZ2VzdDogc3RyaW5nXG59XG5cbmNvbnN0IGlzUmVjb3JkID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuXG5jb25zdCBpc01vZHVsZUltcGwgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBNb2R1bGVJbXBsPGFueSwgQW55TW9kdWxlU2hhcGUsIGFueT4gPT5cbiAgaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLl90YWcgPT09IFwiTW9kdWxlSW1wbFwiICYmIGlzUmVjb3JkKHZhbHVlLm1vZHVsZSlcblxuY29uc3QgcmVzb2x2ZU1vZHVsZUlkID0gKGlucHV0OiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKGlzTW9kdWxlSW1wbChpbnB1dCkpIHtcbiAgICBjb25zdCBpZCA9IChpbnB1dC5tb2R1bGUgYXMgYW55KS5pZFxuICAgIHJldHVybiB0eXBlb2YgaWQgPT09IFwic3RyaW5nXCIgJiYgaWQubGVuZ3RoID4gMCA/IGlkIDogXCJ1bmtub3duXCJcbiAgfVxuXG4gIGlmIChpc1JlY29yZChpbnB1dCkpIHtcbiAgICBjb25zdCBpZCA9IGlucHV0LmlkXG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJzdHJpbmdcIiAmJiBpZC5sZW5ndGggPiAwKSByZXR1cm4gaWRcbiAgICBjb25zdCB0YWcgPSAoaW5wdXQgYXMgYW55KS50YWdcbiAgICBpZiAodGFnICYmICh0eXBlb2YgdGFnID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiB0YWcgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICAgIGNvbnN0IHRhZ0lkID0gKHRhZyBhcyBhbnkpLmlkXG4gICAgICBpZiAodHlwZW9mIHRhZ0lkID09PSBcInN0cmluZ1wiICYmIHRhZ0lkLmxlbmd0aCA+IDApIHJldHVybiB0YWdJZFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBcInVua25vd25cIlxufVxuXG5jb25zdCByZXNvbHZlQWN0aW9uS2V5cyA9IChpbnB1dDogdW5rbm93bik6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHRhZyA9IGlzTW9kdWxlSW1wbChpbnB1dCkgPyAoaW5wdXQubW9kdWxlIGFzIGFueSkgOiAoaW5wdXQgYXMgYW55KT8udGFnXG4gIGNvbnN0IGFjdGlvbk1hcCA9IHRhZz8uc2hhcGU/LmFjdGlvbk1hcFxuICBpZiAoIWlzUmVjb3JkKGFjdGlvbk1hcCkpIHJldHVybiBbXVxuICByZXR1cm4gT2JqZWN0LmtleXMoYWN0aW9uTWFwKS5zb3J0KClcbn1cblxuY29uc3QgcmVzb2x2ZVNjaGVtYUtleXMgPSAoaW5wdXQ6IHVua25vd24pOiBSZWFkb25seUFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIWlzUmVjb3JkKGlucHV0KSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBzY2hlbWFzID0gKGlucHV0IGFzIGFueSkuc2NoZW1hc1xuICBpZiAoIWlzUmVjb3JkKHNjaGVtYXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiBPYmplY3Qua2V5cyhzY2hlbWFzKS5zb3J0KClcbn1cblxuY29uc3QgcmVzb2x2ZVNvdXJjZSA9IChpbnB1dDogdW5rbm93bik6IE1vZHVsZU1hbmlmZXN0W1wic291cmNlXCJdIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFpc1JlY29yZChpbnB1dCkpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgZGV2ID0gKGlucHV0IGFzIGFueSkuZGV2XG4gIGNvbnN0IHNvdXJjZSA9IGRldj8uc291cmNlXG4gIGlmICghaXNSZWNvcmQoc291cmNlKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBmaWxlID0gc291cmNlLmZpbGVcbiAgY29uc3QgbGluZSA9IHNvdXJjZS5saW5lXG4gIGNvbnN0IGNvbHVtbiA9IHNvdXJjZS5jb2x1bW5cbiAgaWYgKHR5cGVvZiBmaWxlICE9PSBcInN0cmluZ1wiIHx8IGZpbGUubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICh0eXBlb2YgbGluZSAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzSW50ZWdlcihsaW5lKSB8fCBsaW5lIDwgMSkgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIGNvbHVtbiAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzSW50ZWdlcihjb2x1bW4pIHx8IGNvbHVtbiA8IDEpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIHsgZmlsZSwgbGluZSwgY29sdW1uIH1cbn1cblxuY29uc3QgcmVzb2x2ZU1ldGEgPSAoaW5wdXQ6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFpc1JlY29yZChpbnB1dCkpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgbWV0YSA9IChpbnB1dCBhcyBhbnkpLm1ldGFcbiAgaWYgKCFpc1JlY29yZChtZXRhKSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgSnNvblZhbHVlPiA9IHt9XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1ldGEpLnNvcnQoKSkge1xuICAgIGNvbnN0IHZhbHVlID0gbWV0YVtrZXldXG4gICAgaWYgKGlzSnNvblZhbHVlKHZhbHVlKSkge1xuICAgICAgb3V0W2tleV0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gT2JqZWN0LmtleXMob3V0KS5sZW5ndGggPiAwID8gb3V0IDogdW5kZWZpbmVkXG59XG5cbmNvbnN0IE1PRFVMRV9JTlRFUk5BTCA9IFN5bWJvbC5mb3IoXCJsb2dpeC5tb2R1bGUuaW50ZXJuYWxcIilcblxuY29uc3QgcmVzb2x2ZUxvZ2ljVW5pdHMgPSAoXG4gIGlucHV0OiB1bmtub3duLFxuKTogUmVhZG9ubHlBcnJheTxNb2R1bGVNYW5pZmVzdExvZ2ljVW5pdD4gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIWlzUmVjb3JkKGlucHV0KSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBpbnRlcm5hbCA9IChpbnB1dCBhcyBhbnkpW01PRFVMRV9JTlRFUk5BTF1cbiAgY29uc3QgbW91bnRlZCA9IGludGVybmFsPy5tb3VudGVkXG4gIGlmICghQXJyYXkuaXNBcnJheShtb3VudGVkKSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IG91dDogQXJyYXk8TW9kdWxlTWFuaWZlc3RMb2dpY1VuaXQ+ID0gW11cbiAgZm9yIChjb25zdCB1bml0IG9mIG1vdW50ZWQpIHtcbiAgICBpZiAoIWlzUmVjb3JkKHVuaXQpKSBjb250aW51ZVxuICAgIGNvbnN0IGtpbmQgPSB1bml0LmtpbmRcbiAgICBjb25zdCBpZCA9IHVuaXQuaWRcbiAgICBpZiAodHlwZW9mIGtpbmQgIT09IFwic3RyaW5nXCIgfHwga2luZC5sZW5ndGggPT09IDApIGNvbnRpbnVlXG4gICAgaWYgKHR5cGVvZiBpZCAhPT0gXCJzdHJpbmdcIiB8fCBpZC5sZW5ndGggPT09IDApIGNvbnRpbnVlXG5cbiAgICBjb25zdCBkZXJpdmVkID0gdW5pdC5kZXJpdmVkID09PSB0cnVlID8gdHJ1ZSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgdW5pdC5uYW1lID09PSBcInN0cmluZ1wiID8gdW5pdC5uYW1lIDogdW5kZWZpbmVkXG4gICAgb3V0LnB1c2goeyBraW5kLCBpZCwgZGVyaXZlZCwgbmFtZSB9KVxuICB9XG5cbiAgb3V0LnNvcnQoKGEsIGIpID0+IChhLmlkIDwgYi5pZCA/IC0xIDogYS5pZCA+IGIuaWQgPyAxIDogYS5raW5kLmxvY2FsZUNvbXBhcmUoYi5raW5kKSkpXG4gIHJldHVybiBvdXQubGVuZ3RoID4gMCA/IG91dCA6IHVuZGVmaW5lZFxufVxuXG50eXBlIERpZ2VzdEJhc2UgPSB7XG4gIHJlYWRvbmx5IG1hbmlmZXN0VmVyc2lvbjogc3RyaW5nXG4gIHJlYWRvbmx5IG1vZHVsZUlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgYWN0aW9uS2V5czogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IHNjaGVtYUtleXM/OiBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgcmVhZG9ubHkgbG9naWNVbml0cz86IFJlYWRvbmx5QXJyYXk8TW9kdWxlTWFuaWZlc3RMb2dpY1VuaXQ+XG4gIHJlYWRvbmx5IHN0YXRpY0lyRGlnZXN0Pzogc3RyaW5nXG59XG5cbmNvbnN0IGRpZ2VzdE9mID0gKGJhc2U6IERpZ2VzdEJhc2UpOiBzdHJpbmcgPT5cbiAgYG1hbmlmZXN0OjAyNToke2ZudjFhMzIoc3RhYmxlU3RyaW5naWZ5KGJhc2UpKX1gXG5cbmNvbnN0IHV0ZjhCeXRlTGVuZ3RoID0gKHZhbHVlOiB1bmtub3duKTogbnVtYmVyID0+IHtcbiAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICBpZiAodHlwZW9mIFRleHRFbmNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShqc29uKS5sZW5ndGhcbiAgfVxuICByZXR1cm4ganNvbi5sZW5ndGhcbn1cblxuY29uc3QgYXBwbHlNYXhCeXRlcyA9IChtYW5pZmVzdDogTW9kdWxlTWFuaWZlc3QsIG1heEJ5dGVzOiBudW1iZXIpOiBNb2R1bGVNYW5pZmVzdCA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsQnl0ZXMgPSB1dGY4Qnl0ZUxlbmd0aChtYW5pZmVzdClcbiAgaWYgKG9yaWdpbmFsQnl0ZXMgPD0gbWF4Qnl0ZXMpIHJldHVybiBtYW5pZmVzdFxuXG4gIGNvbnN0IGRyb3BwZWQ6IEFycmF5PHN0cmluZz4gPSBbXVxuICBjb25zdCB0cnVuY2F0ZWRBcnJheXM6IEFycmF5PHN0cmluZz4gPSBbXVxuXG4gIGNvbnN0IGJhc2VNYXJrZXIgPSAoKTogSnNvblZhbHVlID0+ICh7XG4gICAgdHJ1bmNhdGVkOiB0cnVlLFxuICAgIG1heEJ5dGVzLFxuICAgIG9yaWdpbmFsQnl0ZXMsXG4gICAgZHJvcHBlZCxcbiAgICB0cnVuY2F0ZWRBcnJheXMsXG4gIH0pXG5cbiAgY29uc3Qgd2l0aE1hcmtlciA9IChuZXh0OiBNb2R1bGVNYW5pZmVzdCk6IE1vZHVsZU1hbmlmZXN0ID0+IHtcbiAgICBjb25zdCBtZXRhOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+ID0ge1xuICAgICAgX19sb2dpeDogYmFzZU1hcmtlcigpLFxuICAgIH1cbiAgICByZXR1cm4geyAuLi5uZXh0LCBtZXRhIH1cbiAgfVxuXG4gIGxldCBuZXh0OiBNb2R1bGVNYW5pZmVzdCA9IHdpdGhNYXJrZXIobWFuaWZlc3QpXG5cbiAgY29uc3QgZHJvcEZpZWxkID0gKGZpZWxkOiBrZXlvZiBNb2R1bGVNYW5pZmVzdCk6IHZvaWQgPT4ge1xuICAgIGlmICgobmV4dCBhcyBhbnkpW2ZpZWxkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkcm9wcGVkLnB1c2goU3RyaW5nKGZpZWxkKSlcbiAgICAgIG5leHQgPSB3aXRoTWFya2VyKHsgLi4uKG5leHQgYXMgYW55KSwgW2ZpZWxkXTogdW5kZWZpbmVkIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gRGV0ZXJtaW5pc3RpYyB0cmltbWluZyBvcmRlciAobGVhc3QgdmFsdWFibGUgZmlyc3QpLlxuICBkcm9wRmllbGQoXCJtZXRhXCIpXG4gIGlmICh1dGY4Qnl0ZUxlbmd0aChuZXh0KSA8PSBtYXhCeXRlcykgcmV0dXJuIG5leHRcblxuICBkcm9wRmllbGQoXCJzb3VyY2VcIilcbiAgaWYgKHV0ZjhCeXRlTGVuZ3RoKG5leHQpIDw9IG1heEJ5dGVzKSByZXR1cm4gbmV4dFxuXG4gIGRyb3BGaWVsZChcInN0YXRpY0lyXCIpXG4gIGlmICh1dGY4Qnl0ZUxlbmd0aChuZXh0KSA8PSBtYXhCeXRlcykgcmV0dXJuIG5leHRcblxuICBkcm9wRmllbGQoXCJsb2dpY1VuaXRzXCIpXG4gIGlmICh1dGY4Qnl0ZUxlbmd0aChuZXh0KSA8PSBtYXhCeXRlcykgcmV0dXJuIG5leHRcblxuICBkcm9wRmllbGQoXCJzY2hlbWFLZXlzXCIpXG4gIGlmICh1dGY4Qnl0ZUxlbmd0aChuZXh0KSA8PSBtYXhCeXRlcykgcmV0dXJuIG5leHRcblxuICAvLyBMYXN0IHJlc29ydDogdHJ1bmNhdGUgYWN0aW9uS2V5cyAoc3RpbGwgZGV0ZXJtaW5pc3RpYywgYnV0IHNpZ25hbHMgdHJ1bmNhdGlvbikuXG4gIHdoaWxlICh1dGY4Qnl0ZUxlbmd0aChuZXh0KSA+IG1heEJ5dGVzICYmIG5leHQuYWN0aW9uS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgdHJ1bmNhdGVkQXJyYXlzLnB1c2goXCJhY3Rpb25LZXlzXCIpXG4gICAgbmV4dCA9IHdpdGhNYXJrZXIoe1xuICAgICAgLi4ubmV4dCxcbiAgICAgIGFjdGlvbktleXM6IG5leHQuYWN0aW9uS2V5cy5zbGljZSgwLCBNYXRoLmNlaWwobmV4dC5hY3Rpb25LZXlzLmxlbmd0aCAvIDIpKSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RNYW5pZmVzdCA9IChcbiAgbW9kdWxlOiB1bmtub3duLFxuICBvcHRpb25zPzogRXh0cmFjdE1hbmlmZXN0T3B0aW9ucyxcbik6IE1vZHVsZU1hbmlmZXN0ID0+IHtcbiAgY29uc3QgbWFuaWZlc3RWZXJzaW9uID0gXCIwMjVcIlxuICBjb25zdCBtb2R1bGVJZCA9IHJlc29sdmVNb2R1bGVJZChtb2R1bGUpXG4gIGNvbnN0IGFjdGlvbktleXMgPSByZXNvbHZlQWN0aW9uS2V5cyhtb2R1bGUpXG5cbiAgY29uc3Qgc2NoZW1hS2V5cyA9IHJlc29sdmVTY2hlbWFLZXlzKG1vZHVsZSlcbiAgY29uc3QgbG9naWNVbml0cyA9IHJlc29sdmVMb2dpY1VuaXRzKG1vZHVsZSlcbiAgY29uc3Qgc291cmNlID0gcmVzb2x2ZVNvdXJjZShtb2R1bGUpXG4gIGNvbnN0IG1ldGEgPSByZXNvbHZlTWV0YShtb2R1bGUpXG5cbiAgY29uc3Qgc3RhdGljSXIgPSBvcHRpb25zPy5pbmNsdWRlU3RhdGljSXIgPyBleHBvcnRTdGF0aWNJcihtb2R1bGUpIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgZGlnZXN0QmFzZTogRGlnZXN0QmFzZSA9IHtcbiAgICBtYW5pZmVzdFZlcnNpb24sXG4gICAgbW9kdWxlSWQsXG4gICAgYWN0aW9uS2V5cyxcbiAgICBzY2hlbWFLZXlzLFxuICAgIGxvZ2ljVW5pdHMsXG4gICAgc3RhdGljSXJEaWdlc3Q6IHN0YXRpY0lyPy5kaWdlc3QsXG4gIH1cblxuICBjb25zdCBkaWdlc3QgPSBkaWdlc3RPZihkaWdlc3RCYXNlKVxuXG4gIGNvbnN0IG1hbmlmZXN0OiBNb2R1bGVNYW5pZmVzdCA9IHtcbiAgICBtYW5pZmVzdFZlcnNpb24sXG4gICAgbW9kdWxlSWQsXG4gICAgYWN0aW9uS2V5cyxcbiAgICBzY2hlbWFLZXlzLFxuICAgIGxvZ2ljVW5pdHMsXG4gICAgc291cmNlLFxuICAgIG1ldGEsXG4gICAgc3RhdGljSXIsXG4gICAgZGlnZXN0LFxuICB9XG5cbiAgY29uc3QgbWF4Qnl0ZXMgPSBvcHRpb25zPy5idWRnZXRzPy5tYXhCeXRlc1xuICBpZiAodHlwZW9mIG1heEJ5dGVzID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZShtYXhCeXRlcykgJiYgbWF4Qnl0ZXMgPiAwKSB7XG4gICAgcmV0dXJuIGFwcGx5TWF4Qnl0ZXMobWFuaWZlc3QsIG1heEJ5dGVzKVxuICB9XG5cbiAgcmV0dXJuIG1hbmlmZXN0XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQSxJQUFNLFdBQVcsQ0FBQyxVQUNoQixPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSztBQUVyRSxJQUFNLGVBQWUsQ0FBQyxVQUNwQixTQUFTLEtBQUssS0FBSyxNQUFNLFNBQVMsZ0JBQWdCLFNBQVMsTUFBTSxNQUFNO0FBRXpFLElBQU0sa0JBQWtCLENBQUMsVUFBMkI7QUFDbEQsTUFBSSxhQUFhLEtBQUssR0FBRztBQUN2QixVQUFNLEtBQU0sTUFBTSxPQUFlO0FBQ2pDLFdBQU8sT0FBTyxPQUFPLFlBQVksR0FBRyxTQUFTLElBQUksS0FBSztBQUFBLEVBQ3hEO0FBRUEsTUFBSSxTQUFTLEtBQUssR0FBRztBQUNuQixVQUFNLEtBQUssTUFBTTtBQUNqQixRQUFJLE9BQU8sT0FBTyxZQUFZLEdBQUcsU0FBUyxFQUFHLFFBQU87QUFDcEQsVUFBTSxNQUFPLE1BQWM7QUFDM0IsUUFBSSxRQUFRLE9BQU8sUUFBUSxZQUFZLE9BQU8sUUFBUSxhQUFhO0FBQ2pFLFlBQU0sUUFBUyxJQUFZO0FBQzNCLFVBQUksT0FBTyxVQUFVLFlBQVksTUFBTSxTQUFTLEVBQUcsUUFBTztBQUFBLElBQzVEO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVBLElBQU0sbUJBQW1CLENBQUMsVUFBNEI7QUFDcEQsTUFBSSxhQUFhLEtBQUssRUFBRyxRQUFPLE1BQU07QUFDdEMsTUFBSSxTQUFTLEtBQUssS0FBTSxNQUFjLElBQUssUUFBUSxNQUFjO0FBQ2pFLFNBQU87QUFDVDtBQUVPLElBQU1BLGtCQUFpQixDQUFD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Z0IsS0FBSyxZQUFZO0FBQ2pDLFdBQU8sV0FBVztBQUFBLE1BQ2hCLEdBQUc7QUFBQSxNQUNILFlBQVksS0FBSyxXQUFXLE1BQU0sR0FBRyxLQUFLLEtBQUssS0FBSyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0FBQUEsSUFDNUUsQ0FBQztBQUFBLEVBQ0g7QUFFQSxTQUFPO0FBQ1Q7QUFFTyxJQUFNLGtCQUFrQixDQUM3QixRQUNBLFlBQ21CO0FBQ25CLFFBQU0sa0JBQWtCO0FBQ3hCLFFBQU0sV0FBV0QsaUJBQWdCLE1BQU07QUFDdkMsUUFBTSxhQUFhLGtCQUFrQixNQUFNO0FBRTNDLFFBQU0sYUFBYSxrQkFBa0IsTUFBTTtBQUMzQyxRQUFNLGFBQWEsa0JBQWtCLE1BQU07QUFDM0MsUUFBTSxTQUFTLGNBQWMsTUFBTTtBQUNuQyxRQUFNLE9BQU8sWUFBWSxNQUFNO0FBRS9CLFFBQU0sV0FBVyxTQUFTLGtCQUFrQkUsZ0JBQWUsTUFBTSxJQUFJO0FBRXJFLFFBQU0sYUFBeUI7QUFBQSxJQUM3QjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLGdCQUFnQixVQUFVO0FBQUEsRUFDNUI7QUFFQSxRQUFNLFNBQVMsU0FBUyxVQUFVO0FBRWxDLFFBQU0sV0FBMkI7QUFBQSxJQUMvQjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLFFBQU0sV0FBVyxTQUFTLFNBQVM7QUFDbkMsTUFBSSxPQUFPLGFBQWEsWUFBWSxPQUFPLFNBQVMsUUFBUSxLQUFLLFdBQVcsR0FBRztBQUM3RSxXQUFPLGNBQWMsVUFBVSxRQUFRO0FBQUEsRUFDekM7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbImV4cG9ydFN0YXRpY0lyIiwgImlzUmVjb3JkIiwgImlzTW9kdWxlSW1wbCIsICJyZXNvbHZlTW9kdWxlSWQiLCAibmV4dCIsICJleHBvcnRTdGF0aWNJciJdCn0K