@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,208 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ attachPhaseRef,
5
+ isLogicPlanEffect,
6
+ make as make2,
7
+ markAsLogicPlanEffect
8
+ } from "./chunk-HIJ67QWR.js";
9
+ import {
10
+ LogicUnitServiceTag,
11
+ make
12
+ } from "./chunk-WJY2LSWG.js";
13
+
14
+ // ../logix-core/src/internal/runtime/ModuleFactory.ts
15
+ import { Context, Effect, Layer, Option, Schema } from "../effect.js";
16
+ function Link(modules, logic) {
17
+ return Effect.gen(function* () {
18
+ const handles = {};
19
+ for (const [key, module] of Object.entries(modules)) {
20
+ const runtime = yield* module;
21
+ handles[key] = {
22
+ read: (selector) => Effect.map(runtime.getState, selector),
23
+ changes: runtime.changes,
24
+ dispatch: runtime.dispatch,
25
+ actions$: runtime.actions$,
26
+ actions: new Proxy(
27
+ {},
28
+ {
29
+ get: (_target, prop) => (payload) => runtime.dispatch({ _tag: prop, payload })
30
+ }
31
+ )
32
+ };
33
+ }
34
+ return yield* logic(
35
+ handles
36
+ );
37
+ });
38
+ }
39
+ function Module(id, def) {
40
+ const shape = {
41
+ stateSchema: def.state,
42
+ actionSchema: Schema.Union(
43
+ ...Object.entries(def.actions).map(
44
+ ([tag2, payload]) => Schema.Struct(
45
+ payload === Schema.Void ? {
46
+ _tag: Schema.Literal(tag2),
47
+ payload: Schema.optional(payload)
48
+ } : {
49
+ _tag: Schema.Literal(tag2),
50
+ payload
51
+ }
52
+ )
53
+ )
54
+ ),
55
+ actionMap: def.actions
56
+ };
57
+ const reducers = def.reducers && Object.fromEntries(
58
+ Object.entries(def.reducers).map(([tag2, reducer]) => [
59
+ tag2,
60
+ (state, action, sink) => (
61
+ // 这里依赖 `_tag` 的运行时约定:只有匹配当前 tag 的 Action 会交给对应 reducer。
62
+ reducer(
63
+ state,
64
+ action,
65
+ sink
66
+ )
67
+ )
68
+ ])
69
+ );
70
+ class ModuleTag extends Context.Tag(`@logix/Module/${id}`)() {
71
+ }
72
+ const tag = ModuleTag;
73
+ const moduleTag = Object.assign(tag, {
74
+ _kind: "ModuleTag",
75
+ id,
76
+ shape,
77
+ stateSchema: shape.stateSchema,
78
+ actionSchema: shape.actionSchema,
79
+ /**
80
+ * 为当前 Module 构造一段 Logic 程序:
81
+ * - 在运行时从 Context 中取出自身的 ModuleRuntime;
82
+ * - 基于 Runtime 构造 BoundApi;
83
+ * - 将 BoundApi 交给调用方构造业务 Logic。
84
+ */
85
+ logic: (build) => {
86
+ const phaseRef = { current: "setup" };
87
+ const phaseService = {
88
+ get current() {
89
+ return phaseRef.current;
90
+ }
91
+ };
92
+ const logicEffect = Effect.gen(function* () {
93
+ const runtime = yield* tag;
94
+ const logicUnit = yield* Effect.serviceOption(LogicUnitServiceTag).pipe(
95
+ Effect.map(Option.getOrUndefined)
96
+ );
97
+ const api = make(shape, runtime, {
98
+ getPhase: () => phaseRef.current,
99
+ phaseService,
100
+ moduleId: id,
101
+ logicUnit
102
+ });
103
+ let built;
104
+ try {
105
+ built = build(api);
106
+ } catch (err) {
107
+ if (err?._tag === "LogicPhaseError") {
108
+ return yield* Effect.fail(err);
109
+ }
110
+ throw err;
111
+ }
112
+ if (isLogicPlanEffect(built)) {
113
+ return yield* built;
114
+ }
115
+ const isLogicPlan = (value) => Boolean(value && typeof value === "object" && "setup" in value && "run" in value);
116
+ const plan = isLogicPlan(built) ? built : {
117
+ setup: Effect.void,
118
+ run: built
119
+ };
120
+ attachPhaseRef(plan, phaseRef);
121
+ return plan;
122
+ });
123
+ markAsLogicPlanEffect(logicEffect);
124
+ attachPhaseRef(logicEffect, phaseRef);
125
+ return logicEffect;
126
+ },
127
+ /**
128
+ * live:给定初始状态与一组 Logic,构造带 Scope 的 ModuleRuntime Layer。
129
+ *
130
+ * Env 约定:
131
+ * - R 表示 Logic 运行所需的额外环境(Service / 平台等);
132
+ * - ModuleRuntime 本身只依赖 Scope.Scope,由 Layer.scoped 管理。
133
+ */
134
+ live: (initial, ...logics) => Layer.scoped(
135
+ tag,
136
+ make2(initial, {
137
+ tag,
138
+ logics,
139
+ moduleId: id,
140
+ reducers
141
+ })
142
+ ),
143
+ /**
144
+ * implement:基于 Module 定义 + 初始状态 + Logic 集合,生成 ModuleImpl 蓝图。
145
+ *
146
+ * - R 表示 Logic 所需的 Env 类型;
147
+ * - 返回的 ModuleImpl.layer 会携带 R 作为输入环境;
148
+ * - 通过 withLayer/withLayers 可以逐步将 R 收敛为更具体的 Env(甚至 never)。
149
+ */
150
+ implement: (config) => {
151
+ const importedModules = (config.imports ?? []).flatMap((item) => {
152
+ if (item._tag === "ModuleImpl") {
153
+ return [
154
+ item.module
155
+ ];
156
+ }
157
+ return [];
158
+ });
159
+ const baseLayer = Layer.scoped(
160
+ tag,
161
+ make2(config.initial, {
162
+ tag,
163
+ logics: config.logics || [],
164
+ processes: config.processes || [],
165
+ moduleId: id,
166
+ imports: importedModules,
167
+ reducers,
168
+ stateTransaction: config.stateTransaction
169
+ })
170
+ );
171
+ const processes = config.processes ?? [];
172
+ const makeImplWithLayer = (layer) => ({
173
+ _tag: "ModuleImpl",
174
+ module: moduleTag,
175
+ layer,
176
+ processes,
177
+ stateTransaction: config.stateTransaction,
178
+ withLayer: (extra) => {
179
+ const provided = layer.pipe(Layer.provide(extra));
180
+ const merged = Layer.mergeAll(provided, extra);
181
+ return makeImplWithLayer(merged);
182
+ },
183
+ withLayers: (...extras) => extras.reduce(
184
+ (implAcc, extra) => implAcc.withLayer(extra),
185
+ makeImplWithLayer(
186
+ layer
187
+ )
188
+ )
189
+ });
190
+ const initialImpl = makeImplWithLayer(
191
+ baseLayer
192
+ );
193
+ const imports = config.imports ?? [];
194
+ const finalImpl = imports.reduce((implAcc, item) => {
195
+ const layer = item._tag === "ModuleImpl" ? item.layer : item;
196
+ return implAcc.withLayer(layer);
197
+ }, initialImpl);
198
+ return finalImpl;
199
+ }
200
+ });
201
+ return moduleTag;
202
+ }
203
+
204
+ export {
205
+ Link,
206
+ Module
207
+ };
208
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9Nb2R1bGVGYWN0b3J5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIExheWVyLCBPcHRpb24sIFNjaGVtYSB9IGZyb20gJ2VmZmVjdCdcbmltcG9ydCAqIGFzIE1vZHVsZVJ1bnRpbWVJbXBsIGZyb20gJy4vTW9kdWxlUnVudGltZS5qcydcbmltcG9ydCAqIGFzIEJvdW5kQXBpUnVudGltZSBmcm9tICcuL0JvdW5kQXBpUnVudGltZS5qcydcbmltcG9ydCAqIGFzIExvZ2ljRGlhZ25vc3RpY3MgZnJvbSAnLi9jb3JlL0xvZ2ljRGlhZ25vc3RpY3MuanMnXG5pbXBvcnQgKiBhcyBMb2dpY1BsYW5NYXJrZXIgZnJvbSAnLi9jb3JlL0xvZ2ljUGxhbk1hcmtlci5qcydcbmltcG9ydCB0eXBlIHsgRmllbGRQYXRoIH0gZnJvbSAnLi4vZmllbGQtcGF0aC5qcydcbmltcG9ydCB0eXBlIHtcbiAgQW55TW9kdWxlU2hhcGUsXG4gIEFueVNjaGVtYSxcbiAgQWN0aW9uc0Zyb21NYXAsXG4gIE1vZHVsZVRhZyBhcyBMb2dpeE1vZHVsZVRhZyxcbiAgTW9kdWxlU2hhcGUsXG4gIFJlZHVjZXJzRnJvbU1hcCxcbiAgU3RhdGVPZixcbiAgQWN0aW9uT2YsXG4gIE1vZHVsZUhhbmRsZSxcbiAgTW9kdWxlTG9naWMsXG4gIE1vZHVsZUltcGwsXG4gIE1vZHVsZUltcGxlbWVudFN0YXRlVHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICcuL2NvcmUvbW9kdWxlLmpzJ1xuXG4vKipcbiAqIHYzOiBMaW5rIChcdTUzOUYgT3JjaGVzdHJhdG9yKVxuICogXHU3NTI4XHU0RThFXHU4REU4XHU2QTIxXHU1NzU3XHU1MzRGXHU0RjVDXHU3Njg0XHU4MEY2XHU2QzM0XHU1QzQyXHUzMDAyXG4gKlxuICogLSBcdTRFMERcdTYzMDFcdTY3MDlcdTgxRUFcdTVERjFcdTc2ODQgU3RhdGVcdUZGMUJcbiAqIC0gXHU1M0VGXHU0RUU1XHU4QkJGXHU5NUVFXHU1OTFBXHU0RTJBIE1vZHVsZSBcdTc2ODQgUmVhZG9ubHlIYW5kbGVcdUZGMUJcbiAqIC0gXHU1M0VBXHU4MEZEXHU1QjlBXHU0RTQ5IExvZ2ljXHVGRjBDXHU0RTBEXHU4MEZEXHU1QjlBXHU0RTQ5IFN0YXRlL0FjdGlvblx1MzAwMlxuICovXG5leHBvcnQgZnVuY3Rpb24gTGluazxNb2R1bGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTG9naXhNb2R1bGVUYWc8YW55LCBBbnlNb2R1bGVTaGFwZT4+LCBFID0gbmV2ZXIsIFIgPSBuZXZlcj4oXG4gIG1vZHVsZXM6IE1vZHVsZXMsXG4gIGxvZ2ljOiAoJDogeyBbSyBpbiBrZXlvZiBNb2R1bGVzXTogTW9kdWxlSGFuZGxlPE1vZHVsZXNbS11bJ3NoYXBlJ10+IH0pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgUj4sXG4pOiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIFI+IHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBoYW5kbGVzOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVIYW5kbGU8QW55TW9kdWxlU2hhcGU+PiA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIG1vZHVsZV0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcykpIHtcbiAgICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogbW9kdWxlXG5cbiAgICAgIGhhbmRsZXNba2V5XSA9IHtcbiAgICAgICAgcmVhZDogKHNlbGVjdG9yOiBhbnkpID0+IEVmZmVjdC5tYXAocnVudGltZS5nZXRTdGF0ZSwgc2VsZWN0b3IpLFxuICAgICAgICBjaGFuZ2VzOiBydW50aW1lLmNoYW5nZXMsXG4gICAgICAgIGRpc3BhdGNoOiBydW50aW1lLmRpc3BhdGNoLFxuICAgICAgICBhY3Rpb25zJDogcnVudGltZS5hY3Rpb25zJCxcbiAgICAgICAgYWN0aW9uczogbmV3IFByb3h5KFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IChwYXlsb2FkOiBhbnkpID0+IHJ1bnRpbWUuZGlzcGF0Y2goeyBfdGFnOiBwcm9wIGFzIHN0cmluZywgcGF5bG9hZCB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB5aWVsZCogbG9naWMoXG4gICAgICBoYW5kbGVzIGFzIHtcbiAgICAgICAgW0sgaW4ga2V5b2YgTW9kdWxlc106IE1vZHVsZUhhbmRsZTxNb2R1bGVzW0tdWydzaGFwZSddPlxuICAgICAgfSxcbiAgICApXG4gIH0pXG59XG5cbi8qKlxuICogTW9kdWxlIFx1NURFNVx1NTM4Mlx1NUI5RVx1NzNCMFx1RkYxQVx1NjgzOVx1NjM2RSBpZCBcdTU0OEMgU2NoZW1hIFx1NUI5QVx1NEU0OVx1Njc4NFx1OTAyMCBNb2R1bGVUYWdcdTMwMDJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1vZHVsZTxJZCBleHRlbmRzIHN0cmluZywgU1NjaGVtYSBleHRlbmRzIEFueVNjaGVtYSwgQU1hcCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEFueVNjaGVtYT4+KFxuICBpZDogSWQsXG4gIGRlZjoge1xuICAgIHJlYWRvbmx5IHN0YXRlOiBTU2NoZW1hXG4gICAgcmVhZG9ubHkgYWN0aW9uczogQU1hcFxuICAgIHJlYWRvbmx5IHJlZHVjZXJzPzogUmVkdWNlcnNGcm9tTWFwPFNTY2hlbWEsIEFNYXA+XG4gIH0sXG4pOiBMb2dpeE1vZHVsZVRhZzxJZCwgTW9kdWxlU2hhcGU8U1NjaGVtYSwgU2NoZW1hLlNjaGVtYTxBY3Rpb25zRnJvbU1hcDxBTWFwPj4sIEFNYXA+PiB7XG4gIGNvbnN0IHNoYXBlOiBNb2R1bGVTaGFwZTxTU2NoZW1hLCBTY2hlbWEuU2NoZW1hPEFjdGlvbnNGcm9tTWFwPEFNYXA+PiwgQU1hcD4gPSB7XG4gICAgc3RhdGVTY2hlbWE6IGRlZi5zdGF0ZSxcbiAgICBhY3Rpb25TY2hlbWE6IFNjaGVtYS5VbmlvbihcbiAgICAgIC4uLk9iamVjdC5lbnRyaWVzKGRlZi5hY3Rpb25zKS5tYXAoKFt0YWcsIHBheWxvYWRdKSA9PlxuICAgICAgICBTY2hlbWEuU3RydWN0KFxuICAgICAgICAgIHBheWxvYWQgPT09IFNjaGVtYS5Wb2lkXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBfdGFnOiBTY2hlbWEuTGl0ZXJhbCh0YWcpLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IFNjaGVtYS5vcHRpb25hbChwYXlsb2FkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgX3RhZzogU2NoZW1hLkxpdGVyYWwodGFnKSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApIGFzIHVua25vd24gYXMgU2NoZW1hLlNjaGVtYTxBY3Rpb25zRnJvbU1hcDxBTWFwPj4sXG4gICAgYWN0aW9uTWFwOiBkZWYuYWN0aW9ucyxcbiAgfVxuXG4gIHR5cGUgU2hhcGVTdGF0ZSA9IFN0YXRlT2Y8dHlwZW9mIHNoYXBlPlxuICB0eXBlIFNoYXBlQWN0aW9uID0gQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPlxuXG4gIC8vIFx1NUMwNlx1NjMwOSBUYWcgXHU1MjA2XHU3RUM0XHU3Njg0IHJlZHVjZXIgXHU2NjIwXHU1QzA0XHU0RTNBXHU3QjgwXHU1MzU1XHU3Njg0IGBfdGFnIC0+IChzdGF0ZSwgYWN0aW9uLCBzaW5rPykgPT4gc3RhdGVgIFx1NUY2Mlx1NjAwMVx1RkYwQ1x1NEY5QiBSdW50aW1lIFx1NEY3Rlx1NzUyOFx1MzAwMlxuICBjb25zdCByZWR1Y2VycyA9XG4gICAgZGVmLnJlZHVjZXJzICYmXG4gICAgKE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGRlZi5yZWR1Y2VycykubWFwKChbdGFnLCByZWR1Y2VyXSkgPT4gW1xuICAgICAgICB0YWcsXG4gICAgICAgIChzdGF0ZTogU2hhcGVTdGF0ZSwgYWN0aW9uOiBTaGFwZUFjdGlvbiwgc2luaz86IChwYXRoOiBzdHJpbmcgfCBGaWVsZFBhdGgpID0+IHZvaWQpID0+XG4gICAgICAgICAgLy8gXHU4RkQ5XHU5MUNDXHU0RjlEXHU4RDU2IGBfdGFnYCBcdTc2ODRcdThGRDBcdTg4NENcdTY1RjZcdTdFQTZcdTVCOUFcdUZGMUFcdTUzRUFcdTY3MDlcdTUzMzlcdTkxNERcdTVGNTNcdTUyNEQgdGFnIFx1NzY4NCBBY3Rpb24gXHU0RjFBXHU0RUE0XHU3RUQ5XHU1QkY5XHU1RTk0IHJlZHVjZXJcdTMwMDJcbiAgICAgICAgICAocmVkdWNlciBhcyBhbnkpKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBhY3Rpb24gYXMge1xuICAgICAgICAgICAgICByZWFkb25seSBfdGFnOiBzdHJpbmdcbiAgICAgICAgICAgICAgcmVhZG9ubHkgcGF5bG9hZDogdW5rbm93blxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpbmssXG4gICAgICAgICAgKSBhcyBTaGFwZVN0YXRlLFxuICAgICAgXSksXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCAoc3RhdGU6IFNoYXBlU3RhdGUsIGFjdGlvbjogU2hhcGVBY3Rpb24sIHNpbms/OiAocGF0aDogc3RyaW5nIHwgRmllbGRQYXRoKSA9PiB2b2lkKSA9PiBTaGFwZVN0YXRlPilcblxuICBjbGFzcyBNb2R1bGVUYWcgZXh0ZW5kcyBDb250ZXh0LlRhZyhgQGxvZ2l4L01vZHVsZS8ke2lkfWApPFxuICAgIE1vZHVsZVRhZyxcbiAgICBpbXBvcnQoJy4vY29yZS9tb2R1bGUuanMnKS5Nb2R1bGVSdW50aW1lPFN0YXRlT2Y8dHlwZW9mIHNoYXBlPiwgQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPj5cbiAgPigpIHt9XG5cbiAgY29uc3QgdGFnID0gTW9kdWxlVGFnXG5cbiAgY29uc3QgbW9kdWxlVGFnID0gT2JqZWN0LmFzc2lnbih0YWcsIHtcbiAgICBfa2luZDogJ01vZHVsZVRhZycgYXMgY29uc3QsXG4gICAgaWQsXG4gICAgc2hhcGUsXG4gICAgc3RhdGVTY2hlbWE6IHNoYXBlLnN0YXRlU2NoZW1hLFxuICAgIGFjdGlvblNjaGVtYTogc2hhcGUuYWN0aW9uU2NoZW1hLFxuICAgIC8qKlxuICAgICAqIFx1NEUzQVx1NUY1M1x1NTI0RCBNb2R1bGUgXHU2Nzg0XHU5MDIwXHU0RTAwXHU2QkI1IExvZ2ljIFx1N0EwQlx1NUU4Rlx1RkYxQVxuICAgICAqIC0gXHU1NzI4XHU4RkQwXHU4ODRDXHU2NUY2XHU0RUNFIENvbnRleHQgXHU0RTJEXHU1M0Q2XHU1MUZBXHU4MUVBXHU4RUFCXHU3Njg0IE1vZHVsZVJ1bnRpbWVcdUZGMUJcbiAgICAgKiAtIFx1NTdGQVx1NEU4RSBSdW50aW1lIFx1Njc4NFx1OTAyMCBCb3VuZEFwaVx1RkYxQlxuICAgICAqIC0gXHU1QzA2IEJvdW5kQXBpIFx1NEVBNFx1N0VEOVx1OEMwM1x1NzUyOFx1NjVCOVx1Njc4NFx1OTAyMFx1NEUxQVx1NTJBMSBMb2dpY1x1MzAwMlxuICAgICAqL1xuICAgIGxvZ2ljOiA8UiA9IHVua25vd24sIEUgPSBuZXZlcj4oXG4gICAgICBidWlsZDogKGFwaTogaW1wb3J0KCcuL2NvcmUvbW9kdWxlLmpzJykuQm91bmRBcGk8dHlwZW9mIHNoYXBlLCBSPikgPT4gTW9kdWxlTG9naWM8dHlwZW9mIHNoYXBlLCBSLCBFPixcbiAgICApOiBNb2R1bGVMb2dpYzx0eXBlb2Ygc2hhcGUsIFIsIEU+ID0+IHtcbiAgICAgIGNvbnN0IHBoYXNlUmVmOiBMb2dpY1BsYW5NYXJrZXIuUGhhc2VSZWYgPSB7IGN1cnJlbnQ6ICdzZXR1cCcgfVxuICAgICAgY29uc3QgcGhhc2VTZXJ2aWNlOiBMb2dpY0RpYWdub3N0aWNzLkxvZ2ljUGhhc2VTZXJ2aWNlID0ge1xuICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcGhhc2VSZWYuY3VycmVudFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICAgY29uc3QgbG9naWNFZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogdGFnXG4gICAgICAgIGNvbnN0IGxvZ2ljVW5pdCA9IHlpZWxkKiBFZmZlY3Quc2VydmljZU9wdGlvbihMb2dpY0RpYWdub3N0aWNzLkxvZ2ljVW5pdFNlcnZpY2VUYWcpLnBpcGUoXG4gICAgICAgICAgRWZmZWN0Lm1hcChPcHRpb24uZ2V0T3JVbmRlZmluZWQpLFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGFwaSA9IEJvdW5kQXBpUnVudGltZS5tYWtlPHR5cGVvZiBzaGFwZSwgUj4oc2hhcGUsIHJ1bnRpbWUsIHtcbiAgICAgICAgICBnZXRQaGFzZTogKCkgPT4gcGhhc2VSZWYuY3VycmVudCxcbiAgICAgICAgICBwaGFzZVNlcnZpY2UsXG4gICAgICAgICAgbW9kdWxlSWQ6IGlkLFxuICAgICAgICAgIGxvZ2ljVW5pdCxcbiAgICAgICAgfSlcblxuICAgICAgICBsZXQgYnVpbHQ6IHVua25vd25cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBidWlsdCA9IGJ1aWxkKGFwaSlcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLy8gXHU1QzA2XHU1NDBDXHU2QjY1XHU2MjlCXHU1MUZBXHU3Njg0IExvZ2ljUGhhc2VFcnJvciBcdThGNkNcdTYzNjJcdTRFM0EgRWZmZWN0LmZhaWxcdUZGMENcdTkwN0ZcdTUxNEQgcnVuU3luYyBcdTg5QzZcdTRFM0FcdTIwMUNcdTVGMDJcdTZCNjVcdTY3MkFcdTUxQjMgRmliZXJcdTIwMURcbiAgICAgICAgICBpZiAoKGVyciBhcyBhbnkpPy5fdGFnID09PSAnTG9naWNQaGFzZUVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChlcnIgYXMgYW55KVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChMb2dpY1BsYW5NYXJrZXIuaXNMb2dpY1BsYW5FZmZlY3QoYnVpbHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHlpZWxkKiBidWlsdCBhcyBFZmZlY3QuRWZmZWN0PGFueSwgYW55LCBhbnk+XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0xvZ2ljUGxhbiA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGltcG9ydCgnLi9jb3JlL21vZHVsZS5qcycpLkxvZ2ljUGxhbjx0eXBlb2Ygc2hhcGUsIFIsIEU+ID0+XG4gICAgICAgICAgQm9vbGVhbih2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdzZXR1cCcgaW4gKHZhbHVlIGFzIGFueSkgJiYgJ3J1bicgaW4gKHZhbHVlIGFzIGFueSkpXG5cbiAgICAgICAgY29uc3QgcGxhbiA9IGlzTG9naWNQbGFuKGJ1aWx0KVxuICAgICAgICAgID8gYnVpbHRcbiAgICAgICAgICA6ICh7XG4gICAgICAgICAgICAgIHNldHVwOiBFZmZlY3Qudm9pZCxcbiAgICAgICAgICAgICAgcnVuOiBidWlsdCBhcyBFZmZlY3QuRWZmZWN0PGFueSwgYW55LCBhbnk+LFxuICAgICAgICAgICAgfSBzYXRpc2ZpZXMgaW1wb3J0KCcuL2NvcmUvbW9kdWxlLmpzJykuTG9naWNQbGFuPHR5cGVvZiBzaGFwZSwgUiwgRT4pXG5cbiAgICAgICAgTG9naWNQbGFuTWFya2VyLmF0dGFjaFBoYXNlUmVmKHBsYW4gYXMgYW55LCBwaGFzZVJlZilcbiAgICAgICAgcmV0dXJuIHBsYW5cbiAgICAgIH0pXG5cbiAgICAgIExvZ2ljUGxhbk1hcmtlci5tYXJrQXNMb2dpY1BsYW5FZmZlY3QobG9naWNFZmZlY3QpXG4gICAgICBMb2dpY1BsYW5NYXJrZXIuYXR0YWNoUGhhc2VSZWYobG9naWNFZmZlY3QsIHBoYXNlUmVmKVxuICAgICAgcmV0dXJuIGxvZ2ljRWZmZWN0XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGxpdmVcdUZGMUFcdTdFRDlcdTVCOUFcdTUyMURcdTU5Q0JcdTcyQjZcdTYwMDFcdTRFMEVcdTRFMDBcdTdFQzQgTG9naWNcdUZGMENcdTY3ODRcdTkwMjBcdTVFMjYgU2NvcGUgXHU3Njg0IE1vZHVsZVJ1bnRpbWUgTGF5ZXJcdTMwMDJcbiAgICAgKlxuICAgICAqIEVudiBcdTdFQTZcdTVCOUFcdUZGMUFcbiAgICAgKiAtIFIgXHU4ODY4XHU3OTNBIExvZ2ljIFx1OEZEMFx1ODg0Q1x1NjI0MFx1OTcwMFx1NzY4NFx1OTg5RFx1NTkxNlx1NzNBRlx1NTg4M1x1RkYwOFNlcnZpY2UgLyBcdTVFNzNcdTUzRjBcdTdCNDlcdUZGMDlcdUZGMUJcbiAgICAgKiAtIE1vZHVsZVJ1bnRpbWUgXHU2NzJDXHU4RUFCXHU1M0VBXHU0RjlEXHU4RDU2IFNjb3BlLlNjb3BlXHVGRjBDXHU3NTMxIExheWVyLnNjb3BlZCBcdTdCQTFcdTc0MDZcdTMwMDJcbiAgICAgKi9cbiAgICBsaXZlOiA8UiA9IG5ldmVyLCBFID0gbmV2ZXI+KFxuICAgICAgaW5pdGlhbDogU3RhdGVPZjx0eXBlb2Ygc2hhcGU+LFxuICAgICAgLi4ubG9naWNzOiBBcnJheTxNb2R1bGVMb2dpYzx0eXBlb2Ygc2hhcGUsIFIsIEU+PlxuICAgICk6IExheWVyLkxheWVyPGltcG9ydCgnLi9jb3JlL21vZHVsZS5qcycpLk1vZHVsZVJ1bnRpbWU8U3RhdGVPZjx0eXBlb2Ygc2hhcGU+LCBBY3Rpb25PZjx0eXBlb2Ygc2hhcGU+PiwgRSwgUj4gPT5cbiAgICAgIExheWVyLnNjb3BlZChcbiAgICAgICAgdGFnLFxuICAgICAgICBNb2R1bGVSdW50aW1lSW1wbC5tYWtlPFN0YXRlT2Y8dHlwZW9mIHNoYXBlPiwgQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPiwgUj4oaW5pdGlhbCwge1xuICAgICAgICAgIHRhZyxcbiAgICAgICAgICBsb2dpY3M6IGxvZ2ljcyBhcyBSZWFkb25seUFycmF5PEVmZmVjdC5FZmZlY3Q8YW55LCBhbnksIGFueT4+LFxuICAgICAgICAgIG1vZHVsZUlkOiBpZCxcbiAgICAgICAgICByZWR1Y2VycyxcbiAgICAgICAgfSksXG4gICAgICApIGFzIHVua25vd24gYXMgTGF5ZXIuTGF5ZXI8XG4gICAgICAgIGltcG9ydCgnLi9jb3JlL21vZHVsZS5qcycpLk1vZHVsZVJ1bnRpbWU8U3RhdGVPZjx0eXBlb2Ygc2hhcGU+LCBBY3Rpb25PZjx0eXBlb2Ygc2hhcGU+PixcbiAgICAgICAgRSxcbiAgICAgICAgUlxuICAgICAgPixcblxuICAgIC8qKlxuICAgICAqIGltcGxlbWVudFx1RkYxQVx1NTdGQVx1NEU4RSBNb2R1bGUgXHU1QjlBXHU0RTQ5ICsgXHU1MjFEXHU1OUNCXHU3MkI2XHU2MDAxICsgTG9naWMgXHU5NkM2XHU1NDA4XHVGRjBDXHU3NTFGXHU2MjEwIE1vZHVsZUltcGwgXHU4NEREXHU1NkZFXHUzMDAyXG4gICAgICpcbiAgICAgKiAtIFIgXHU4ODY4XHU3OTNBIExvZ2ljIFx1NjI0MFx1OTcwMFx1NzY4NCBFbnYgXHU3QzdCXHU1NzhCXHVGRjFCXG4gICAgICogLSBcdThGRDRcdTU2REVcdTc2ODQgTW9kdWxlSW1wbC5sYXllciBcdTRGMUFcdTY0M0FcdTVFMjYgUiBcdTRGNUNcdTRFM0FcdThGOTNcdTUxNjVcdTczQUZcdTU4ODNcdUZGMUJcbiAgICAgKiAtIFx1OTAxQVx1OEZDNyB3aXRoTGF5ZXIvd2l0aExheWVycyBcdTUzRUZcdTRFRTVcdTkwMTBcdTZCNjVcdTVDMDYgUiBcdTY1MzZcdTY1NUJcdTRFM0FcdTY2RjRcdTUxNzdcdTRGNTNcdTc2ODQgRW52XHVGRjA4XHU3NTFBXHU4MUYzIG5ldmVyXHVGRjA5XHUzMDAyXG4gICAgICovXG4gICAgaW1wbGVtZW50OiA8UiA9IG5ldmVyPihjb25maWc6IHtcbiAgICAgIGluaXRpYWw6IFN0YXRlT2Y8dHlwZW9mIHNoYXBlPlxuICAgICAgbG9naWNzPzogQXJyYXk8TW9kdWxlTG9naWM8dHlwZW9mIHNoYXBlLCBSLCBuZXZlcj4+XG4gICAgICBpbXBvcnRzPzogUmVhZG9ubHlBcnJheTxMYXllci5MYXllcjxhbnksIGFueSwgYW55PiB8IE1vZHVsZUltcGw8YW55LCBBbnlNb2R1bGVTaGFwZSwgYW55Pj5cbiAgICAgIC8qKlxuICAgICAgICogcHJvY2Vzc2VzXHVGRjFBXHU0RTBFXHU4QkU1IE1vZHVsZSBcdTVCOUVcdTczQjBcdTdFRDFcdTVCOUFcdTc2ODRcdTRFMDBcdTdFQzRcdTk1N0ZcdTY3MUZcdTZENDFcdTdBMEJcdUZGMDhcdTU0MkIgTGlua1x1RkYwOVx1MzAwMlxuICAgICAgICpcbiAgICAgICAqIC0gXHU4RkQ5XHU0RTlCIEVmZmVjdCBcdTRGMUFcdTU3MjhcdThGRDBcdTg4NENcdTY1RjZcdTVCQjlcdTU2NjhcdUZGMDhcdTRGOEJcdTU5ODIgUnVudGltZS5tYWtlXHVGRjA5XHU0RTJEXHU4OEFCXHU3RURGXHU0RTAwIGZvcmtcdUZGMUJcbiAgICAgICAqIC0gXHU3QzdCXHU1NzhCXHU0RTBBXHU0RjdGXHU3NTI4XHU1QkJEXHU2NzdFXHU3Njg0IEUvUiBcdTRFRTVcdTRGQkZcdTdFQzRcdTU0MDhcdTU0MDRcdTc5Q0RcdThERThcdTZBMjFcdTU3NTdcdTdGMTZcdTYzOTJcdTkwM0JcdThGOTFcdUZGMUJcbiAgICAgICAqIC0gXHU0RTFBXHU1MkExXHU0RUUzXHU3ODAxXHU5MDFBXHU1RTM4XHU5MDFBXHU4RkM3IExpbmsubWFrZSBcdTY3ODRcdTkwMjBcdThGRDlcdTRFOUJcdTZENDFcdTdBMEJcdTMwMDJcbiAgICAgICAqL1xuICAgICAgcHJvY2Vzc2VzPzogUmVhZG9ubHlBcnJheTxFZmZlY3QuRWZmZWN0PHZvaWQsIGFueSwgYW55Pj5cbiAgICAgIC8qKlxuICAgICAgICogc3RhdGVUcmFuc2FjdGlvblx1RkYxQVx1NkEyMVx1NTc1N1x1N0VBNyBTdGF0ZVRyYW5zYWN0aW9uIFx1OTE0RFx1N0Y2RVx1MzAwMlxuICAgICAgICpcbiAgICAgICAqIC0gaW5zdHJ1bWVudGF0aW9uIFx1NjcyQVx1NjNEMFx1NEY5Qlx1NjVGNlx1RkYwQ1x1OTAwMFx1NTZERVx1NTIzMCBSdW50aW1lIFx1N0VBN1x1OTE0RFx1N0Y2RVx1RkYwOFx1NTk4Mlx1NjcwOVx1RkYwOVx1NjIxNiBOT0RFX0VOViBcdTlFRDhcdThCQTRcdUZGMUJcbiAgICAgICAqIC0gaW5zdHJ1bWVudGF0aW9uIFx1NjNEMFx1NEY5Qlx1NjVGNlx1RkYwQ1x1NEYxOFx1NTE0OFx1NEU4RSBSdW50aW1lIFx1N0VBN1x1OTE0RFx1N0Y2RVx1NEUwRVx1OUVEOFx1OEJBNFx1NTAzQ1x1MzAwMlxuICAgICAgICovXG4gICAgICBzdGF0ZVRyYW5zYWN0aW9uPzogTW9kdWxlSW1wbGVtZW50U3RhdGVUcmFuc2FjdGlvbk9wdGlvbnNcbiAgICB9KTogTW9kdWxlSW1wbDxJZCwgTW9kdWxlU2hhcGU8U1NjaGVtYSwgU2NoZW1hLlNjaGVtYTxBY3Rpb25zRnJvbU1hcDxBTWFwPj4sIEFNYXA+LCBSPiA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRlZE1vZHVsZXMgPSAoY29uZmlnLmltcG9ydHMgPz8gW10pLmZsYXRNYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKChpdGVtIGFzIE1vZHVsZUltcGw8YW55LCBBbnlNb2R1bGVTaGFwZSwgYW55PikuX3RhZyA9PT0gJ01vZHVsZUltcGwnKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIChpdGVtIGFzIE1vZHVsZUltcGw8YW55LCBBbnlNb2R1bGVTaGFwZSwgYW55PikubW9kdWxlIGFzIHVua25vd24gYXMgQ29udGV4dC5UYWc8XG4gICAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgICAgaW1wb3J0KCcuL2NvcmUvbW9kdWxlLmpzJykuTW9kdWxlUnVudGltZTxhbnksIGFueT5cbiAgICAgICAgICAgID4sXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXVxuICAgICAgfSlcblxuICAgICAgY29uc3QgYmFzZUxheWVyID0gTGF5ZXIuc2NvcGVkKFxuICAgICAgICB0YWcsXG4gICAgICAgIE1vZHVsZVJ1bnRpbWVJbXBsLm1ha2U8U3RhdGVPZjx0eXBlb2Ygc2hhcGU+LCBBY3Rpb25PZjx0eXBlb2Ygc2hhcGU+LCBSPihjb25maWcuaW5pdGlhbCwge1xuICAgICAgICAgIHRhZyxcbiAgICAgICAgICBsb2dpY3M6IChjb25maWcubG9naWNzIHx8IFtdKSBhcyBSZWFkb25seUFycmF5PEVmZmVjdC5FZmZlY3Q8YW55LCBhbnksIGFueT4+LFxuICAgICAgICAgIHByb2Nlc3NlczogKGNvbmZpZy5wcm9jZXNzZXMgfHwgW10pIGFzIFJlYWRvbmx5QXJyYXk8RWZmZWN0LkVmZmVjdDx2b2lkLCBhbnksIGFueT4+LFxuICAgICAgICAgIG1vZHVsZUlkOiBpZCxcbiAgICAgICAgICBpbXBvcnRzOiBpbXBvcnRlZE1vZHVsZXMsXG4gICAgICAgICAgcmVkdWNlcnMsXG4gICAgICAgICAgc3RhdGVUcmFuc2FjdGlvbjogY29uZmlnLnN0YXRlVHJhbnNhY3Rpb24sXG4gICAgICAgIH0pLFxuICAgICAgKSBhcyB1bmtub3duIGFzIExheWVyLkxheWVyPFxuICAgICAgICBpbXBvcnQoJy4vY29yZS9tb2R1bGUuanMnKS5Nb2R1bGVSdW50aW1lPFN0YXRlT2Y8dHlwZW9mIHNoYXBlPiwgQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPj4sXG4gICAgICAgIG5ldmVyLFxuICAgICAgICBhbnlcbiAgICAgID5cblxuICAgICAgY29uc3QgcHJvY2Vzc2VzID0gY29uZmlnLnByb2Nlc3NlcyA/PyBbXVxuXG4gICAgICBjb25zdCBtYWtlSW1wbFdpdGhMYXllciA9IChcbiAgICAgICAgbGF5ZXI6IExheWVyLkxheWVyPFxuICAgICAgICAgIGltcG9ydCgnLi9jb3JlL21vZHVsZS5qcycpLk1vZHVsZVJ1bnRpbWU8U3RhdGVPZjx0eXBlb2Ygc2hhcGU+LCBBY3Rpb25PZjx0eXBlb2Ygc2hhcGU+PixcbiAgICAgICAgICBuZXZlcixcbiAgICAgICAgICBhbnlcbiAgICAgICAgPixcbiAgICAgICk6IE1vZHVsZUltcGw8SWQsIE1vZHVsZVNoYXBlPFNTY2hlbWEsIFNjaGVtYS5TY2hlbWE8QWN0aW9uc0Zyb21NYXA8QU1hcD4+LCBBTWFwPiwgYW55PiA9PiAoe1xuICAgICAgICBfdGFnOiAnTW9kdWxlSW1wbCcsXG4gICAgICAgIG1vZHVsZTogbW9kdWxlVGFnIGFzIHVua25vd24gYXMgTG9naXhNb2R1bGVUYWc8XG4gICAgICAgICAgSWQsXG4gICAgICAgICAgTW9kdWxlU2hhcGU8U1NjaGVtYSwgU2NoZW1hLlNjaGVtYTxBY3Rpb25zRnJvbU1hcDxBTWFwPj4sIEFNYXA+XG4gICAgICAgID4sXG4gICAgICAgIGxheWVyLFxuICAgICAgICBwcm9jZXNzZXMsXG4gICAgICAgIHN0YXRlVHJhbnNhY3Rpb246IGNvbmZpZy5zdGF0ZVRyYW5zYWN0aW9uLFxuICAgICAgICB3aXRoTGF5ZXI6IChcbiAgICAgICAgICBleHRyYTogTGF5ZXIuTGF5ZXI8YW55LCBuZXZlciwgYW55PixcbiAgICAgICAgKTogTW9kdWxlSW1wbDxJZCwgTW9kdWxlU2hhcGU8U1NjaGVtYSwgU2NoZW1hLlNjaGVtYTxBY3Rpb25zRnJvbU1hcDxBTWFwPj4sIEFNYXA+LCBhbnk+ID0+IHtcbiAgICAgICAgICBjb25zdCBwcm92aWRlZCA9IChcbiAgICAgICAgICAgIGxheWVyIGFzIExheWVyLkxheWVyPFxuICAgICAgICAgICAgICBpbXBvcnQoJy4vY29yZS9tb2R1bGUuanMnKS5Nb2R1bGVSdW50aW1lPFN0YXRlT2Y8dHlwZW9mIHNoYXBlPiwgQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPj4sXG4gICAgICAgICAgICAgIG5ldmVyLFxuICAgICAgICAgICAgICBhbnlcbiAgICAgICAgICAgID5cbiAgICAgICAgICApLnBpcGUoTGF5ZXIucHJvdmlkZShleHRyYSBhcyBMYXllci5MYXllcjxhbnksIG5ldmVyLCBhbnk+KSlcblxuICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IExheWVyLm1lcmdlQWxsKHByb3ZpZGVkLCBleHRyYSBhcyBMYXllci5MYXllcjxhbnksIG5ldmVyLCBhbnk+KSBhcyBMYXllci5MYXllcjxcbiAgICAgICAgICAgIGltcG9ydCgnLi9jb3JlL21vZHVsZS5qcycpLk1vZHVsZVJ1bnRpbWU8U3RhdGVPZjx0eXBlb2Ygc2hhcGU+LCBBY3Rpb25PZjx0eXBlb2Ygc2hhcGU+PixcbiAgICAgICAgICAgIG5ldmVyLFxuICAgICAgICAgICAgYW55XG4gICAgICAgICAgPlxuXG4gICAgICAgICAgcmV0dXJuIG1ha2VJbXBsV2l0aExheWVyKG1lcmdlZClcbiAgICAgICAgfSxcbiAgICAgICAgd2l0aExheWVyczogKFxuICAgICAgICAgIC4uLmV4dHJhczogUmVhZG9ubHlBcnJheTxMYXllci5MYXllcjxhbnksIG5ldmVyLCBhbnk+PlxuICAgICAgICApOiBNb2R1bGVJbXBsPElkLCBNb2R1bGVTaGFwZTxTU2NoZW1hLCBTY2hlbWEuU2NoZW1hPEFjdGlvbnNGcm9tTWFwPEFNYXA+PiwgQU1hcD4sIGFueT4gPT5cbiAgICAgICAgICBleHRyYXMucmVkdWNlPE1vZHVsZUltcGw8SWQsIE1vZHVsZVNoYXBlPFNTY2hlbWEsIFNjaGVtYS5TY2hlbWE8QWN0aW9uc0Zyb21NYXA8QU1hcD4+LCBBTWFwPiwgYW55Pj4oXG4gICAgICAgICAgICAoaW1wbEFjYywgZXh0cmEpID0+IGltcGxBY2Mud2l0aExheWVyKGV4dHJhKSxcbiAgICAgICAgICAgIG1ha2VJbXBsV2l0aExheWVyKFxuICAgICAgICAgICAgICBsYXllciBhcyBMYXllci5MYXllcjxcbiAgICAgICAgICAgICAgICBpbXBvcnQoJy4vY29yZS9tb2R1bGUuanMnKS5Nb2R1bGVSdW50aW1lPFN0YXRlT2Y8dHlwZW9mIHNoYXBlPiwgQWN0aW9uT2Y8dHlwZW9mIHNoYXBlPj4sXG4gICAgICAgICAgICAgICAgbmV2ZXIsXG4gICAgICAgICAgICAgICAgYW55XG4gICAgICAgICAgICAgID4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICB9KVxuXG4gICAgICAvLyBcdTRFQ0UgYmFzZUxheWVyIFx1NUYwMFx1NTlDQlx1RkYwQ1x1NEY5RFx1NkIyMVx1NTNFMFx1NTJBMCBpbXBvcnRzXHVGRjA4TGF5ZXIgXHU2MjE2XHU1MTc2XHU0RUQ2IE1vZHVsZUltcGwgXHU3Njg0IGxheWVyXHVGRjA5XG4gICAgICBjb25zdCBpbml0aWFsSW1wbCA9IG1ha2VJbXBsV2l0aExheWVyKFxuICAgICAgICBiYXNlTGF5ZXIgYXMgTGF5ZXIuTGF5ZXI8XG4gICAgICAgICAgaW1wb3J0KCcuL2NvcmUvbW9kdWxlLmpzJykuTW9kdWxlUnVudGltZTxTdGF0ZU9mPHR5cGVvZiBzaGFwZT4sIEFjdGlvbk9mPHR5cGVvZiBzaGFwZT4+LFxuICAgICAgICAgIG5ldmVyLFxuICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgICAgKVxuXG4gICAgICBjb25zdCBpbXBvcnRzID0gY29uZmlnLmltcG9ydHMgPz8gW11cblxuICAgICAgY29uc3QgZmluYWxJbXBsID0gaW1wb3J0cy5yZWR1Y2U8XG4gICAgICAgIE1vZHVsZUltcGw8SWQsIE1vZHVsZVNoYXBlPFNTY2hlbWEsIFNjaGVtYS5TY2hlbWE8QWN0aW9uc0Zyb21NYXA8QU1hcD4+LCBBTWFwPiwgYW55PlxuICAgICAgPigoaW1wbEFjYywgaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBsYXllciA9XG4gICAgICAgICAgKGl0ZW0gYXMgTW9kdWxlSW1wbDxhbnksIEFueU1vZHVsZVNoYXBlLCBhbnk+KS5fdGFnID09PSAnTW9kdWxlSW1wbCdcbiAgICAgICAgICAgID8gKGl0ZW0gYXMgTW9kdWxlSW1wbDxhbnksIEFueU1vZHVsZVNoYXBlLCBhbnk+KS5sYXllclxuICAgICAgICAgICAgOiAoaXRlbSBhcyBMYXllci5MYXllcjxhbnksIGFueSwgYW55PilcblxuICAgICAgICByZXR1cm4gaW1wbEFjYy53aXRoTGF5ZXIobGF5ZXIgYXMgTGF5ZXIuTGF5ZXI8YW55LCBuZXZlciwgYW55PilcbiAgICAgIH0sIGluaXRpYWxJbXBsKVxuXG4gICAgICByZXR1cm4gZmluYWxJbXBsXG4gICAgfSxcbiAgfSlcblxuICByZXR1cm4gbW9kdWxlVGFnIGFzIExvZ2l4TW9kdWxlVGFnPElkLCBNb2R1bGVTaGFwZTxTU2NoZW1hLCBTY2hlbWEuU2NoZW1hPEFjdGlvbnNGcm9tTWFwPEFNYXA+PiwgQU1hcD4+XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVMsU0FBUyxRQUFRLE9BQU8sUUFBUSxjQUFjO0FBNkJoRCxTQUFTLEtBQ2QsU0FDQSxPQUMyQjtBQUMzQixTQUFPLE9BQU8sSUFBSSxhQUFhO0FBQzdCLFVBQU0sVUFBd0QsQ0FBQztBQUUvRCxlQUFXLENBQUMsS0FBSyxNQUFNLEtBQUssT0FBTyxRQUFRLE9BQU8sR0FBRztBQUNuRCxZQUFNLFVBQVUsT0FBTztBQUV2QixjQUFRLEdBQUcsSUFBSTtBQUFBLFFBQ2IsTUFBTSxDQUFDLGFBQWtCLE9BQU8sSUFBSSxRQUFRLFVBQVUsUUFBUTtBQUFBLFFBQzlELFNBQVMsUUFBUTtBQUFBLFFBQ2pCLFVBQVUsUUFBUTtBQUFBLFFBQ2xCLFVBQVUsUUFBUTtBQUFBLFFBQ2xCLFNBQVMsSUFBSTtBQUFBLFVBQ1gsQ0FBQztBQUFBLFVBQ0Q7QUFBQSxZQUNFLEtBQUssQ0FBQyxTQUFTLFNBQVMsQ0FBQyxZQUFpQixRQUFRLFNBQVMsRUFBRSxNQUFNLE1BQWdCLFFBQVEsQ0FBQztBQUFBLFVBQzlGO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsV0FBTyxPQUFPO0FBQUEsTUFDWjtBQUFBLElBR0Y7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUtPLFNBQVMsT0FDZCxJQUNBLEtBS3FGO0FBQ3JGLFFBQU0sUUFBeUU7QUFBQSxJQUM3RSxhQUFhLElBQUk7QUFBQSxJQUNqQixjQUFjLE9BQU87QUFBQSxNQUNuQixHQUFHLE9BQU8sUUFBUSxJQUFJLE9BQU8sRUFBRTtBQUFBLFFBQUksQ0FBQyxDQUFDQSxNQUFLLE9BQU8sTUFDL0MsT0FBTztBQUFBLFVBQ0wsWUFBWSxPQUFPLE9BQ2Y7QUFBQSxZQUNFLE1BQU0sT0FBTyxR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
@@ -0,0 +1,13 @@
1
+ // @logixjs/core subpath bundles for @logixjs/sandbox
2
+
3
+
4
+ // ../logix-core/src/internal/runtime/core/RootContext.ts
5
+ import { Context } from "../effect.js";
6
+ var RootContextTagImpl = class extends Context.Tag("@logixjs/core/RootContext")() {
7
+ };
8
+ var RootContextTag = RootContextTagImpl;
9
+
10
+ export {
11
+ RootContextTag
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL1Jvb3RDb250ZXh0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBDb250ZXh0LCBEZWZlcnJlZCB9IGZyb20gJ2VmZmVjdCdcblxuZXhwb3J0IGludGVyZmFjZSBSb290Q29udGV4dCB7XG4gIGNvbnRleHQ6IENvbnRleHQuQ29udGV4dDxhbnk+IHwgdW5kZWZpbmVkXG4gIHJlYWRvbmx5IHJlYWR5OiBEZWZlcnJlZC5EZWZlcnJlZDxDb250ZXh0LkNvbnRleHQ8YW55PiwgbmV2ZXI+XG4gIHJlYWRvbmx5IGFwcElkPzogc3RyaW5nXG4gIHJlYWRvbmx5IGFwcE1vZHVsZUlkcz86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPlxufVxuXG5jbGFzcyBSb290Q29udGV4dFRhZ0ltcGwgZXh0ZW5kcyBDb250ZXh0LlRhZygnQGxvZ2l4anMvY29yZS9Sb290Q29udGV4dCcpPFJvb3RDb250ZXh0VGFnSW1wbCwgUm9vdENvbnRleHQ+KCkge31cblxuZXhwb3J0IGNvbnN0IFJvb3RDb250ZXh0VGFnID0gUm9vdENvbnRleHRUYWdJbXBsXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBQUEsU0FBUyxlQUF5QjtBQVNsQyxJQUFNLHFCQUFOLGNBQWlDLFFBQVEsSUFBSSwyQkFBMkIsRUFBbUMsRUFBRTtBQUFDO0FBRXZHLElBQU0saUJBQWlCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,69 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ record
5
+ } from "./chunk-SFXJ24HY.js";
6
+
7
+ // ../logix-core/src/Middleware.ts
8
+ import { Effect } from "../effect.js";
9
+ var makeDebugLogger = (config) => (op) => Effect.gen(function* () {
10
+ if (op.meta?.policy?.disableObservers) {
11
+ return yield* op.effect;
12
+ }
13
+ if (config?.logger) {
14
+ config.logger(op);
15
+ } else {
16
+ yield* Effect.logDebug(
17
+ `[EffectOp] kind=${op.kind} name=${op.name}`
18
+ );
19
+ }
20
+ return yield* op.effect;
21
+ });
22
+ var applyDebug = (stack, config) => [...stack, makeDebugLogger(config)];
23
+ var makeDebugObserver = (config) => (op) => Effect.gen(function* () {
24
+ if (op.meta?.policy?.disableObservers) {
25
+ return yield* op.effect;
26
+ }
27
+ if (!config?.filter || config.filter(op)) {
28
+ const meta = op.meta ?? {};
29
+ const slimOp = {
30
+ id: op.id,
31
+ kind: op.kind,
32
+ name: op.name,
33
+ payload: op.payload,
34
+ meta: op.meta
35
+ };
36
+ yield* record({
37
+ type: "trace:effectop",
38
+ moduleId: typeof meta.moduleId === "string" ? meta.moduleId : void 0,
39
+ instanceId: typeof meta.instanceId === "string" ? meta.instanceId : void 0,
40
+ runtimeLabel: typeof meta.runtimeLabel === "string" ? meta.runtimeLabel : void 0,
41
+ txnSeq: typeof meta.txnSeq === "number" && Number.isFinite(meta.txnSeq) ? Math.floor(meta.txnSeq) : void 0,
42
+ data: slimOp
43
+ });
44
+ }
45
+ return yield* op.effect;
46
+ });
47
+ var applyDebugObserver = (stack, config) => [...stack, makeDebugObserver(config)];
48
+ var withDebug = (stack, options) => {
49
+ let next = stack;
50
+ if (options?.logger !== false) {
51
+ const loggerConfig = typeof options?.logger === "function" ? { logger: options.logger } : void 0;
52
+ next = applyDebug(next, loggerConfig);
53
+ }
54
+ if (options?.observer !== false) {
55
+ const observerOption = options?.observer;
56
+ const observerConfig = observerOption === void 0 ? void 0 : observerOption;
57
+ next = applyDebugObserver(next, observerConfig);
58
+ }
59
+ return next;
60
+ };
61
+
62
+ export {
63
+ makeDebugLogger,
64
+ applyDebug,
65
+ makeDebugObserver,
66
+ applyDebugObserver,
67
+ withDebug
68
+ };
69
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvTWlkZGxld2FyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gTWlkZGxld2FyZSBcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTUxNjVcdTUzRTNcdUZGMDhAbG9naXgvY29yZS9NaWRkbGV3YXJlXHVGRjA5XHUzMDAyXG4vLyAtIFx1NjNEMFx1NEY5Qlx1NTdGQVx1NEU4RSBFZmZlY3RPcCBcdTc2ODRcdThDMDNcdThCRDUvXHU4OUMyXHU2RDRCXHU0RTJEXHU5NUY0XHU0RUY2XHU3QjQ5XHU4Rjg1XHU1MkE5XHU1REU1XHU1MTc3XHVGRjFCXG4vLyAtIFF1ZXJ5IC8gRGVidWdPYnNlcnZlciBcdTdCNDlcdTgwRkRcdTUyOUJcdTU3MjhcdTY3MkNcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTRFMEJcdTYyNjlcdTVDNTVcdTMwMDJcblxuaW1wb3J0IHsgRWZmZWN0IH0gZnJvbSBcImVmZmVjdFwiXG5pbXBvcnQgKiBhcyBFZmZlY3RPcCBmcm9tIFwiLi9FZmZlY3RPcC5qc1wiXG5pbXBvcnQgKiBhcyBEZWJ1ZyBmcm9tIFwiLi9EZWJ1Zy5qc1wiXG5cbmV4cG9ydCB0eXBlIE1pZGRsZXdhcmUgPSBFZmZlY3RPcC5NaWRkbGV3YXJlXG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlU3RhY2sgPSBFZmZlY3RPcC5NaWRkbGV3YXJlU3RhY2tcblxuZXhwb3J0IGludGVyZmFjZSBEZWJ1Z0xvZ2dlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBcdTUzRUZcdTkwMDlcdUZGMUFcdTgxRUFcdTVCOUFcdTRFNDlcdTY1RTVcdTVGRDdcdTUxRkRcdTY1NzBcdUZGMENcdTY1QjlcdTRGQkZcdTU3MjhcdTZENEJcdThCRDVcdTRFMkRcdTYzNTVcdTgzQjdcdThDMDNcdTc1MjhcdTMwMDJcbiAgICogLSBcdTgyRTVcdTY3MkFcdTYzRDBcdTRGOUJcdUZGMENcdTUyMTlcdTlFRDhcdThCQTRcdTRGN0ZcdTc1MjggRWZmZWN0LmxvZ0RlYnVnIFx1OEY5M1x1NTFGQVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VyPzogKG9wOiBFZmZlY3RPcC5FZmZlY3RPcDxhbnksIGFueSwgYW55PikgPT4gdm9pZFxufVxuXG4vKipcbiAqIFx1NTIxQlx1NUVGQVx1NEUwMFx1NEUyQVx1N0I4MFx1NTM1NVx1NzY4NCBEZWJ1ZyBcdTY1RTVcdTVGRDdcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUFcbiAqIC0gXHU1NzI4XHU2MjY3XHU4ODRDIEVmZmVjdCBcdTRFNEJcdTUyNERcdThCQjBcdTVGNTVcdTRFMDBcdTY3NjFcdTY1RTVcdTVGRDdcdUZGMUJcbiAqIC0gXHU0RTBEXHU2NTM5XHU1M0Q4XHU3RUQzXHU2NzlDXHU0RTBFXHU5NTE5XHU4QkVGXHU4QkVEXHU0RTQ5XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVidWdMb2dnZXIgPSAoXG4gIGNvbmZpZz86IERlYnVnTG9nZ2VyQ29uZmlnLFxuKTogTWlkZGxld2FyZSA9PlxuICA8QSwgRSwgUj4ob3A6IEVmZmVjdE9wLkVmZmVjdE9wPEEsIEUsIFI+KTogRWZmZWN0LkVmZmVjdDxBLCBFLCBSPiA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgIC8vIFx1N0VBRlx1ODlDMlx1NkQ0Qlx1N0M3Qlx1ODBGRFx1NTI5Qlx1RkYxQVx1NTE0MVx1OEJCOFx1ODhBQlx1NUM0MFx1OTBFOFx1N0I1Nlx1NzU2NVx1NTE3M1x1OTVFRFx1MzAwMlxuICAgICAgaWYgKG9wLm1ldGE/LnBvbGljeT8uZGlzYWJsZU9ic2VydmVycykge1xuICAgICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZz8ubG9nZ2VyKSB7XG4gICAgICAgIGNvbmZpZy5sb2dnZXIob3ApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFxuICAgICAgICAgIGBbRWZmZWN0T3BdIGtpbmQ9JHtvcC5raW5kfSBuYW1lPSR7b3AubmFtZX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4geWllbGQqIG9wLmVmZmVjdFxuICAgIH0pXG5cbi8qKlxuICogYXBwbHlEZWJ1Z1x1RkYxQVxuICogLSBcdTU3MjhcdTczQjBcdTY3MDkgTWlkZGxld2FyZVN0YWNrIFx1NjcyQlx1NUMzRVx1OEZGRFx1NTJBMFx1NEUwMFx1NEUyQSBEZWJ1Z0xvZ2dlciBcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUJcbiAqIC0gXHU4RkQ0XHU1NkRFXHU2NUIwXHU3Njg0IHN0YWNrXHVGRjBDXHU0RTBEXHU0RkVFXHU2NTM5XHU1MzlGXHU2NTcwXHU3RUM0XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseURlYnVnID0gKFxuICBzdGFjazogTWlkZGxld2FyZVN0YWNrLFxuICBjb25maWc/OiBEZWJ1Z0xvZ2dlckNvbmZpZyxcbik6IE1pZGRsZXdhcmVTdGFjayA9PiBbLi4uc3RhY2ssIG1ha2VEZWJ1Z0xvZ2dlcihjb25maWcpXVxuXG4vKipcbiAqIERlYnVnT2JzZXJ2ZXJDb25maWdcdUZGMUFcbiAqIC0gXHU5ODg0XHU3NTU5XHU4RkM3XHU2RUU0XHU1MTY1XHU1M0UzXHVGRjFBXHU1M0VGXHU2MzA5XHU2QTIxXHU1NzU3IC8ga2luZCAvIG5hbWUgXHU3QjQ5XHU3RUY0XHU1RUE2XHU3QjVCXHU5MDA5XHU5NzAwXHU4OTgxXHU4OUMyXHU2RDRCXHU3Njg0IEVmZmVjdE9wXHUzMDAyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdPYnNlcnZlckNvbmZpZyB7XG4gIHJlYWRvbmx5IGZpbHRlcj86IChcbiAgICBvcDogRWZmZWN0T3AuRWZmZWN0T3A8YW55LCBhbnksIGFueT4sXG4gICkgPT4gYm9vbGVhblxufVxuXG4vKipcbiAqIG1ha2VEZWJ1Z09ic2VydmVyXHVGRjFBXG4gKiAtIFx1NUMwNiBFZmZlY3RPcCBcdTZENDFcdTdFREZcdTRFMDBcdTY1MzZcdTUzRTNcdTUyMzAgRGVidWdTaW5rXHVGRjA4RWZmZWN0T3AgXHUyMTkyIERlYnVnLkV2ZW50XHVGRjA5XHVGRjFCXG4gKiAtIFx1NUY1M1x1NTI0RFx1OTAxQVx1OEZDNyB0cmFjZToqIFx1NEU4Qlx1NEVGNlx1NUMwNiBFZmZlY3RPcCBcdTc2ODQgU2xpbSBcdTg5QzZcdTU2RkVcdTkwMEZcdTRGMjBcdTUyMzAgRGVidWcgXHU2RDQxXHVGRjA4XHU3OTgxXHU2QjYyXHU2NDNBXHU1RTI2IGVmZmVjdCBcdTk1RURcdTUzMDVcdUZGMDlcdUZGMUFcbiAqICAgLSB0eXBlOiBcInRyYWNlOmVmZmVjdG9wXCJcbiAqICAgLSBtb2R1bGVJZDogXHU2NzY1XHU4MUVBIG9wLm1ldGE/Lm1vZHVsZUlkXHVGRjA4XHU4MkU1XHU1QjU4XHU1NzI4XHVGRjA5XG4gKiAgIC0gZGF0YTogeyBpZCwga2luZCwgbmFtZSwgcGF5bG9hZCwgbWV0YSB9XG4gKlxuICogXHU4QkY0XHU2NjBFXHVGRjFBXG4gKiAtIFx1NEUwRFx1NjUzOVx1NTNEOFx1NTM5Rlx1NjcwOSBFZmZlY3QgXHU4ODRDXHU0RTNBXHVGRjBDXHU0RUM1XHU4RkZEXHU1MkEwIERlYnVnIFx1NEZBN1x1ODlDMlx1NkQ0Qlx1RkYxQlxuICogLSBcdTUxNzdcdTRGNTNcdTc2ODQgRGV2dG9vbHMgLyBUaW1lbGluZSBcdTg5QzZcdTU2RkVcdTUzRUZcdTRFRTVcdTU3RkFcdTRFOEUgdHJhY2U6ZWZmZWN0b3AgXHU0RThCXHU0RUY2XHU5MUNEXHU1RUZBIEVmZmVjdE9wIFx1NjVGNlx1OTVGNFx1N0VCRlx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgbWFrZURlYnVnT2JzZXJ2ZXIgPSAoXG4gIGNvbmZpZz86IERlYnVnT2JzZXJ2ZXJDb25maWcsXG4pOiBNaWRkbGV3YXJlID0+XG4gIDxBLCBFLCBSPihvcDogRWZmZWN0T3AuRWZmZWN0T3A8QSwgRSwgUj4pOiBFZmZlY3QuRWZmZWN0PEEsIEUsIFI+ID0+XG4gICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgLy8gXHU3RUFGXHU4OUMyXHU2RDRCXHU3QzdCXHU4MEZEXHU1MjlCXHVGRjFBXHU1MTQxXHU4QkI4XHU4OEFCXHU1QzQwXHU5MEU4XHU3QjU2XHU3NTY1XHU1MTczXHU5NUVEXHUzMDAyXG4gICAgICBpZiAob3AubWV0YT8ucG9saWN5Py5kaXNhYmxlT2JzZXJ2ZXJzKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCogb3AuZWZmZWN0XG4gICAgICB9XG4gICAgICBpZiAoIWNvbmZpZz8uZmlsdGVyIHx8IGNvbmZpZy5maWx0ZXIob3ApKSB7XG4gICAgICAgIGNvbnN0IG1ldGE6IGFueSA9IG9wLm1ldGEgPz8ge31cbiAgICAgICAgY29uc3Qgc2xpbU9wID0ge1xuICAgICAgICAgIGlkOiBvcC5pZCxcbiAgICAgICAgICBraW5kOiBvcC5raW5kLFxuICAgICAgICAgIG5hbWU6IG9wLm5hbWUsXG4gICAgICAgICAgcGF5bG9hZDogb3AucGF5bG9hZCxcbiAgICAgICAgICBtZXRhOiBvcC5tZXRhLFxuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiBEZWJ1Zy5yZWNvcmQoe1xuICAgICAgICAgIHR5cGU6IFwidHJhY2U6ZWZmZWN0b3BcIixcbiAgICAgICAgICBtb2R1bGVJZDogdHlwZW9mIG1ldGEubW9kdWxlSWQgPT09IFwic3RyaW5nXCIgPyBtZXRhLm1vZHVsZUlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGluc3RhbmNlSWQ6IHR5cGVvZiBtZXRhLmluc3RhbmNlSWQgPT09IFwic3RyaW5nXCIgPyBtZXRhLmluc3RhbmNlSWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcnVudGltZUxhYmVsOiB0eXBlb2YgbWV0YS5ydW50aW1lTGFiZWwgPT09IFwic3RyaW5nXCIgPyBtZXRhLnJ1bnRpbWVMYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0eG5TZXE6XG4gICAgICAgICAgICB0eXBlb2YgbWV0YS50eG5TZXEgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1ldGEudHhuU2VxKVxuICAgICAgICAgICAgICA/IE1hdGguZmxvb3IobWV0YS50eG5TZXEpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGRhdGE6IHNsaW1PcCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB5aWVsZCogb3AuZWZmZWN0XG4gICAgfSlcblxuLyoqXG4gKiBhcHBseURlYnVnT2JzZXJ2ZXJcdUZGMUFcbiAqIC0gXHU1NzI4XHU3M0IwXHU2NzA5IE1pZGRsZXdhcmVTdGFjayBcdTY3MkJcdTVDM0VcdThGRkRcdTUyQTAgRGVidWdPYnNlcnZlciBcdTRFMkRcdTk1RjRcdTRFRjZcdUZGMUJcbiAqIC0gXHU4RkQ0XHU1NkRFXHU2NUIwXHU3Njg0IHN0YWNrXHVGRjBDXHU0RTBEXHU0RkVFXHU2NTM5XHU1MzlGXHU2NTcwXHU3RUM0XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseURlYnVnT2JzZXJ2ZXIgPSAoXG4gIHN0YWNrOiBNaWRkbGV3YXJlU3RhY2ssXG4gIGNvbmZpZz86IERlYnVnT2JzZXJ2ZXJDb25maWcsXG4pOiBNaWRkbGV3YXJlU3RhY2sgPT4gWy4uLnN0YWNrLCBtYWtlRGVidWdPYnNlcnZlcihjb25maWcpXVxuXG4vKipcbiAqIFdpdGhEZWJ1Z09wdGlvbnNcdUZGMUFcbiAqIC0gXHU5QUQ4XHU1QzQyXHU3RUM0XHU1NDA4XHU1MTY1XHU1M0UzXHU3Njg0XHU5MTREXHU3RjZFXHU5ODc5XHVGRjBDXHU3NTI4XHU0RThFXHU1NzI4XHU3M0IwXHU2NzA5IE1pZGRsZXdhcmVTdGFjayBcdTRFMEFcdThGRkRcdTUyQTAgRGVidWcgXHU4MEZEXHU1MjlCXHUzMDAyXG4gKlxuICogXHU3RUE2XHU1QjlBXHVGRjFBXG4gKiAtIGxvZ2dlcjpcbiAqICAgLSBcdTY3MkFcdThCQkVcdTdGNkVcdUZGMDh1bmRlZmluZWRcdUZGMDlcdUZGMUFcdTU0MkZcdTc1MjhcdTlFRDhcdThCQTQgRGVidWdMb2dnZXJcdUZGMDhFZmZlY3QubG9nRGVidWdcdUZGMDlcdUZGMUJcbiAqICAgLSBcdTYzRDBcdTRGOUJcdTUxRkRcdTY1NzBcdUZGMUFcdTRGN0ZcdTc1MjhcdTgxRUFcdTVCOUFcdTRFNDkgbG9nZ2VyKG9wKSBcdTY2RkZcdTRFRTNcdTlFRDhcdThCQTRcdTg4NENcdTRFM0FcdUZGMUJcbiAqICAgLSBcdTY2M0VcdTVGMEYgZmFsc2VcdUZGMUFcdTRFMERcdThGRkRcdTUyQTAgRGVidWdMb2dnZXIgXHU0RTJEXHU5NUY0XHU0RUY2XHUzMDAyXG4gKiAtIG9ic2VydmVyOlxuICogICAtIFx1NjcyQVx1OEJCRVx1N0Y2RVx1RkYwOHVuZGVmaW5lZFx1RkYwOVx1RkYxQVx1NTQyRlx1NzUyOCBEZWJ1Z09ic2VydmVyXHVGRjBDXHU0RjdGXHU3NTI4XHU5RUQ4XHU4QkE0XHU5MTREXHU3RjZFXHVGRjFCXG4gKiAgIC0gXHU2M0QwXHU0RjlCIERlYnVnT2JzZXJ2ZXJDb25maWdcdUZGMUFcdTYzMDlcdTkxNERcdTdGNkVcdTU0MkZcdTc1MjggRGVidWdPYnNlcnZlclx1RkYxQlxuICogICAtIFx1NjYzRVx1NUYwRiBmYWxzZVx1RkYxQVx1NEUwRFx1OEZGRFx1NTJBMCBEZWJ1Z09ic2VydmVyIFx1NEUyRFx1OTVGNFx1NEVGNlx1MzAwMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhEZWJ1Z09wdGlvbnMge1xuICByZWFkb25seSBsb2dnZXI/OiBEZWJ1Z0xvZ2dlckNvbmZpZ1tcImxvZ2dlclwiXSB8IGZhbHNlXG4gIHJlYWRvbmx5IG9ic2VydmVyPzogRGVidWdPYnNlcnZlckNvbmZpZyB8IGZhbHNlXG59XG5cbi8qKlxuICogd2l0aERlYnVnXHVGRjFBXG4gKiAtIFx1NTcyOFx1NzNCMFx1NjcwOSBNaWRkbGV3YXJlU3RhY2sgXHU0RTBBXHU4RkZEXHU1MkEwIERlYnVnTG9nZ2VyICsgRGVidWdPYnNlcnZlciBcdTk4ODRcdThCQkVcdUZGMUJcbiAqIC0gXHU2NTJGXHU2MzAxXHU5MDFBXHU4RkM3IG9wdGlvbnMgXHU2M0E3XHU1MjM2IGxvZ2dlciAvIG9ic2VydmVyIFx1NjYyRlx1NTQyNlx1NTQyRlx1NzUyOFx1NTNDQVx1NTE3Nlx1OTE0RFx1N0Y2RVx1RkYxQlxuICogLSBcdThGRDRcdTU2REVcdTY1QjBcdTc2ODQgc3RhY2tcdUZGMENcdTRFMERcdTRGRUVcdTY1MzlcdTUzOUZcdTY1NzBcdTdFQzRcdTMwMDJcbiAqXG4gKiBcdTUxNzhcdTU3OEJcdTc1MjhcdTZDRDVcdUZGMUFcbiAqXG4gKiAgIGxldCBzdGFjazogTWlkZGxld2FyZVN0YWNrID0gW21ldHJpY3MsIHRpbWluZ11cbiAqICAgc3RhY2sgPSBNaWRkbGV3YXJlLndpdGhEZWJ1ZyhzdGFjaywge1xuICogICAgIGxvZ2dlcjogKG9wKSA9PiBjb25zb2xlLmxvZyhvcC5raW5kLCBvcC5uYW1lKSxcbiAqICAgICBvYnNlcnZlcjogeyBmaWx0ZXI6IChvcCkgPT4gb3Aua2luZCAhPT0gXCJzZXJ2aWNlXCIgfSxcbiAqICAgfSlcbiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhEZWJ1ZyA9IChcbiAgc3RhY2s6IE1pZGRsZXdhcmVTdGFjayxcbiAgb3B0aW9ucz86IFdpdGhEZWJ1Z09wdGlvbnMsXG4pOiBNaWRkbGV3YXJlU3RhY2sgPT4ge1xuICBsZXQgbmV4dCA9IHN0YWNrXG5cbiAgLy8gRGVidWdMb2dnZXJcdUZGMUFcdTlFRDhcdThCQTRcdTVGMDBcdTU0MkZcdUZGMENcdTk2NjRcdTk3NUVcdTY2M0VcdTVGMEYgbG9nZ2VyID09PSBmYWxzZVx1MzAwMlxuICBpZiAob3B0aW9ucz8ubG9nZ2VyICE9PSBmYWxzZSkge1xuICAgIGNvbnN0IGxvZ2dlckNvbmZpZzogRGVidWdMb2dnZXJDb25maWcgfCB1bmRlZmluZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbnM/LmxvZ2dlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgID8geyBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBuZXh0ID0gYXBwbHlEZWJ1ZyhuZXh0LCBsb2dnZXJDb25maWcpXG4gIH1cblxuICAvLyBEZWJ1Z09ic2VydmVyXHVGRjFBXHU5RUQ4XHU4QkE0XHU1RjAwXHU1NDJGXHVGRjBDXHU5NjY0XHU5NzVFXHU2NjNFXHU1RjBGIG9ic2VydmVyID09PSBmYWxzZVx1MzAwMlxuICBpZiAob3B0aW9ucz8ub2JzZXJ2ZXIgIT09IGZhbHNlKSB7XG4gICAgLy8gXHU4RkQ5XHU5MUNDXHU1REYyXHU3RUNGXHU5MDFBXHU4RkM3XHU2NzYxXHU0RUY2XHU2MzkyXHU5NjY0XHU0RTg2IG9ic2VydmVyID09PSBmYWxzZVx1RkYwQ1x1NTNFQVx1OTcwMFx1ODk4MVx1NTcyOFx1NjcwOVx1OTE0RFx1N0Y2RVx1NUJGOVx1OEM2MVx1NjVGNlx1OTAwRlx1NEYyMFx1RkYxQlxuICAgIC8vIHVuZGVmaW5lZCBcdTg4NjhcdTc5M0FcdTRGN0ZcdTc1MjggRGVidWdPYnNlcnZlciBcdTlFRDhcdThCQTRcdTg4NENcdTRFM0FcdTMwMDJcbiAgICBjb25zdCBvYnNlcnZlck9wdGlvbiA9IG9wdGlvbnM/Lm9ic2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2ZXJDb25maWc6IERlYnVnT2JzZXJ2ZXJDb25maWcgfCB1bmRlZmluZWQgPVxuICAgICAgb2JzZXJ2ZXJPcHRpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9ic2VydmVyT3B0aW9uXG4gICAgbmV4dCA9IGFwcGx5RGVidWdPYnNlcnZlcihuZXh0LCBvYnNlcnZlckNvbmZpZylcbiAgfVxuXG4gIHJldHVybiBuZXh0XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBSUEsU0FBUyxjQUFjO0FBb0JoQixJQUFNLGtCQUFrQixDQUM3QixXQUVBLENBQVUsT0FDUixPQUFPLElBQUksYUFBYTtBQUV0QixNQUFJLEdBQUcsTUFBTSxRQUFRLGtCQUFrQjtBQUNyQyxXQUFPLE9BQU8sR0FBRztBQUFBLEVBQ25CO0FBQ0EsTUFBSSxRQUFRLFFBQVE7QUFDbEIsV0FBTyxPQUFPLEVBQUU7QUFBQSxFQUNsQixPQUFPO0FBQ0wsV0FBTyxPQUFPO0FBQUEsTUFDWixtQkFBbUIsR0FBRyxJQUFJLFNBQVMsR0FBRyxJQUFJO0FBQUEsSUFDNUM7QUFBQSxFQUNGO0FBQ0EsU0FBTyxPQUFPLEdBQUc7QUFDbkIsQ0FBQztBQU9FLElBQU0sYUFBYSxDQUN4QixPQUNBLFdBQ29CLENBQUMsR0FBRyxPQUFPLGdCQUFnQixNQUFNLENBQUM7QUF3QmpELElBQU0sb0JBQW9CLENBQy9CLFdBRUEsQ0FBVSxPQUNSLE9BQU8sSUFBSSxhQUFhO0FBRXRCLE1BQUksR0FBRyxNQUFNLFFBQVEsa0JBQWtCO0FBQ3JDLFdBQU8sT0FBTyxHQUFHO0FBQUEsRUFDbkI7QUFDQSxNQUFJLENBQUMsUUFBUSxVQUFVLE9BQU8sT0FBTyxFQUFFLEdBQUc7QUFDeEMsVUFBTSxPQUFZLEdBQUcsUUFBUSxDQUFDO0FBQzlCLFVBQU0sU0FBUztBQUFBLE1BQ2IsSUFBSSxHQUFHO0FBQUEsTUFDUCxNQUFNLEdBQUc7QUFBQSxNQUNULE1BQU0sR0FBRztBQUFBLE1BQ1QsU0FBUyxHQUFHO0FBQUEsTUFDWixNQUFNLEdBQUc7QUFBQSxJQUNYO0FBQ0EsV0FBYSxPQUFPO0FBQUEsTUFDbEIsTUFBTTtBQUFBLE1BQ04sVUFBVSxPQUFPLEtBQUssYUFBYSxXQUFXLEtBQUssV0FBVztBQUFBLE1BQzlELFlBQVksT0FBTyxLQUFLLGVBQWUsV0FBVyxLQUFLLGFBQWE7QUFBQSxNQUNwRSxjQUFjLE9BQU8sS0FBSyxpQkFBaUIsV0FBVyxLQUFLLGVBQWU7QUFBQSxNQUMxRSxRQUNFLE9BQU8sS0FBSyxXQUFXLFlBQVksT0FBTyxTQUFTLEtBQUssTUFBTSxJQUMxRCxLQUFLLE1BQU0sS0FBSyxNQUFNLElBQ3RCO0FBQUEsTUFDTixNQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sT0FBTyxHQUFHO0FBQ25CLENBQUM7QUFPRSxJQUFNLHFCQUFxQixDQUNoQyxPQUNBLFdBQ29CLENBQUMsR0FBRyxPQUFPLGtCQUFrQixNQUFNLENBQUM7QUFtQ25ELElBQU0sWUFBWSxDQUN2QixPQUNBLFlBQ29CO0FBQ3BCLE1BQUksT0FBTztBQUdYLE1BQUksU0FBUyxXQUFXLE9BQU87QUFDN0IsVUFBTSxlQUNKLE9BQU8sU0FBUyxXQUFXLGFBQ3ZCLEVBQUUsUUFBUSxRQUFRLE9BQU8sSUFDekI7QUFDTixXQUFPLFdBQVcsTUFBTSxZQUFZO0FBQUEsRUFDdEM7QUFHQSxNQUFJLFNBQVMsYUFBYSxPQUFPO0FBRy9CLFVBQU0saUJBQWlCLFNBQVM7QUFDaEMsVUFBTSxpQkFDSixtQkFBbUIsU0FBWSxTQUFZO0FBQzdDLFdBQU8sbUJBQW1CLE1BQU0sY0FBYztBQUFBLEVBQ2hEO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,147 @@
1
+ // @logixjs/core subpath bundles for @logixjs/sandbox
2
+
3
+
4
+ // ../logix-core/src/internal/runtime/core/HostScheduler.ts
5
+ var noopCancel = () => {
6
+ };
7
+ var safeNowMs = () => {
8
+ const perf = globalThis.performance;
9
+ if (perf && typeof perf.now === "function") {
10
+ try {
11
+ const v = perf.now();
12
+ if (typeof v === "number" && Number.isFinite(v)) return v;
13
+ } catch {
14
+ }
15
+ }
16
+ return Date.now();
17
+ };
18
+ var safeQueueMicrotask = (cb) => {
19
+ const qm = globalThis.queueMicrotask;
20
+ if (typeof qm === "function") {
21
+ try {
22
+ qm(cb);
23
+ return;
24
+ } catch {
25
+ }
26
+ }
27
+ try {
28
+ Promise.resolve().then(cb);
29
+ } catch {
30
+ setTimeout(cb, 0);
31
+ }
32
+ };
33
+ var safeSetTimeout = (ms, cb) => {
34
+ const id = setTimeout(cb, ms);
35
+ return () => {
36
+ try {
37
+ clearTimeout(id);
38
+ } catch {
39
+ }
40
+ };
41
+ };
42
+ var makeMessageChannelMacrotask = () => {
43
+ const MC = globalThis.MessageChannel;
44
+ if (typeof MC !== "function") return void 0;
45
+ let channel;
46
+ try {
47
+ channel = new MC();
48
+ } catch {
49
+ return void 0;
50
+ }
51
+ const queue = [];
52
+ let scheduled = false;
53
+ const flush = () => {
54
+ scheduled = false;
55
+ const tasks = queue.splice(0, queue.length);
56
+ for (const t of tasks) {
57
+ if (t.canceled) continue;
58
+ try {
59
+ t.cb();
60
+ } catch {
61
+ }
62
+ }
63
+ };
64
+ try {
65
+ channel.port1.onmessage = flush;
66
+ } catch {
67
+ return void 0;
68
+ }
69
+ const schedule = (cb) => {
70
+ const task = { canceled: false, cb };
71
+ queue.push(task);
72
+ if (!scheduled) {
73
+ scheduled = true;
74
+ try {
75
+ channel.port2.postMessage(void 0);
76
+ } catch {
77
+ scheduled = false;
78
+ return safeSetTimeout(0, cb);
79
+ }
80
+ }
81
+ return () => {
82
+ task.canceled = true;
83
+ };
84
+ };
85
+ return schedule;
86
+ };
87
+ var makeSetImmediateMacrotask = () => {
88
+ const si = globalThis.setImmediate;
89
+ const ci = globalThis.clearImmediate;
90
+ if (typeof si !== "function") return void 0;
91
+ return (cb) => {
92
+ let id;
93
+ try {
94
+ id = si(cb);
95
+ } catch {
96
+ return safeSetTimeout(0, cb);
97
+ }
98
+ return () => {
99
+ if (typeof ci !== "function") return;
100
+ try {
101
+ ci(id);
102
+ } catch {
103
+ }
104
+ };
105
+ };
106
+ };
107
+ var makeRaf = () => {
108
+ const raf = globalThis.requestAnimationFrame;
109
+ const cancel = globalThis.cancelAnimationFrame;
110
+ if (typeof raf !== "function") return void 0;
111
+ return (cb) => {
112
+ let id;
113
+ try {
114
+ id = raf(cb);
115
+ } catch {
116
+ return noopCancel;
117
+ }
118
+ return () => {
119
+ if (typeof cancel !== "function") return;
120
+ try {
121
+ cancel(id);
122
+ } catch {
123
+ }
124
+ };
125
+ };
126
+ };
127
+ var makeDefaultHostScheduler = () => {
128
+ const macrotask = makeSetImmediateMacrotask() ?? makeMessageChannelMacrotask() ?? ((cb) => safeSetTimeout(0, cb));
129
+ const raf = makeRaf();
130
+ return {
131
+ nowMs: safeNowMs,
132
+ scheduleMicrotask: safeQueueMicrotask,
133
+ scheduleMacrotask: macrotask,
134
+ scheduleAnimationFrame: (cb) => raf?.(cb) ?? macrotask(cb),
135
+ scheduleTimeout: safeSetTimeout
136
+ };
137
+ };
138
+ var globalHostScheduler;
139
+ var getGlobalHostScheduler = () => {
140
+ globalHostScheduler ?? (globalHostScheduler = makeDefaultHostScheduler());
141
+ return globalHostScheduler;
142
+ };
143
+
144
+ export {
145
+ getGlobalHostScheduler
146
+ };
147
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0hvc3RTY2hlZHVsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB0eXBlIENhbmNlbCA9ICgpID0+IHZvaWRcblxuZXhwb3J0IHR5cGUgSG9zdFNjaGVkdWxlciA9IHtcbiAgcmVhZG9ubHkgbm93TXM6ICgpID0+IG51bWJlclxuICByZWFkb25seSBzY2hlZHVsZU1pY3JvdGFzazogKGNiOiAoKSA9PiB2b2lkKSA9PiB2b2lkXG4gIHJlYWRvbmx5IHNjaGVkdWxlTWFjcm90YXNrOiAoY2I6ICgpID0+IHZvaWQpID0+IENhbmNlbFxuICByZWFkb25seSBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lOiAoY2I6ICgpID0+IHZvaWQpID0+IENhbmNlbFxuICByZWFkb25seSBzY2hlZHVsZVRpbWVvdXQ6IChtczogbnVtYmVyLCBjYjogKCkgPT4gdm9pZCkgPT4gQ2FuY2VsXG59XG5cbmNvbnN0IG5vb3BDYW5jZWw6IENhbmNlbCA9ICgpID0+IHt9XG5cbmNvbnN0IHNhZmVOb3dNcyA9ICgpOiBudW1iZXIgPT4ge1xuICBjb25zdCBwZXJmID0gKGdsb2JhbFRoaXMgYXMgYW55KS5wZXJmb3JtYW5jZSBhcyB7IG5vdz86ICgpID0+IG51bWJlciB9IHwgdW5kZWZpbmVkXG4gIGlmIChwZXJmICYmIHR5cGVvZiBwZXJmLm5vdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB2ID0gcGVyZi5ub3coKVxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodikpIHJldHVybiB2XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBEYXRlLm5vdygpXG59XG5cbmNvbnN0IHNhZmVRdWV1ZU1pY3JvdGFzayA9IChjYjogKCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICBjb25zdCBxbSA9IChnbG9iYWxUaGlzIGFzIGFueSkucXVldWVNaWNyb3Rhc2sgYXMgKChydW46ICgpID0+IHZvaWQpID0+IHZvaWQpIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlb2YgcW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgcW0oY2IpXG4gICAgICByZXR1cm5cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgLy8gUHJvbWlzZSBqb2IgZmFsbGJhY2sgKHN0aWxsIGEgbWljcm90YXNrIGJvdW5kYXJ5KS5cbiAgdHJ5IHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGNiKVxuICB9IGNhdGNoIHtcbiAgICAvLyBsYXN0IHJlc29ydFxuICAgIHNldFRpbWVvdXQoY2IsIDApXG4gIH1cbn1cblxuY29uc3Qgc2FmZVNldFRpbWVvdXQgPSAobXM6IG51bWJlciwgY2I6ICgpID0+IHZvaWQpOiBDYW5jZWwgPT4ge1xuICBjb25zdCBpZCA9IHNldFRpbWVvdXQoY2IsIG1zKVxuICByZXR1cm4gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjbGVhclRpbWVvdXQoaWQpXG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBiZXN0LWVmZm9ydFxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBtYWtlTWVzc2FnZUNoYW5uZWxNYWNyb3Rhc2sgPSAoKTogKChjYjogKCkgPT4gdm9pZCkgPT4gQ2FuY2VsKSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IE1DID0gKGdsb2JhbFRoaXMgYXMgYW55KS5NZXNzYWdlQ2hhbm5lbCBhcyB7IG5ldyAoKTogTWVzc2FnZUNoYW5uZWwgfSB8IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIE1DICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgbGV0IGNoYW5uZWw6IE1lc3NhZ2VDaGFubmVsXG4gIHRyeSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNQygpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHR5cGUgVGFzayA9IHsgY2FuY2VsZWQ6IGJvb2xlYW47IGNiOiAoKSA9PiB2b2lkIH1cbiAgY29uc3QgcXVldWU6IEFycmF5PFRhc2s+ID0gW11cbiAgbGV0IHNjaGVkdWxlZCA9IGZhbHNlXG5cbiAgY29uc3QgZmx1c2ggPSAoKTogdm9pZCA9PiB7XG4gICAgc2NoZWR1bGVkID0gZmFsc2VcbiAgICBjb25zdCB0YXNrcyA9IHF1ZXVlLnNwbGljZSgwLCBxdWV1ZS5sZW5ndGgpXG4gICAgZm9yIChjb25zdCB0IG9mIHRhc2tzKSB7XG4gICAgICBpZiAodC5jYW5jZWxlZCkgY29udGludWVcbiAgICAgIHRyeSB7XG4gICAgICAgIHQuY2IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJlc3QtZWZmb3J0XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZsdXNoXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IHNjaGVkdWxlID0gKGNiOiAoKSA9PiB2b2lkKTogQ2FuY2VsID0+IHtcbiAgICBjb25zdCB0YXNrOiBUYXNrID0geyBjYW5jZWxlZDogZmFsc2UsIGNiIH1cbiAgICBxdWV1ZS5wdXNoKHRhc2spXG4gICAgaWYgKCFzY2hlZHVsZWQpIHtcbiAgICAgIHNjaGVkdWxlZCA9IHRydWVcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UodW5kZWZpbmVkKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHNjaGVkdWxlZCA9IGZhbHNlXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIHRpbWVvdXQgaWYgcG9zdE1lc3NhZ2UgZmFpbHNcbiAgICAgICAgcmV0dXJuIHNhZmVTZXRUaW1lb3V0KDAsIGNiKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGFzay5jYW5jZWxlZCA9IHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZWR1bGVcbn1cblxuY29uc3QgbWFrZVNldEltbWVkaWF0ZU1hY3JvdGFzayA9ICgpOiAoKGNiOiAoKSA9PiB2b2lkKSA9PiBDYW5jZWwpIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc2kgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLnNldEltbWVkaWF0ZSBhcyAoKHJ1bjogKCkgPT4gdm9pZCkgPT4gYW55KSB8IHVuZGVmaW5lZFxuICBjb25zdCBjaSA9IChnbG9iYWxUaGlzIGFzIGFueSkuY2xlYXJJbW1lZGlhdGUgYXMgKChpZDogYW55KSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIHNpICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIChjYikgPT4ge1xuICAgIGxldCBpZDogYW55XG4gICAgdHJ5IHtcbiAgICAgIGlkID0gc2koY2IpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gc2FmZVNldFRpbWVvdXQoMCwgY2IpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2kgIT09ICdmdW5jdGlvbicpIHJldHVyblxuICAgICAgdHJ5IHtcbiAgICAgICAgY2koaWQpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gYmVzdC1lZmZvcnRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgbWFrZVJhZiA9ICgpOiAoKGNiOiAoKSA9PiB2b2lkKSA9PiBDYW5jZWwpIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmFmID0gKGdsb2JhbFRoaXMgYXMgYW55KS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgYXMgKChydW46ICgpID0+IHZvaWQpID0+IG51bWJlcikgfCB1bmRlZmluZWRcbiAgY29uc3QgY2FuY2VsID0gKGdsb2JhbFRoaXMgYXMgYW55KS5jYW5jZWxBbmltYXRpb25GcmFtZSBhcyAoKGlkOiBudW1iZXIpID0+IHZvaWQpIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlb2YgcmFmICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIChjYikgPT4ge1xuICAgIGxldCBpZDogbnVtYmVyXG4gICAgdHJ5IHtcbiAgICAgIGlkID0gcmFmKGNiKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG5vb3BDYW5jZWxcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjYW5jZWwgIT09ICdmdW5jdGlvbicpIHJldHVyblxuICAgICAgdHJ5IHtcbiAgICAgICAgY2FuY2VsKGlkKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJlc3QtZWZmb3J0XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdEhvc3RTY2hlZHVsZXIgPSAoKTogSG9zdFNjaGVkdWxlciA9PiB7XG4gIGNvbnN0IG1hY3JvdGFzayA9XG4gICAgbWFrZVNldEltbWVkaWF0ZU1hY3JvdGFzaygpID8/XG4gICAgbWFrZU1lc3NhZ2VDaGFubmVsTWFjcm90YXNrKCkgPz9cbiAgICAoKGNiOiAoKSA9PiB2b2lkKSA9PiBzYWZlU2V0VGltZW91dCgwLCBjYikpXG5cbiAgY29uc3QgcmFmID0gbWFrZVJhZigpXG5cbiAgcmV0dXJuIHtcbiAgICBub3dNczogc2FmZU5vd01zLFxuICAgIHNjaGVkdWxlTWljcm90YXNrOiBzYWZlUXVldWVNaWNyb3Rhc2ssXG4gICAgc2NoZWR1bGVNYWNyb3Rhc2s6IG1hY3JvdGFzayxcbiAgICBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lOiAoY2IpID0+IHJhZj8uKGNiKSA/PyBtYWNyb3Rhc2soY2IpLFxuICAgIHNjaGVkdWxlVGltZW91dDogc2FmZVNldFRpbWVvdXQsXG4gIH1cbn1cblxubGV0IGdsb2JhbEhvc3RTY2hlZHVsZXI6IEhvc3RTY2hlZHVsZXIgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IGdldEdsb2JhbEhvc3RTY2hlZHVsZXIgPSAoKTogSG9zdFNjaGVkdWxlciA9PiB7XG4gIGdsb2JhbEhvc3RTY2hlZHVsZXIgPz89IG1ha2VEZWZhdWx0SG9zdFNjaGVkdWxlcigpXG4gIHJldHVybiBnbG9iYWxIb3N0U2NoZWR1bGVyXG59XG5cbmV4cG9ydCBjb25zdCBfX3Vuc2FmZVNldEdsb2JhbEhvc3RTY2hlZHVsZXJGb3JUZXN0cyA9IChuZXh0OiBIb3N0U2NoZWR1bGVyIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG4gIGdsb2JhbEhvc3RTY2hlZHVsZXIgPSBuZXh0XG59XG5cbmV4cG9ydCB0eXBlIERldGVybWluaXN0aWNIb3N0U2NoZWR1bGVyID0gSG9zdFNjaGVkdWxlciAmIHtcbiAgcmVhZG9ubHkgZmx1c2hNaWNyb3Rhc2tzOiAob3B0aW9ucz86IHsgcmVhZG9ubHkgbWF4PzogbnVtYmVyIH0pID0+IG51bWJlclxuICByZWFkb25seSBmbHVzaE9uZU1hY3JvdGFzazogKCkgPT4gYm9vbGVhblxuICByZWFkb25seSBmbHVzaEFsbDogKG9wdGlvbnM/OiB7IHJlYWRvbmx5IG1heFR1cm5zPzogbnVtYmVyIH0pID0+IHsgcmVhZG9ubHkgdHVybnM6IG51bWJlcjsgcmVhZG9ubHkgcmFuOiBudW1iZXIgfVxuICByZWFkb25seSBnZXRRdWV1ZVNpemU6ICgpID0+IHsgcmVhZG9ubHkgbWljcm90YXNrczogbnVtYmVyOyByZWFkb25seSBtYWNyb3Rhc2tzOiBudW1iZXIgfVxufVxuXG5leHBvcnQgY29uc3QgbWFrZURldGVybWluaXN0aWNIb3N0U2NoZWR1bGVyID0gKCk6IERldGVybWluaXN0aWNIb3N0U2NoZWR1bGVyID0+IHtcbiAgY29uc3QgbWljcm90YXNrczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXVxuICBjb25zdCBtYWNyb3Rhc2tzOiBBcnJheTx7IGNhbmNlbGVkOiBib29sZWFuOyBjYjogKCkgPT4gdm9pZCB9PiA9IFtdXG5cbiAgY29uc3QgZmx1c2hNaWNyb3Rhc2tzID0gKG9wdGlvbnM/OiB7IHJlYWRvbmx5IG1heD86IG51bWJlciB9KTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBtYXggPSBvcHRpb25zPy5tYXggPz8gMTBfMDAwXG4gICAgbGV0IHJhbiA9IDBcbiAgICB3aGlsZSAobWljcm90YXNrcy5sZW5ndGggPiAwICYmIHJhbiA8IG1heCkge1xuICAgICAgY29uc3QgY2IgPSBtaWNyb3Rhc2tzLnNoaWZ0KCkhXG4gICAgICByYW4gKz0gMVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJlc3QtZWZmb3J0XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByYW5cbiAgfVxuXG4gIGNvbnN0IGZsdXNoT25lTWFjcm90YXNrID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHQgPSBtYWNyb3Rhc2tzLnNoaWZ0KClcbiAgICBpZiAoIXQpIHJldHVybiBmYWxzZVxuICAgIGlmICh0LmNhbmNlbGVkKSByZXR1cm4gdHJ1ZVxuICAgIHRyeSB7XG4gICAgICB0LmNiKClcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGJlc3QtZWZmb3J0XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBmbHVzaEFsbCA9IChvcHRpb25zPzogeyByZWFkb25seSBtYXhUdXJucz86IG51bWJlciB9KTogeyB0dXJuczogbnVtYmVyOyByYW46IG51bWJlciB9ID0+IHtcbiAgICBjb25zdCBtYXhUdXJucyA9IG9wdGlvbnM/Lm1heFR1cm5zID8/IDEwXzAwMFxuICAgIGxldCB0dXJucyA9IDBcbiAgICBsZXQgcmFuID0gMFxuXG4gICAgd2hpbGUgKHR1cm5zIDwgbWF4VHVybnMpIHtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IG1pY3JvdGFza3MubGVuZ3RoICsgbWFjcm90YXNrcy5sZW5ndGhcbiAgICAgIHJhbiArPSBmbHVzaE1pY3JvdGFza3MoKVxuICAgICAgaWYgKG1pY3JvdGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0dXJucyArPSAxXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoZmx1c2hPbmVNYWNyb3Rhc2soKSkge1xuICAgICAgICB0dXJucyArPSAxXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBhZnRlciA9IG1pY3JvdGFza3MubGVuZ3RoICsgbWFjcm90YXNrcy5sZW5ndGhcbiAgICAgIGlmIChhZnRlciA9PT0gMCB8fCBhZnRlciA9PT0gYmVmb3JlKSBicmVha1xuICAgICAgdHVybnMgKz0gMVxuICAgIH1cblxuICAgIHJldHVybiB7IHR1cm5zLCByYW4gfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub3dNczogc2FmZU5vd01zLFxuICAgIHNjaGVkdWxlTWljcm90YXNrOiAoY2IpID0+IHtcbiAgICAgIG1pY3JvdGFza3MucHVzaChjYilcbiAgICB9LFxuICAgIHNjaGVkdWxlTWFjcm90YXNrOiAoY2IpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSB7IGNhbmNlbGVkOiBmYWxzZSwgY2IgfVxuICAgICAgbWFjcm90YXNrcy5wdXNoKHRhc2spXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0YXNrLmNhbmNlbGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAgc2NoZWR1bGVBbmltYXRpb25GcmFtZTogKGNiKSA9PiB7XG4gICAgICBjb25zdCB0YXNrID0geyBjYW5jZWxlZDogZmFsc2UsIGNiIH1cbiAgICAgIG1hY3JvdGFza3MucHVzaCh0YXNrKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdGFzay5jYW5jZWxlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9LFxuICAgIHNjaGVkdWxlVGltZW91dDogKF9tcywgY2IpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSB7IGNhbmNlbGVkOiBmYWxzZSwgY2IgfVxuICAgICAgbWFjcm90YXNrcy5wdXNoKHRhc2spXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0YXNrLmNhbmNlbGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAgZmx1c2hNaWNyb3Rhc2tzLFxuICAgIGZsdXNoT25lTWFjcm90YXNrLFxuICAgIGZsdXNoQWxsLFxuICAgIGdldFF1ZXVlU2l6ZTogKCkgPT4gKHsgbWljcm90YXNrczogbWljcm90YXNrcy5sZW5ndGgsIG1hY3JvdGFza3M6IG1hY3JvdGFza3MubGVuZ3RoIH0pLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBVUEsSUFBTSxhQUFxQixNQUFNO0FBQUM7QUFFbEMsSUFBTSxZQUFZLE1BQWM7QUFDOUIsUUFBTSxPQUFRLFdBQW1CO0FBQ2pDLE1BQUksUUFBUSxPQUFPLEtBQUssUUFBUSxZQUFZO0FBQzFDLFFBQUk7QUFDRixZQUFNLElBQUksS0FBSyxJQUFJO0FBQ25CLFVBQUksT0FBTyxNQUFNLFlBQVksT0FBTyxTQUFTLENBQUMsRUFBRyxRQUFPO0FBQUEsSUFDMUQsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBRUEsU0FBTyxLQUFLLElBQUk7QUFDbEI7QUFFQSxJQUFNLHFCQUFxQixDQUFDLE9BQXlCO0FBQ25ELFFBQU0sS0FBTSxXQUFtQjtBQUMvQixNQUFJLE9BQU8sT0FBTyxZQUFZO0FBQzVCLFFBQUk7QUFDRixTQUFHLEVBQUU7QUFDTDtBQUFBLElBQ0YsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBR0EsTUFBSTtBQUNGLFlBQVEsUUFBUSxFQUFFLEtBQUssRUFBRTtBQUFBLEVBQzNCLFFBQVE7QUFFTixlQUFXLElBQUksQ0FBQztBQUFBLEVBQ2xCO0FBQ0Y7QUFFQSxJQUFNLGlCQUFpQixDQUFDLElBQVksT0FBMkI7QUFDN0QsUUFBTSxLQUFLLFdBQVcsSUFBSSxFQUFFO0FBQzVCLFNBQU8sTUFBTTtBQUNYLFFBQUk7QUFDRixtQkFBYSxFQUFFO0FBQUEsSUFDakIsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLDhCQUE4QixNQUFnRDtBQUNsRixRQUFNLEtBQU0sV0FBbUI7QUFDL0IsTUFBSSxPQUFPLE9BQU8sV0FBWSxRQUFPO0FBRXJDLE1BQUk7QUFDSixNQUFJO0FBQ0YsY0FBVSxJQUFJLEdBQUc7QUFBQSxFQUNuQixRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFHQSxRQUFNLFFBQXFCLENBQUM7QUFDNUIsTUFBSSxZQUFZO0FBRWhCLFFBQU0sUUFBUSxNQUFZO0FBQ3hCLGdCQUFZO0FBQ1osVUFBTSxRQUFRLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTTtBQUMxQyxlQUFXLEtBQUssT0FBTztBQUNyQixVQUFJLEVBQUUsU0FBVTtBQUNoQixVQUFJO0FBQ0YsVUFBRSxHQUFHO0FBQUEsTUFDUCxRQUFRO0FBQUEsTUFFUjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSTtBQUNGLFlBQVEsTUFBTSxZQUFZO0FBQUEsRUFDNUIsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxXQUFXLENBQUMsT0FBMkI7QUFDM0MsVUFBTSxPQUFhLEVBQUUsVUFBVSxPQUFPLEdBQUc7QUFDekMsVUFBTSxLQUFLLElBQUk7QUFDZixRQUFJLENBQUMsV0FBVztBQUNkLGtCQUFZO0FBQ1osVUFBSTtBQUNGLGdCQUFRLE1BQU0sWUFBWSxNQUFTO0FBQUEsTUFDckMsUUFBUTtBQUNOLG9CQUFZO0FBRVosZUFBTyxlQUFlLEdBQUcsRUFBRTtBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUNBLFdBQU8sTUFBTTtBQUNYLFdBQUssV0FBVztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVBLElBQU0sNEJBQTRCLE1BQWdEO0FBQ2hGLFFBQU0sS0FBTSxXQUFtQjtBQUMvQixRQUFNLEtBQU0sV0FBbUI7QUFDL0IsTUFBSSxPQUFPLE9BQU8sV0FBWSxRQUFPO0FBRXJDLFNBQU8sQ0FBQyxPQUFPO0FBQ2IsUUFBSTtBQUNKLFFBQUk7QUFDRixXQUFLLEdBQUcsRUFBRTtBQUFBLElBQ1osUUFBUTtBQUNOLGFBQU8sZUFBZSxHQUFHLEVBQUU7QUFBQSxJQUM3QjtBQUVBLFdBQU8sTUFBTTtBQUNYLFVBQUksT0FBTyxPQUFPLFdBQVk7QUFDOUIsVUFBSTtBQUNGLFdBQUcsRUFBRTtBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BRVI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRUEsSUFBTSxVQUFVLE1BQWdEO0FBQzlELFFBQU0sTUFBTyxXQUFtQjtBQUNoQyxRQUFNLFNBQVUsV0FBbUI7QUFDbkMsTUFBSSxPQUFPLFFBQVEsV0FBWSxRQUFPO0FBRXRDLFNBQU8sQ0FBQyxPQUFPO0FBQ2IsUUFBSTtBQUNKLFFBQUk7QUFDRixXQUFLLElBQUksRUFBRTtBQUFBLElBQ2IsUUFBUTtBQUNOLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxNQUFNO0FBQ1gsVUFBSSxPQUFPLFdBQVcsV0FBWTtBQUNsQyxVQUFJO0FBQ0YsZUFBTyxFQUFFO0FBQUEsTUFDWCxRQUFRO0FBQUEsTUFFUjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFTyxJQUFNLDJCQUEyQixNQUFxQjtBQUMzRCxRQUFNLFlBQ0osMEJBQTBCLEtBQzFCLDRCQUE0QixNQUMzQixDQUFDLE9BQW1CLGVBQWUsR0FBRyxFQUFFO0FBRTNDLFFBQU0sTUFBTSxRQUFRO0FBRXBCLFNBQU87QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLG1CQUFtQjtBQUFBLElBQ25CLG1CQUFtQjtBQUFBLElBQ25CLHdCQUF3QixDQUFDLE9BQU8sTUFBTSxFQUFFLEtBQUssVUFBVSxFQUFFO0FBQUEsSUFDekQsaUJBQWlCO0FBQUEsRUFDbkI7QUFDRjtBQUVBLElBQUk7QUFFRyxJQUFNLHlCQUF5QixNQUFxQjtBQUN6RCxnREFBd0IseUJBQXlCO0FBQ2pELFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K