@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.
- package/LICENSE +201 -0
- package/package.json +3 -1
- package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
- package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
- package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
- package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
- package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
- package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
- package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
- package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
- package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
- package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
- package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
- package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
- package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
- package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
- package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
- package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
- package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
- package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
- package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
- package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
- package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
- package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
- package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
- package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
- package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
- package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
- package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
- package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
- package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
- package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
- package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
- package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
- package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
- package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
- package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
- package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
- package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
- package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
- package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
- package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
- package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
- package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
- package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
- package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
- package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
- package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
- package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
- package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
- package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
- package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
- package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
- package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
- package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
- package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
- package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
- package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
- package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
- package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
- package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
- package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
- package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
- package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
- package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
- package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
- package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
- package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
- package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
- package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
- package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
- package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
- package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
- package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
- package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
- package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
- package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
- package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
- package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
- package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
- package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
- package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
- package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
- package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
- package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
- package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
- package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
- package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
- package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
- package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
- package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
- package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
- package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
- package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
- package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
- package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
- package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
- package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
- package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
- package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
- package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
- package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
- package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
- package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
- package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
- package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
- package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
- package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
- package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
- package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
- package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
- package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
- package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
- package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
- package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
- package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
- package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
- package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
- package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
- package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
- package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
- package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
- package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
- package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
- package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
- package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
- package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
- package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
- package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
- package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
- package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
- package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
- package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
- package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
- package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
- package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
- package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
- package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
- package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
- package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
- package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
- package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
- package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
- package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
- package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
- package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
- package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
- package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
- package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
- package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
- package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
- package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
- package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
- package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
- package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
- package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
- package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
- package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
- package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
- package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
- package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
- package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
- package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
- package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
- package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
- package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
- package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
- package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
- package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
- package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
- package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
- package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
- package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
- package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
- package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
- package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
- package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
- package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
- package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
- package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
- package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
- package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
- package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
- package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
- package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
- package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
- package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
- package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
- package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
- package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
- package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
- package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
- package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
- package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
- package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
- package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
- package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
- package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
- package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
- package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
- package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
- package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
- package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
- package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
- package/public/sandbox/logix-core/Bound.js +14 -14
- package/public/sandbox/logix-core/Debug.js +12 -10
- package/public/sandbox/logix-core/EffectOp.js +3 -4
- package/public/sandbox/logix-core/Env.js +5 -2
- package/public/sandbox/logix-core/ExternalStore.js +239 -0
- package/public/sandbox/logix-core/Flow.js +7 -8
- package/public/sandbox/logix-core/Kernel.js +7 -4
- package/public/sandbox/logix-core/Link.js +33 -25
- package/public/sandbox/logix-core/Middleware.js +13 -11
- package/public/sandbox/logix-core/Module.js +93 -30
- package/public/sandbox/logix-core/ModuleTag.js +28 -25
- package/public/sandbox/logix-core/Observability.js +21 -19
- package/public/sandbox/logix-core/Process.js +27 -22
- package/public/sandbox/logix-core/ReadQuery.js +7 -11
- package/public/sandbox/logix-core/Reflection.js +173 -53
- package/public/sandbox/logix-core/Resource.js +6 -3
- package/public/sandbox/logix-core/Root.js +7 -3
- package/public/sandbox/logix-core/Runtime.js +54 -40
- package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
- package/public/sandbox/logix-core/StateTrait.js +17 -14
- package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
- package/public/sandbox/logix-core/Workflow.js +332 -0
- package/public/sandbox/logix-core.js +11133 -6622
- package/public/sandbox/logix-core.manifest.json +4 -2
- package/public/sandbox/worker.js +3 -3
- package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
- package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
- package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
- package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
- package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
- package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
- package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
- package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
- package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
- package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
- package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
- package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
- package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
- package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
- package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
- package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
- package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
- package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
- 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+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSB7IGNhbmNlbGVkOiBmYWxzZSwgY2IgfVxuICAgICAgbWFjcm90YXNrcy5wdXNoKHRhc2spXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0YXNrLmNhbmNlbGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAgZmx1c2hNaWNyb3Rhc2tzLFxuICAgIGZsdXNoT25lTWFjcm90YXNrLFxuICAgIGZsdXNoQWxsLFxuICAgIGdldFF1ZXVlU2l6ZTogKCkgPT4gKHsgbWljcm90YXNrczogbWljcm90YXNrcy5sZW5ndGgsIG1hY3JvdGFza3M6IG1hY3JvdGFza3MubGVuZ3RoIH0pLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBVUEsSUFBTSxhQUFxQixNQUFNO0FBQUM7QUFFbEMsSUFBTSxZQUFZLE1BQWM7QUFDOUIsUUFBTSxPQUFRLFdBQW1CO0FBQ2pDLE1BQUksUUFBUSxPQUFPLEtBQUssUUFBUSxZQUFZO0FBQzFDLFFBQUk7QUFDRixZQUFNLElBQUksS0FBSyxJQUFJO0FBQ25CLFVBQUksT0FBTyxNQUFNLFlBQVksT0FBTyxTQUFTLENBQUMsRUFBRyxRQUFPO0FBQUEsSUFDMUQsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBRUEsU0FBTyxLQUFLLElBQUk7QUFDbEI7QUFFQSxJQUFNLHFCQUFxQixDQUFDLE9BQXlCO0FBQ25ELFFBQU0sS0FBTSxXQUFtQjtBQUMvQixNQUFJLE9BQU8sT0FBTyxZQUFZO0FBQzVCLFFBQUk7QUFDRixTQUFHLEVBQUU7QUFDTDtBQUFBLElBQ0YsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBR0EsTUFBSTtBQUNGLFlBQVEsUUFBUSxFQUFFLEtBQUssRUFBRTtBQUFBLEVBQzNCLFFBQVE7QUFFTixlQUFXLElBQUksQ0FBQztBQUFBLEVBQ2xCO0FBQ0Y7QUFFQSxJQUFNLGlCQUFpQixDQUFDLElBQVksT0FBMkI7QUFDN0QsUUFBTSxLQUFLLFdBQVcsSUFBSSxFQUFFO0FBQzVCLFNBQU8sTUFBTTtBQUNYLFFBQUk7QUFDRixtQkFBYSxFQUFFO0FBQUEsSUFDakIsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLDhCQUE4QixNQUFnRDtBQUNsRixRQUFNLEtBQU0sV0FBbUI7QUFD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
|