@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,203 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
isDevEnv
|
|
5
|
+
} from "./chunk-GP37MEGJ.js";
|
|
6
|
+
import {
|
|
7
|
+
record
|
|
8
|
+
} from "./chunk-CVZPRIDB.js";
|
|
9
|
+
|
|
10
|
+
// ../logix-core/src/internal/runtime/core/TaskRunner.ts
|
|
11
|
+
import { Cause, Effect, Fiber, FiberRef, Ref, Stream } from "../effect.js";
|
|
12
|
+
var inSyncTransactionFiber = FiberRef.unsafeMake(false);
|
|
13
|
+
var resolve = (eff, payload) => typeof eff === "function" ? eff(payload) : eff;
|
|
14
|
+
var defaultOrigins = (triggerName) => ({
|
|
15
|
+
pending: {
|
|
16
|
+
kind: "task:pending",
|
|
17
|
+
name: triggerName
|
|
18
|
+
},
|
|
19
|
+
success: {
|
|
20
|
+
kind: "service-callback",
|
|
21
|
+
name: "task:success"
|
|
22
|
+
},
|
|
23
|
+
failure: {
|
|
24
|
+
kind: "service-callback",
|
|
25
|
+
name: "task:failure"
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
var emitInvalidUsageDiagnostic = (moduleId, instanceId) => record({
|
|
29
|
+
type: "diagnostic",
|
|
30
|
+
moduleId,
|
|
31
|
+
instanceId,
|
|
32
|
+
code: "logic::invalid_usage",
|
|
33
|
+
severity: "error",
|
|
34
|
+
message: "run*Task is not allowed inside a synchronous StateTransaction body (it may deadlock the txnQueue).",
|
|
35
|
+
hint: "\u8BF7\u5C06 run*Task \u653E\u5230 $.onAction/$.onState/$.on \u7B49 watcher \u7684 run \u6BB5\uFF1B\u4E0D\u8981\u5728 reducer / trait.run / \u5355\u7B14\u4E8B\u52A1\u7684\u540C\u6B65 body \u5185\u76F4\u63A5\u8C03\u7528\u3002\u82E5\u9700\u8981\u957F\u94FE\u8DEF\uFF0C\u8BF7\u7528\u591A\u5165\u53E3\uFF08pending\u2192IO\u2192writeback\uFF09\u6A21\u5F0F\u3002",
|
|
36
|
+
kind: "run_task_in_transaction"
|
|
37
|
+
});
|
|
38
|
+
var shouldNoopDueToSyncTxn = (runtime) => Effect.gen(function* () {
|
|
39
|
+
const inTxn = yield* FiberRef.get(inSyncTransactionFiber);
|
|
40
|
+
if (!inTxn) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (isDevEnv()) {
|
|
44
|
+
yield* emitInvalidUsageDiagnostic(runtime.moduleId, runtime.instanceId);
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
});
|
|
48
|
+
var resolveConcurrencyLimit = (runtime) => runtime.resolveConcurrencyPolicy ? runtime.resolveConcurrencyPolicy().pipe(
|
|
49
|
+
Effect.map((p) => p.concurrencyLimit)
|
|
50
|
+
) : Effect.succeed(16);
|
|
51
|
+
var runTaskLifecycle = (payload, runtime, config, getCanWriteBack) => Effect.gen(function* () {
|
|
52
|
+
const noop = yield* shouldNoopDueToSyncTxn(runtime);
|
|
53
|
+
if (noop) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const defaults = defaultOrigins(config.triggerName);
|
|
57
|
+
const origins = {
|
|
58
|
+
pending: config.origin?.pending ?? defaults.pending,
|
|
59
|
+
success: config.origin?.success ?? defaults.success,
|
|
60
|
+
failure: config.origin?.failure ?? defaults.failure
|
|
61
|
+
};
|
|
62
|
+
const pending = config.pending;
|
|
63
|
+
if (pending) {
|
|
64
|
+
yield* Effect.uninterruptible(
|
|
65
|
+
runtime.runWithStateTransaction(
|
|
66
|
+
origins.pending,
|
|
67
|
+
() => Effect.asVoid(resolve(pending, payload))
|
|
68
|
+
)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
const io = resolve(config.effect, payload);
|
|
72
|
+
const exit = yield* Effect.exit(io);
|
|
73
|
+
if (getCanWriteBack) {
|
|
74
|
+
const ok = yield* getCanWriteBack;
|
|
75
|
+
if (!ok) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (exit._tag === "Success") {
|
|
80
|
+
const success = config.success;
|
|
81
|
+
if (success) {
|
|
82
|
+
yield* runtime.runWithStateTransaction(
|
|
83
|
+
origins.success,
|
|
84
|
+
() => Effect.asVoid(success(exit.value, payload))
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const cause = exit.cause;
|
|
90
|
+
if (Cause.isInterrupted(cause)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const failure = config.failure;
|
|
94
|
+
if (failure) {
|
|
95
|
+
yield* runtime.runWithStateTransaction(
|
|
96
|
+
origins.failure,
|
|
97
|
+
() => Effect.asVoid(failure(cause, payload))
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}).pipe(
|
|
101
|
+
// watcher 不应因单次 task 出错而整体崩溃:吞掉错误,但必须可定位(诊断事件)。
|
|
102
|
+
Effect.catchAllCause(
|
|
103
|
+
(cause) => record({
|
|
104
|
+
type: "diagnostic",
|
|
105
|
+
moduleId: runtime.moduleId,
|
|
106
|
+
instanceId: runtime.instanceId,
|
|
107
|
+
code: "task_runner::unhandled_failure",
|
|
108
|
+
severity: "error",
|
|
109
|
+
message: "TaskRunner encountered an unhandled failure (pending/IO/writeback).",
|
|
110
|
+
hint: "\u4E3A\u8BE5 task \u8865\u5145 failure \u5199\u56DE\u6216\u5728\u4E0A\u5C42\u663E\u5F0F\u5904\u7406\u9519\u8BEF\uFF1B\u907F\u514D fire-and-forget \u5BFC\u81F4\u9519\u8BEF\u88AB\u541E\u6389\u3002",
|
|
111
|
+
actionTag: config.triggerName,
|
|
112
|
+
kind: "task_runner_unhandled_failure",
|
|
113
|
+
trigger: {
|
|
114
|
+
kind: "task",
|
|
115
|
+
name: config.triggerName
|
|
116
|
+
}
|
|
117
|
+
}).pipe(Effect.zipRight(Effect.logError("TaskRunner error", cause)))
|
|
118
|
+
)
|
|
119
|
+
);
|
|
120
|
+
var makeTaskRunner = (stream, mode, runtime, config) => {
|
|
121
|
+
if (mode === "latest") {
|
|
122
|
+
return Effect.gen(function* () {
|
|
123
|
+
const taskIdRef = yield* Ref.make(0);
|
|
124
|
+
const currentFiberRef = yield* Ref.make(
|
|
125
|
+
void 0
|
|
126
|
+
);
|
|
127
|
+
const start = (payload) => Effect.gen(function* () {
|
|
128
|
+
const taskId = yield* Ref.updateAndGet(taskIdRef, (n) => n + 1);
|
|
129
|
+
const prev = yield* Ref.get(currentFiberRef);
|
|
130
|
+
if (prev) {
|
|
131
|
+
yield* Fiber.interruptFork(prev);
|
|
132
|
+
}
|
|
133
|
+
const canWriteBack = Ref.get(taskIdRef).pipe(
|
|
134
|
+
Effect.map((current) => current === taskId)
|
|
135
|
+
);
|
|
136
|
+
const fiber = yield* Effect.fork(
|
|
137
|
+
runTaskLifecycle(
|
|
138
|
+
payload,
|
|
139
|
+
runtime,
|
|
140
|
+
config,
|
|
141
|
+
canWriteBack
|
|
142
|
+
)
|
|
143
|
+
);
|
|
144
|
+
yield* Ref.set(currentFiberRef, fiber);
|
|
145
|
+
});
|
|
146
|
+
return yield* Stream.runForEach(stream, start);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (mode === "exhaust") {
|
|
150
|
+
return Effect.gen(function* () {
|
|
151
|
+
const concurrency = yield* resolveConcurrencyLimit(runtime);
|
|
152
|
+
const busyRef = yield* Ref.make(false);
|
|
153
|
+
const mapper = (payload) => Effect.gen(function* () {
|
|
154
|
+
const acquired = yield* Ref.modify(
|
|
155
|
+
busyRef,
|
|
156
|
+
(busy) => busy ? [false, busy] : [true, true]
|
|
157
|
+
);
|
|
158
|
+
if (!acquired) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
yield* runTaskLifecycle(
|
|
163
|
+
payload,
|
|
164
|
+
runtime,
|
|
165
|
+
config
|
|
166
|
+
);
|
|
167
|
+
} finally {
|
|
168
|
+
yield* Ref.set(busyRef, false);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
return yield* Stream.runDrain(
|
|
172
|
+
stream.pipe(Stream.mapEffect(mapper, { concurrency }))
|
|
173
|
+
);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (mode === "parallel") {
|
|
177
|
+
return Effect.gen(function* () {
|
|
178
|
+
const concurrency = yield* resolveConcurrencyLimit(runtime);
|
|
179
|
+
return yield* Stream.runDrain(
|
|
180
|
+
stream.pipe(
|
|
181
|
+
Stream.mapEffect(
|
|
182
|
+
(payload) => runTaskLifecycle(
|
|
183
|
+
payload,
|
|
184
|
+
runtime,
|
|
185
|
+
config
|
|
186
|
+
),
|
|
187
|
+
{ concurrency }
|
|
188
|
+
)
|
|
189
|
+
)
|
|
190
|
+
);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return Stream.runForEach(
|
|
194
|
+
stream,
|
|
195
|
+
(payload) => runTaskLifecycle(payload, runtime, config)
|
|
196
|
+
);
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export {
|
|
200
|
+
inSyncTransactionFiber,
|
|
201
|
+
makeTaskRunner
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL1Rhc2tSdW5uZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IENhdXNlLCBFZmZlY3QsIEZpYmVyLCBGaWJlclJlZiwgUmVmLCBTdHJlYW0gfSBmcm9tIFwiZWZmZWN0XCJcbmltcG9ydCAqIGFzIERlYnVnIGZyb20gXCIuL0RlYnVnU2luay5qc1wiXG5pbXBvcnQgeyBpc0RldkVudiB9IGZyb20gXCIuL2Vudi5qc1wiXG5pbXBvcnQgdHlwZSAqIGFzIExvZ2ljIGZyb20gXCIuL0xvZ2ljTWlkZGxld2FyZS5qc1wiXG5pbXBvcnQgdHlwZSB7IEFueU1vZHVsZVNoYXBlIH0gZnJvbSBcIi4vbW9kdWxlLmpzXCJcbmltcG9ydCB0eXBlIHsgUnVudGltZUludGVybmFsc1Jlc29sdmVkQ29uY3VycmVuY3lQb2xpY3kgfSBmcm9tIFwiLi9SdW50aW1lSW50ZXJuYWxzLmpzXCJcbmltcG9ydCB0eXBlIHsgU3RhdGVUeG5PcmlnaW4gfSBmcm9tIFwiLi9TdGF0ZVRyYW5zYWN0aW9uLmpzXCJcblxuLyoqXG4gKiBcdTc1MjhcdTRFOEVcdTk2MzJcdTZCNjJcdTU3MjhcdTMwMENcdTU0MENcdTZCNjVcdTRFOEJcdTUyQTFcdTYyNjdcdTg4NEMgZmliZXJcdTMwMERcdTUxODVcdThDMDNcdTc1MjggcnVuKlRhc2tcdUZGMDhcdTRGMUFcdTVCRkNcdTgxRjRcdTRFOEJcdTUyQTFcdTk2MUZcdTUyMTdcdTdCNDlcdTVGODVcdTgxRUFcdThFQUJcdTgwMENcdTZCN0JcdTk1MDFcdUZGMDlcdTMwMDJcbiAqXG4gKiAtIE1vZHVsZVJ1bnRpbWUgXHU1NzI4XHU2MjY3XHU4ODRDXHU2QkNGXHU0RTJBXHU0RThCXHU1MkExXHVGRjA4ZGlzcGF0Y2gvc291cmNlLXJlZnJlc2gvZGV2dG9vbHMvLi4uXHVGRjA5XHU2NUY2XHVGRjBDXHU0RjFBIGxvY2FsbHkgXHU2ODA3XHU4QkIwXHU0RTNBIHRydWVcdTMwMDJcbiAqIC0gcnVuKlRhc2sgXHU1NzI4XHU1NDJGXHU1MkE4XHU2NUY2XHU2OEMwXHU2N0U1XHU4QkU1XHU2ODA3XHU4QkIwXHVGRjFBXHU4MkU1XHU0RTNBIHRydWVcdUZGMENcdTUyMTlcdTRFQzVcdTU3MjggZGV2L3Rlc3QgXHU0RTBCXHU1M0QxXHU1MUZBIGRpYWdub3N0aWMgXHU1RTc2XHU3NkY0XHU2M0E1IG5vLW9wXHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBpblN5bmNUcmFuc2FjdGlvbkZpYmVyID0gRmliZXJSZWYudW5zYWZlTWFrZShmYWxzZSlcblxuZXhwb3J0IHR5cGUgVGFza1J1bm5lck1vZGUgPVxuICB8IFwidGFza1wiIC8vIHNlcXVlbnRpYWxcbiAgfCBcInBhcmFsbGVsXCJcbiAgfCBcImxhdGVzdFwiXG4gIHwgXCJleGhhdXN0XCJcblxuZXhwb3J0IHR5cGUgVGFza1N0YXR1cyA9XG4gIHwgXCJpZGxlXCJcbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicnVubmluZ1wiXG4gIHwgXCJzdWNjZXNzXCJcbiAgfCBcImZhaWx1cmVcIlxuICB8IFwiaW50ZXJydXB0ZWRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tFeGVjdXRpb24ge1xuICByZWFkb25seSB0YXNrSWQ6IG51bWJlclxuICByZWFkb25seSBzdGF0dXM6IFRhc2tTdGF0dXNcbiAgcmVhZG9ubHkgYWNjZXB0ZWRBdDogbnVtYmVyXG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdD86IG51bWJlclxuICByZWFkb25seSBlbmRlZEF0PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1J1bm5lck9yaWdpbnMge1xuICByZWFkb25seSBwZW5kaW5nPzogU3RhdGVUeG5PcmlnaW5cbiAgcmVhZG9ubHkgc3VjY2Vzcz86IFN0YXRlVHhuT3JpZ2luXG4gIHJlYWRvbmx5IGZhaWx1cmU/OiBTdGF0ZVR4bk9yaWdpblxufVxuXG50eXBlIFRhc2tIYW5kbGVyPFBheWxvYWQsIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFI+ID1cbiAgfCBMb2dpYy5PZjxTaCwgUiwgdm9pZCwgbmV2ZXI+XG4gIHwgKChwYXlsb2FkOiBQYXlsb2FkKSA9PiBMb2dpYy5PZjxTaCwgUiwgdm9pZCwgbmV2ZXI+KVxuXG50eXBlIFRhc2tFZmZlY3Q8UGF5bG9hZCwgU2ggZXh0ZW5kcyBBbnlNb2R1bGVTaGFwZSwgUiwgQSwgRT4gPVxuICB8IExvZ2ljLk9mPFNoLCBSLCBBLCBFPlxuICB8ICgocGF5bG9hZDogUGF5bG9hZCkgPT4gTG9naWMuT2Y8U2gsIFIsIEEsIEU+KVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tSdW5uZXJDb25maWc8XG4gIFBheWxvYWQsXG4gIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsXG4gIFIsXG4gIEEgPSB2b2lkLFxuICBFID0gbmV2ZXIsXG4+IHtcbiAgLyoqXG4gICAqIFx1NTNFRlx1OTAwOVx1RkYxQVx1ODlFNlx1NTNEMVx1NkU5MFx1NTQwRFx1NzlGMFx1RkYwOFx1NEY4Qlx1NTk4MiBhY3Rpb25UYWcgLyBmaWVsZFBhdGhcdUZGMDlcdUZGMENcdTc1MjhcdTRFOEVcdTlFRDhcdThCQTQgcGVuZGluZyBvcmlnaW4ubmFtZVx1MzAwMlxuICAgKiAtIEJvdW5kQXBpUnVudGltZSBcdTU3Mjggb25BY3Rpb24oXCJ4eHhcIikgLyB0cmFpdHMuc291cmNlLnJlZnJlc2goXCJmaWVsZFwiKSBcdTdCNDlcdTU3M0FcdTY2NkZcdTUzRUZcdTU4NkJcdTUxNDVcdUZGMUJcbiAgICogLSBcdTUxNzZcdTRFRDZcdTU3M0FcdTY2NkZcdTRFMERcdTVGM0FcdTZDNDJcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IHRyaWdnZXJOYW1lPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIHBlbmRpbmdcdUZGMUFcdTU0MENcdTZCNjVcdTcyQjZcdTYwMDFcdTUxOTlcdTUxNjVcdUZGMDhsb2FkaW5nPXRydWUgLyBcdTZFMDVcdTc0MDZcdTk1MTlcdThCRUZcdTdCNDlcdUZGMDlcdUZGMENcdTU5Q0JcdTdFQzhcdTRGNUNcdTRFM0FcdTcyRUNcdTdBQ0JcdTRFOEJcdTUyQTFcdTUxNjVcdTUzRTNcdTMwMDJcbiAgICogLSBcdTRFQzVcdTVCRjlcdTIwMUNcdTg4QUJcdTYzQTVcdTUzRDdcdTVFNzZcdTVCOUVcdTk2NDVcdTU0MkZcdTUyQThcdTc2ODQgdGFza1x1MjAxRFx1NjI2N1x1ODg0Q1x1RkYwOHJ1bkV4aGF1c3RUYXNrIFx1NUZGRFx1NzU2NVx1NzY4NFx1ODlFNlx1NTNEMVx1NEUwRFx1NjI2N1x1ODg0Q1x1RkYwOVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgcGVuZGluZz86IFRhc2tIYW5kbGVyPFBheWxvYWQsIFNoLCBSPlxuXG4gIC8qKlxuICAgKiBlZmZlY3RcdUZGMUFcdTc3MUZcdTVCOUUgSU8gLyBcdTVGMDJcdTZCNjVcdTRFRkJcdTUyQTFcdUZGMDhcdTVGQzVcdTk4N0JcdThGRDBcdTg4NENcdTU3MjhcdTRFOEJcdTUyQTFcdTdBOTdcdTUzRTNcdTRFNEJcdTU5MTZcdUZGMDlcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGVmZmVjdDogVGFza0VmZmVjdDxQYXlsb2FkLCBTaCwgUiwgQSwgRT5cblxuICAvKipcbiAgICogc3VjY2Vzc1x1RkYxQVx1NjIxMFx1NTI5Rlx1NTE5OVx1NTZERVx1RkYwOFx1NzJFQ1x1N0FDQlx1NEU4Qlx1NTJBMVx1NTE2NVx1NTNFM1x1RkYwOVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzcz86IChyZXN1bHQ6IEEsIHBheWxvYWQ6IFBheWxvYWQpID0+IExvZ2ljLk9mPFNoLCBSLCB2b2lkLCBuZXZlcj5cblxuICAvKipcbiAgICogZmFpbHVyZVx1RkYxQVx1NTkzMVx1OEQyNVx1NTE5OVx1NTZERVx1RkYwOFx1NzJFQ1x1N0FDQlx1NEU4Qlx1NTJBMVx1NTE2NVx1NTNFM1x1RkYwOVx1MzAwMlxuICAgKlxuICAgKiBcdThCRjRcdTY2MEVcdUZGMUFcdTRGMjBcdTUxNjUgQ2F1c2UgXHU0RUU1XHU0RkREXHU3NTU5IGRlZmVjdC9pbnRlcnJ1cHQgXHU3QjQ5XHU4QkVEXHU0RTQ5XHVGRjFCXHU0RTJEXHU2NUFEXHVGRjA4aW50ZXJydXB0XHVGRjA5XHU5RUQ4XHU4QkE0XHU0RTBEXHU4OUU2XHU1M0QxIGZhaWx1cmUgXHU1MTk5XHU1NkRFXHUzMDAyXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlPzogKGNhdXNlOiBDYXVzZS5DYXVzZTxFPiwgcGF5bG9hZDogUGF5bG9hZCkgPT4gTG9naWMuT2Y8U2gsIFIsIHZvaWQsIG5ldmVyPlxuXG4gIC8qKlxuICAgKiBvcmlnaW5cdUZGMUFcdTUzRUZcdTkwMDlcdTg5ODZcdTUxOTlcdTRFMDlcdTdCMTRcdTRFOEJcdTUyQTFcdTc2ODQgb3JpZ2luXHUzMDAyXG4gICAqIC0gXHU5RUQ4XHU4QkE0XHVGRjFBcGVuZGluZy5raW5kPVwidGFzazpwZW5kaW5nXCJcdUZGMUJzdWNjZXNzL2ZhaWx1cmUua2luZD1cInNlcnZpY2UtY2FsbGJhY2tcIlx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luPzogVGFza1J1bm5lck9yaWdpbnNcblxuICAvKipcbiAgICogcHJpb3JpdHlcdUZGMUFcdTk4ODRcdTc1NTlcdTVCNTdcdTZCQjVcdUZGMENcdTRFQzVcdTc1MjhcdTRFOEVcdTY3MkFcdTY3NjVcdThDMDNcdThCRDUvXHU2MzkyXHU1RThGXHVGRjBDXHU0RTBEXHU2NTM5XHU1M0Q4XHU0RThCXHU1MkExXHU4RkI5XHU3NTRDXHU0RTBFXHU1RTc2XHU1M0QxXHU4QkVEXHU0RTQ5XHUzMDAyXG4gICAqL1xuICByZWFkb25seSBwcmlvcml0eT86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tSdW5uZXJSdW50aW1lIHtcbiAgcmVhZG9ubHkgbW9kdWxlSWQ/OiBzdHJpbmdcbiAgcmVhZG9ubHkgaW5zdGFuY2VJZD86IHN0cmluZ1xuICByZWFkb25seSBydW5XaXRoU3RhdGVUcmFuc2FjdGlvbjogKFxuICAgIG9yaWdpbjogU3RhdGVUeG5PcmlnaW4sXG4gICAgYm9keTogKCkgPT4gRWZmZWN0LkVmZmVjdDx2b2lkLCBuZXZlciwgYW55PixcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIG5ldmVyLCBhbnk+XG4gIHJlYWRvbmx5IHJlc29sdmVDb25jdXJyZW5jeVBvbGljeT86ICgpID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgUnVudGltZUludGVybmFsc1Jlc29sdmVkQ29uY3VycmVuY3lQb2xpY3ksXG4gICAgbmV2ZXIsXG4gICAgYW55XG4gID5cbn1cblxuY29uc3QgcmVzb2x2ZSA9IDxQYXlsb2FkLCBTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlLCBSLCBBLCBFPihcbiAgZWZmOiBUYXNrRWZmZWN0PFBheWxvYWQsIFNoLCBSLCBBLCBFPiB8IFRhc2tIYW5kbGVyPFBheWxvYWQsIFNoLCBSPixcbiAgcGF5bG9hZDogUGF5bG9hZCxcbik6IGFueSA9PiAodHlwZW9mIGVmZiA9PT0gXCJmdW5jdGlvblwiID8gKGVmZiBhcyBhbnkpKHBheWxvYWQpIDogZWZmKVxuXG5jb25zdCBkZWZhdWx0T3JpZ2lucyA9IChcbiAgdHJpZ2dlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IFJlcXVpcmVkPFRhc2tSdW5uZXJPcmlnaW5zPiA9PiAoe1xuICBwZW5kaW5nOiB7XG4gICAga2luZDogXCJ0YXNrOnBlbmRpbmdcIixcbiAgICBuYW1lOiB0cmlnZ2VyTmFtZSxcbiAgfSxcbiAgc3VjY2Vzczoge1xuICAgIGtpbmQ6IFwic2VydmljZS1jYWxsYmFja1wiLFxuICAgIG5hbWU6IFwidGFzazpzdWNjZXNzXCIsXG4gIH0sXG4gIGZhaWx1cmU6IHtcbiAgICBraW5kOiBcInNlcnZpY2UtY2FsbGJhY2tcIixcbiAgICBuYW1lOiBcInRhc2s6ZmFpbHVyZVwiLFxuICB9LFxufSlcblxuY29uc3QgZW1pdEludmFsaWRVc2FnZURpYWdub3N0aWMgPSAoXG4gIG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGluc3RhbmNlSWQ/OiBzdHJpbmcsXG4pOiBFZmZlY3QuRWZmZWN0PHZvaWQ+ID0+XG4gIERlYnVnLnJlY29yZCh7XG4gICAgdHlwZTogXCJkaWFnbm9zdGljXCIsXG4gICAgbW9kdWxlSWQsXG4gICAgaW5zdGFuY2VJZCxcbiAgICBjb2RlOiBcImxvZ2ljOjppbnZhbGlkX3VzYWdlXCIsXG4gICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICBtZXNzYWdlOlxuICAgICAgXCJydW4qVGFzayBpcyBub3QgYWxsb3dlZCBpbnNpZGUgYSBzeW5jaHJvbm91cyBTdGF0ZVRyYW5zYWN0aW9uIGJvZHkgKGl0IG1heSBkZWFkbG9jayB0aGUgdHhuUXVldWUpLlwiLFxuICAgIGhpbnQ6XG4gICAgICBcIlx1OEJGN1x1NUMwNiBydW4qVGFzayBcdTY1M0VcdTUyMzAgJC5vbkFjdGlvbi8kLm9uU3RhdGUvJC5vbiBcdTdCNDkgd2F0Y2hlciBcdTc2ODQgcnVuIFx1NkJCNVx1RkYxQlwiICtcbiAgICAgIFwiXHU0RTBEXHU4OTgxXHU1NzI4IHJlZHVjZXIgLyB0cmFpdC5ydW4gLyBcdTUzNTVcdTdCMTRcdTRFOEJcdTUyQTFcdTc2ODRcdTU0MENcdTZCNjUgYm9keSBcdTUxODVcdTc2RjRcdTYzQTVcdThDMDNcdTc1MjhcdTMwMDJcdTgyRTVcdTk3MDBcdTg5ODFcdTk1N0ZcdTk0RkVcdThERUZcdUZGMENcdThCRjdcdTc1MjhcdTU5MUFcdTUxNjVcdTUzRTNcdUZGMDhwZW5kaW5nXHUyMTkySU9cdTIxOTJ3cml0ZWJhY2tcdUZGMDlcdTZBMjFcdTVGMEZcdTMwMDJcIixcbiAgICBraW5kOiBcInJ1bl90YXNrX2luX3RyYW5zYWN0aW9uXCIsXG4gIH0pXG5cbmNvbnN0IHNob3VsZE5vb3BEdWVUb1N5bmNUeG4gPSAoXG4gIHJ1bnRpbWU6IFRhc2tSdW5uZXJSdW50aW1lLFxuKTogRWZmZWN0LkVmZmVjdDxib29sZWFuPiA9PlxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3QgaW5UeG4gPSB5aWVsZCogRmliZXJSZWYuZ2V0KGluU3luY1RyYW5zYWN0aW9uRmliZXIpXG4gICAgaWYgKCFpblR4bikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIC8vIFx1NjVFMFx1OEJCQVx1NzNBRlx1NTg4M1x1NTk4Mlx1NEY1NVx1RkYwQ1x1OTBGRFx1NUZDNVx1OTg3QiBuby1vcFx1RkYwOFx1NTQyNlx1NTIxOVx1NTNFRlx1ODBGRFx1NkI3Qlx1OTUwMVx1RkYwOVx1RkYxQmRpYWdub3N0aWMgXHU0RUM1XHU1NzI4IGRldi90ZXN0IFx1NEUwQlx1NTNEMVx1NTFGQVx1MzAwMlxuICAgIGlmIChpc0RldkVudigpKSB7XG4gICAgICB5aWVsZCogZW1pdEludmFsaWRVc2FnZURpYWdub3N0aWMocnVudGltZS5tb2R1bGVJZCwgcnVudGltZS5pbnN0YW5jZUlkKVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxuXG5jb25zdCByZXNvbHZlQ29uY3VycmVuY3lMaW1pdCA9IChcbiAgcnVudGltZTogVGFza1J1bm5lclJ1bnRpbWUsXG4pOiBFZmZlY3QuRWZmZWN0PG51bWJlciB8IFwidW5ib3VuZGVkXCIsIG5ldmVyLCBhbnk+ID0+XG4gIHJ1bnRpbWUucmVzb2x2ZUNvbmN1cnJlbmN5UG9saWN5XG4gICAgPyBydW50aW1lLnJlc29sdmVDb25jdXJyZW5jeVBvbGljeSgpLnBpcGUoXG4gICAgICAgIEVmZmVjdC5tYXAoKHApID0+IHAuY29uY3VycmVuY3lMaW1pdCksXG4gICAgICApXG4gICAgOiBFZmZlY3Quc3VjY2VlZCgxNilcblxuY29uc3QgcnVuVGFza0xpZmVjeWNsZSA9IDxQYXlsb2FkLCBTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlLCBSLCBBLCBFPihcbiAgcGF5bG9hZDogUGF5bG9hZCxcbiAgcnVudGltZTogVGFza1J1bm5lclJ1bnRpbWUsXG4gIGNvbmZpZzogVGFza1J1bm5lckNvbmZpZzxQYXlsb2FkLCBTaCwgUiwgQSwgRT4sXG4gIGdldENhbldyaXRlQmFjaz86IEVmZmVjdC5FZmZlY3Q8Ym9vbGVhbj4sXG4pOiBFZmZlY3QuRWZmZWN0PHZvaWQsIG5ldmVyLCBMb2dpYy5FbnY8U2gsIFI+PiA9PlxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3Qgbm9vcCA9IHlpZWxkKiBzaG91bGROb29wRHVlVG9TeW5jVHhuKHJ1bnRpbWUpXG4gICAgaWYgKG5vb3ApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRzID0gZGVmYXVsdE9yaWdpbnMoY29uZmlnLnRyaWdnZXJOYW1lKVxuICAgIGNvbnN0IG9yaWdpbnM6IFJlcXVpcmVkPFRhc2tSdW5uZXJPcmlnaW5zPiA9IHtcbiAgICAgIHBlbmRpbmc6IGNvbmZpZy5vcmlnaW4/LnBlbmRpbmcgPz8gZGVmYXVsdHMucGVuZGluZyxcbiAgICAgIHN1Y2Nlc3M6IGNvbmZpZy5vcmlnaW4/LnN1Y2Nlc3MgPz8gZGVmYXVsdHMuc3VjY2VzcyxcbiAgICAgIGZhaWx1cmU6IGNvbmZpZy5vcmlnaW4/LmZhaWx1cmUgPz8gZGVmYXVsdHMuZmFpbHVyZSxcbiAgICB9XG5cbiAgICAvLyAxKSBwZW5kaW5nXHVGRjFBXHU0RjVDXHU0RTNBXHU3MkVDXHU3QUNCXHU0RThCXHU1MkExXHU1MTY1XHU1M0UzXHVGRjBDXHU0RTE0XHU0RTAwXHU2NUU2XHU1RjAwXHU1OUNCXHU1QzMxXHU0RTBEXHU1RTk0XHU4OEFCIHJ1bkxhdGVzdCBcdTc2ODQgaW50ZXJydXB0IFx1NjI1M1x1NjVBRFxuICAgIGNvbnN0IHBlbmRpbmcgPSBjb25maWcucGVuZGluZ1xuICAgIGlmIChwZW5kaW5nKSB7XG4gICAgICB5aWVsZCogRWZmZWN0LnVuaW50ZXJydXB0aWJsZShcbiAgICAgICAgcnVudGltZS5ydW5XaXRoU3RhdGVUcmFuc2FjdGlvbihvcmlnaW5zLnBlbmRpbmcsICgpID0+XG4gICAgICAgICAgRWZmZWN0LmFzVm9pZChyZXNvbHZlKHBlbmRpbmcsIHBheWxvYWQpKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyAyKSBJT1x1RkYxQVx1NTcyOFx1NEU4Qlx1NTJBMVx1N0E5N1x1NTNFM1x1NEU0Qlx1NTkxNlx1OEZEMFx1ODg0Q1xuICAgIGNvbnN0IGlvID0gcmVzb2x2ZShjb25maWcuZWZmZWN0LCBwYXlsb2FkKSBhcyBFZmZlY3QuRWZmZWN0PEEsIEUsIExvZ2ljLkVudjxTaCwgUj4+XG4gICAgY29uc3QgZXhpdCA9IHlpZWxkKiBFZmZlY3QuZXhpdChpbylcblxuICAgIC8vIDMpIFx1NTE5OVx1NTZERVx1RkYxQVx1OTcwMFx1ODk4MVx1OTAxQVx1OEZDNyBndWFyZCBcdTc4NkVcdThCQTRcdTRFQ0RcdTRFM0FcdTVGNTNcdTUyNEQgdGFza1x1RkYwOHJ1bkxhdGVzdFRhc2tcdUZGMDlcbiAgICBpZiAoZ2V0Q2FuV3JpdGVCYWNrKSB7XG4gICAgICBjb25zdCBvayA9IHlpZWxkKiBnZXRDYW5Xcml0ZUJhY2tcbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4aXQuX3RhZyA9PT0gXCJTdWNjZXNzXCIpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBjb25maWcuc3VjY2Vzc1xuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgeWllbGQqIHJ1bnRpbWUucnVuV2l0aFN0YXRlVHJhbnNhY3Rpb24ob3JpZ2lucy5zdWNjZXNzLCAoKSA9PlxuICAgICAgICAgIEVmZmVjdC5hc1ZvaWQoc3VjY2VzcyhleGl0LnZhbHVlLCBwYXlsb2FkKSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEZhaWx1cmVcdUZGMUFcdTRFMkRcdTY1QURcdTRFMERcdTg5RTZcdTUzRDEgZmFpbHVyZSBcdTUxOTlcdTU2REVcdUZGMDhcdTRGOEJcdTU5ODIgcnVuTGF0ZXN0VGFzayBcdTc2ODRcdTUzRDZcdTZEODhcdTMwMDFTY29wZSBcdTdFRDNcdTY3NUZcdUZGMDlcdTMwMDJcbiAgICBjb25zdCBjYXVzZSA9IGV4aXQuY2F1c2UgYXMgQ2F1c2UuQ2F1c2U8RT5cbiAgICBpZiAoQ2F1c2UuaXNJbnRlcnJ1cHRlZChjYXVzZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGZhaWx1cmUgPSBjb25maWcuZmFpbHVyZVxuICAgIGlmIChmYWlsdXJlKSB7XG4gICAgICB5aWVsZCogcnVudGltZS5ydW5XaXRoU3RhdGVUcmFuc2FjdGlvbihvcmlnaW5zLmZhaWx1cmUsICgpID0+XG4gICAgICAgIEVmZmVjdC5hc1ZvaWQoZmFpbHVyZShjYXVzZSwgcGF5bG9hZCkpLFxuICAgICAgKVxuICAgIH1cbiAgfSkucGlwZShcbiAgICAvLyB3YXRjaGVyIFx1NEUwRFx1NUU5NFx1NTZFMFx1NTM1NVx1NkIyMSB0YXNrIFx1NTFGQVx1OTUxOVx1ODAwQ1x1NjU3NFx1NEY1M1x1NUQyOVx1NkU4M1x1RkYxQVx1NTQxRVx1NjM4OVx1OTUxOVx1OEJFRlx1RkYwQ1x1NEY0Nlx1NUZDNVx1OTg3Qlx1NTNFRlx1NUI5QVx1NEY0RFx1RkYwOFx1OEJDQVx1NjVBRFx1NEU4Qlx1NEVGNlx1RkYwOVx1MzAwMlxuICAgIEVmZmVjdC5jYXRjaEFsbENhdXNlKChjYXVzZSkgPT5cbiAgICAgIERlYnVnLnJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwiZGlhZ25vc3RpY1wiLFxuICAgICAgICBtb2R1bGVJZDogcnVudGltZS5tb2R1bGVJZCxcbiAgICAgICAgaW5zdGFuY2VJZDogcnVudGltZS5pbnN0YW5jZUlkLFxuICAgICAgICBjb2RlOiBcInRhc2tfcnVubmVyOjp1bmhhbmRsZWRfZmFpbHVyZVwiLFxuICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBcIlRhc2tSdW5uZXIgZW5jb3VudGVyZWQgYW4gdW5oYW5kbGVkIGZhaWx1cmUgKHBlbmRpbmcvSU8vd3JpdGViYWNrKS5cIixcbiAgICAgICAgaGludDpcbiAgICAgICAgICBcIlx1NEUzQVx1OEJFNSB0YXNrIFx1ODg2NVx1NTE0NSBmYWlsdXJlIFx1NTE5OVx1NTZERVx1NjIxNlx1NTcyOFx1NEUwQVx1NUM0Mlx1NjYzRVx1NUYwRlx1NTkwNFx1NzQwNlx1OTUxOVx1OEJFRlx1RkYxQlx1OTA3Rlx1NTE0RCBmaXJlLWFuZC1mb3JnZXQgXHU1QkZDXHU4MUY0XHU5NTE5XHU4QkVGXHU4OEFCXHU1NDFFXHU2Mzg5XHUzMDAyXCIsXG4gICAgICAgIGFjdGlvblRhZzogY29uZmlnLnRyaWdnZXJOYW1lLFxuICAgICAgICBraW5kOiBcInRhc2tfcnVubmVyX3VuaGFuZGxlZF9mYWlsdXJlXCIsXG4gICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICBraW5kOiBcInRhc2tcIixcbiAgICAgICAgICBuYW1lOiBjb25maWcudHJpZ2dlck5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KS5waXBlKEVmZmVjdC56aXBSaWdodChFZmZlY3QubG9nRXJyb3IoXCJUYXNrUnVubmVyIGVycm9yXCIsIGNhdXNlKSkpLFxuICAgICksXG4gICkgYXMgRWZmZWN0LkVmZmVjdDx2b2lkLCBuZXZlciwgTG9naWMuRW52PFNoLCBSPj5cblxuLyoqXG4gKiBtYWtlVGFza1J1bm5lclx1RkYxQVxuICogLSBcdTU5MERcdTc1MjggRmxvd1J1bnRpbWUgXHU3Njg0XHU1RTc2XHU1M0QxXHU4QkVEXHU0RTQ5XHVGRjA4c2VxdWVudGlhbC9wYXJhbGxlbC9sYXRlc3QvZXhoYXVzdFx1RkYwOVx1RkYxQlxuICogLSBcdTVDMDZcdTUzNTVcdTZCMjFcdTg5RTZcdTUzRDFcdTYyQzZcdTUyMDZcdTRFM0FcdUZGMUFwZW5kaW5nKFx1NzJFQ1x1N0FDQlx1NEU4Qlx1NTJBMSkgXHUyMTkyIElPIFx1MjE5MiBzdWNjZXNzL2ZhaWx1cmUoXHU3MkVDXHU3QUNCXHU0RThCXHU1MkExKVx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgbWFrZVRhc2tSdW5uZXIgPSA8XG4gIFBheWxvYWQsXG4gIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsXG4gIFIsXG4gIEEgPSB2b2lkLFxuICBFID0gbmV2ZXIsXG4+KFxuICBzdHJlYW06IFN0cmVhbS5TdHJlYW08UGF5bG9hZD4sXG4gIG1vZGU6IFRhc2tSdW5uZXJNb2RlLFxuICBydW50aW1lOiBUYXNrUnVubmVyUnVudGltZSxcbiAgY29uZmlnOiBUYXNrUnVubmVyQ29uZmlnPFBheWxvYWQsIFNoLCBSLCBBLCBFPixcbik6IEVmZmVjdC5FZmZlY3Q8dm9pZCwgbmV2ZXIsIExvZ2ljLkVudjxTaCwgUj4+ID0+IHtcbiAgaWYgKG1vZGUgPT09IFwibGF0ZXN0XCIpIHtcbiAgICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgdGFza0lkUmVmID0geWllbGQqIFJlZi5tYWtlKDApXG4gICAgICBjb25zdCBjdXJyZW50RmliZXJSZWYgPSB5aWVsZCogUmVmLm1ha2U8RmliZXIuUnVudGltZUZpYmVyPHZvaWQsIG5ldmVyPiB8IHVuZGVmaW5lZD4oXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgIClcblxuICAgICAgY29uc3Qgc3RhcnQgPSAocGF5bG9hZDogUGF5bG9hZCkgPT5cbiAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgICAgIGNvbnN0IHRhc2tJZCA9IHlpZWxkKiBSZWYudXBkYXRlQW5kR2V0KHRhc2tJZFJlZiwgKG4pID0+IG4gKyAxKVxuXG4gICAgICAgICAgY29uc3QgcHJldiA9IHlpZWxkKiBSZWYuZ2V0KGN1cnJlbnRGaWJlclJlZilcbiAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgLy8gXHU0RTBEXHU3QjQ5XHU1Rjg1XHU2NUU3IGZpYmVyIFx1NzcxRlx1NkI2M1x1N0VEM1x1Njc1Rlx1RkYwQ1x1OTA3Rlx1NTE0RFx1OTYzQlx1NTg1RVx1NjVCMFx1ODlFNlx1NTNEMVx1RkYxQlx1NTE5OVx1NTZERVx1OTYzNlx1NkJCNVx1OTc2MCB0YXNrSWQgZ3VhcmQgXHU1MTVDXHU1RTk1XHUzMDAyXG4gICAgICAgICAgICB5aWVsZCogRmliZXIuaW50ZXJydXB0Rm9yayhwcmV2KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNhbldyaXRlQmFjayA9IFJlZi5nZXQodGFza0lkUmVmKS5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcCgoY3VycmVudCkgPT4gY3VycmVudCA9PT0gdGFza0lkKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBmaWJlciA9IHlpZWxkKiBFZmZlY3QuZm9yayhcbiAgICAgICAgICAgIHJ1blRhc2tMaWZlY3ljbGU8UGF5bG9hZCwgU2gsIFIsIEEsIEU+KFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICBydW50aW1lLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGNhbldyaXRlQmFjayxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgeWllbGQqIFJlZi5zZXQoY3VycmVudEZpYmVyUmVmLCBmaWJlcilcbiAgICAgICAgfSlcblxuICAgICAgcmV0dXJuIHlpZWxkKiBTdHJlYW0ucnVuRm9yRWFjaChzdHJlYW0sIHN0YXJ0KVxuICAgIH0pXG4gIH1cblxuICBpZiAobW9kZSA9PT0gXCJleGhhdXN0XCIpIHtcbiAgICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQocnVudGltZSlcbiAgICAgIGNvbnN0IGJ1c3lSZWYgPSB5aWVsZCogUmVmLm1ha2UoZmFsc2UpXG5cbiAgICAgIGNvbnN0IG1hcHBlciA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgYWNxdWlyZWQgPSB5aWVsZCogUmVmLm1vZGlmeShidXN5UmVmLCAoYnVzeSkgPT5cbiAgICAgICAgICAgIGJ1c3kgPyAoW2ZhbHNlLCBidXN5XSBhcyBjb25zdCkgOiAoW3RydWUsIHRydWVdIGFzIGNvbnN0KSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKCFhY3F1aXJlZCkge1xuICAgICAgICAgICAgLy8gXHU1RkZEXHU3NTY1XHU4OUU2XHU1M0QxXHVGRjFBXHU0RTBEXHU0RUE3XHU3NTFGIHBlbmRpbmcgXHU0RThCXHU1MkExXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkKiBydW5UYXNrTGlmZWN5Y2xlPFBheWxvYWQsIFNoLCBSLCBBLCBFPihcbiAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgcnVudGltZSxcbiAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB5aWVsZCogUmVmLnNldChidXN5UmVmLCBmYWxzZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgIHJldHVybiB5aWVsZCogU3RyZWFtLnJ1bkRyYWluKFxuICAgICAgICBzdHJlYW0ucGlwZShTdHJlYW0ubWFwRWZmZWN0KG1hcHBlciwgeyBjb25jdXJyZW5jeSB9KSksXG4gICAgICApXG4gICAgfSkgYXMgRWZmZWN0LkVmZmVjdDx2b2lkLCBuZXZlciwgTG9naWMuRW52PFNoLCBSPj5cbiAgfVxuXG4gIGlmIChtb2RlID09PSBcInBhcmFsbGVsXCIpIHtcbiAgICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQocnVudGltZSlcblxuICAgICAgcmV0dXJuIHlpZWxkKiBTdHJlYW0ucnVuRHJhaW4oXG4gICAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAgIFN0cmVhbS5tYXBFZmZlY3QoXG4gICAgICAgICAgICAocGF5bG9hZCkgPT5cbiAgICAgICAgICAgICAgcnVuVGFza0xpZmVjeWNsZTxQYXlsb2FkLCBTaCwgUiwgQSwgRT4oXG4gICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBydW50aW1lLFxuICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHsgY29uY3VycmVuY3kgfSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH0pIGFzIEVmZmVjdC5FZmZlY3Q8dm9pZCwgbmV2ZXIsIExvZ2ljLkVudjxTaCwgUj4+XG4gIH1cblxuICAvLyBtb2RlID09PSBcInRhc2tcIlx1RkYwOHNlcXVlbnRpYWxcdUZGMDlcbiAgcmV0dXJuIFN0cmVhbS5ydW5Gb3JFYWNoKHN0cmVhbSwgKHBheWxvYWQpID0+XG4gICAgcnVuVGFza0xpZmVjeWNsZTxQYXlsb2FkLCBTaCwgUiwgQSwgRT4ocGF5bG9hZCwgcnVudGltZSwgY29uZmlnKSxcbiAgKSBhcyBFZmZlY3QuRWZmZWN0PHZvaWQsIG5ldmVyLCBMb2dpYy5FbnY8U2gsIFI+PlxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7OztBQUFBLFNBQVMsT0FBTyxRQUFRLE9BQU8sVUFBVSxLQUFLLGNBQWM7QUFjckQsSUFBTSx5QkFBeUIsU0FBUyxXQUFXLEtBQUs7QUFxRy9ELElBQU0sVUFBVSxDQUNkLEtBQ0EsWUFDUyxPQUFPLFFBQVEsYUFBYyxJQUFZLE9BQU8sSUFBSTtBQUUvRCxJQUFNLGlCQUFpQixDQUNyQixpQkFDaUM7QUFBQSxFQUNqQyxTQUFTO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsRUFDUjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLEVBQ1I7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxJQUFNLDZCQUE2QixDQUNqQyxVQUNBLGVBRU0sT0FBTztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ047QUFBQSxFQUNBO0FBQUEsRUFDQSxN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
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Link
|
|
5
|
+
} from "./chunk-FNLXHWIU.js";
|
|
6
|
+
import {
|
|
7
|
+
attachMeta,
|
|
8
|
+
getDefinition,
|
|
9
|
+
getMeta
|
|
10
|
+
} from "./chunk-ZAKUP6QG.js";
|
|
11
|
+
|
|
12
|
+
// ../logix-core/src/Process.ts
|
|
13
|
+
var DEFAULT_TRIGGERS = [
|
|
14
|
+
{ kind: "platformEvent", platformEvent: "runtime:boot" }
|
|
15
|
+
];
|
|
16
|
+
var normalizeDefinition = (input) => {
|
|
17
|
+
const base = typeof input === "string" ? { processId: input } : input;
|
|
18
|
+
const processId = base.processId;
|
|
19
|
+
if (typeof processId !== "string" || processId.length === 0) {
|
|
20
|
+
throw new Error("[Process.make] processId must be a non-empty string");
|
|
21
|
+
}
|
|
22
|
+
const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS;
|
|
23
|
+
const concurrency = base.concurrency ?? { mode: "latest" };
|
|
24
|
+
const errorPolicy = base.errorPolicy ?? { mode: "failStop" };
|
|
25
|
+
const diagnosticsLevel = base.diagnosticsLevel ?? "off";
|
|
26
|
+
return {
|
|
27
|
+
processId,
|
|
28
|
+
name: base.name,
|
|
29
|
+
description: base.description,
|
|
30
|
+
requires: base.requires,
|
|
31
|
+
triggers,
|
|
32
|
+
concurrency,
|
|
33
|
+
errorPolicy,
|
|
34
|
+
diagnosticsLevel
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
var make = (definition, effect) => attachMeta(effect, {
|
|
38
|
+
definition: normalizeDefinition(definition),
|
|
39
|
+
kind: "process"
|
|
40
|
+
});
|
|
41
|
+
var getDefinition2 = (effect) => getDefinition(effect);
|
|
42
|
+
var getMeta2 = (effect) => getMeta(effect);
|
|
43
|
+
var attachMeta2 = (effect, meta) => attachMeta(effect, meta);
|
|
44
|
+
var isModuleLike = (value) => Boolean(value) && typeof value === "object" && ((value._kind === "ModuleDef" || value._kind === "Module") && "tag" in value);
|
|
45
|
+
var unwrapModuleTag = (module) => isModuleLike(module) ? module.tag : module;
|
|
46
|
+
function link(config, logic) {
|
|
47
|
+
const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
|
|
48
|
+
const modulesRecord = /* @__PURE__ */ Object.create(null);
|
|
49
|
+
const requires = /* @__PURE__ */ new Set();
|
|
50
|
+
for (const module of config.modules) {
|
|
51
|
+
const tag = unwrapModuleTag(module);
|
|
52
|
+
requires.add(String(tag.id));
|
|
53
|
+
modulesRecord[tag.id] = tag;
|
|
54
|
+
}
|
|
55
|
+
const effect = Link(
|
|
56
|
+
modulesRecord,
|
|
57
|
+
logic
|
|
58
|
+
);
|
|
59
|
+
const definition = {
|
|
60
|
+
processId: linkId,
|
|
61
|
+
requires: Array.from(requires),
|
|
62
|
+
triggers: [
|
|
63
|
+
...DEFAULT_TRIGGERS,
|
|
64
|
+
{ kind: "platformEvent", platformEvent: `link:${linkId}` }
|
|
65
|
+
],
|
|
66
|
+
concurrency: { mode: "latest" },
|
|
67
|
+
errorPolicy: { mode: "failStop" },
|
|
68
|
+
diagnosticsLevel: "off"
|
|
69
|
+
};
|
|
70
|
+
return attachMeta(effect, {
|
|
71
|
+
definition,
|
|
72
|
+
kind: "link"
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
make,
|
|
78
|
+
getDefinition2 as getDefinition,
|
|
79
|
+
getMeta2 as getMeta,
|
|
80
|
+
attachMeta2 as attachMeta,
|
|
81
|
+
link
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvUHJvY2Vzcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgRWZmZWN0IH0gZnJvbSBcImVmZmVjdFwiXG5pbXBvcnQgKiBhcyBNb2R1bGVGYWN0b3J5IGZyb20gXCIuL2ludGVybmFsL3J1bnRpbWUvTW9kdWxlRmFjdG9yeS5qc1wiXG5pbXBvcnQgdHlwZSAqIGFzIFByb3RvY29sIGZyb20gXCIuL2ludGVybmFsL3J1bnRpbWUvY29yZS9wcm9jZXNzL3Byb3RvY29sLmpzXCJcbmltcG9ydCAqIGFzIE1ldGEgZnJvbSBcIi4vaW50ZXJuYWwvcnVudGltZS9jb3JlL3Byb2Nlc3MvbWV0YS5qc1wiXG5pbXBvcnQgdHlwZSB7XG4gIEFueU1vZHVsZVNoYXBlLFxuICBNb2R1bGVIYW5kbGUsXG4gIE1vZHVsZUxpa2UsXG4gIE1vZHVsZVRhZyxcbn0gZnJvbSBcIi4vaW50ZXJuYWwvbW9kdWxlLmpzXCJcblxuZXhwb3J0IHR5cGUgRGlhZ25vc3RpY3NMZXZlbCA9IFByb3RvY29sLkRpYWdub3N0aWNzTGV2ZWxcbmV4cG9ydCB0eXBlIFByb2Nlc3NTY29wZSA9IFByb3RvY29sLlByb2Nlc3NTY29wZVxuZXhwb3J0IHR5cGUgUHJvY2Vzc0lkZW50aXR5ID0gUHJvdG9jb2wuUHJvY2Vzc0lkZW50aXR5XG5leHBvcnQgdHlwZSBQcm9jZXNzSW5zdGFuY2VJZGVudGl0eSA9IFByb3RvY29sLlByb2Nlc3NJbnN0YW5jZUlkZW50aXR5XG5leHBvcnQgdHlwZSBQcm9jZXNzVHJpZ2dlclNwZWMgPSBQcm90b2NvbC5Qcm9jZXNzVHJpZ2dlclNwZWNcbmV4cG9ydCB0eXBlIFByb2Nlc3NUcmlnZ2VyID0gUHJvdG9jb2wuUHJvY2Vzc1RyaWdnZXJcbmV4cG9ydCB0eXBlIFByb2Nlc3NDb25jdXJyZW5jeVBvbGljeSA9IFByb3RvY29sLlByb2Nlc3NDb25jdXJyZW5jeVBvbGljeVxuZXhwb3J0IHR5cGUgUHJvY2Vzc0Vycm9yUG9saWN5ID0gUHJvdG9jb2wuUHJvY2Vzc0Vycm9yUG9saWN5XG5leHBvcnQgdHlwZSBQcm9jZXNzRGVmaW5pdGlvbiA9IFByb3RvY29sLlByb2Nlc3NEZWZpbml0aW9uXG5leHBvcnQgdHlwZSBQcm9jZXNzSW5zdGFsbGF0aW9uID0gUHJvdG9jb2wuUHJvY2Vzc0luc3RhbGxhdGlvblxuZXhwb3J0IHR5cGUgU2VyaWFsaXphYmxlRXJyb3JTdW1tYXJ5ID0gUHJvdG9jb2wuU2VyaWFsaXphYmxlRXJyb3JTdW1tYXJ5XG5leHBvcnQgdHlwZSBQcm9jZXNzSW5zdGFuY2VTdGF0dXMgPSBQcm90b2NvbC5Qcm9jZXNzSW5zdGFuY2VTdGF0dXNcbmV4cG9ydCB0eXBlIFByb2Nlc3NFdmVudCA9IFByb3RvY29sLlByb2Nlc3NFdmVudFxuZXhwb3J0IHR5cGUgUHJvY2Vzc0NvbnRyb2xSZXF1ZXN0ID0gUHJvdG9jb2wuUHJvY2Vzc0NvbnRyb2xSZXF1ZXN0XG5leHBvcnQgdHlwZSBQcm9jZXNzUGxhdGZvcm1FdmVudCA9IFByb3RvY29sLlByb2Nlc3NQbGF0Zm9ybUV2ZW50XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NFZmZlY3Q8RSA9IG5ldmVyLCBSID0gbmV2ZXI+ID0gTWV0YS5Qcm9jZXNzRWZmZWN0PEUsIFI+XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NNYWtlRGVmaW5pdGlvbiA9XG4gIHwgc3RyaW5nXG4gIHwge1xuICAgICAgcmVhZG9ubHkgcHJvY2Vzc0lkOiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgICByZWFkb25seSByZXF1aXJlcz86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPlxuICAgICAgcmVhZG9ubHkgdHJpZ2dlcnM/OiBSZWFkb25seUFycmF5PFByb2Nlc3NUcmlnZ2VyU3BlYz5cbiAgICAgIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogUHJvY2Vzc0NvbmN1cnJlbmN5UG9saWN5XG4gICAgICByZWFkb25seSBlcnJvclBvbGljeT86IFByb2Nlc3NFcnJvclBvbGljeVxuICAgICAgcmVhZG9ubHkgZGlhZ25vc3RpY3NMZXZlbD86IERpYWdub3N0aWNzTGV2ZWxcbiAgICB9XG5cbmNvbnN0IERFRkFVTFRfVFJJR0dFUlM6IFJlYWRvbmx5QXJyYXk8UHJvY2Vzc1RyaWdnZXJTcGVjPiA9IFtcbiAgeyBraW5kOiBcInBsYXRmb3JtRXZlbnRcIiwgcGxhdGZvcm1FdmVudDogXCJydW50aW1lOmJvb3RcIiB9LFxuXVxuXG5jb25zdCBub3JtYWxpemVEZWZpbml0aW9uID0gKGlucHV0OiBQcm9jZXNzTWFrZURlZmluaXRpb24pOiBQcm9jZXNzRGVmaW5pdGlvbiA9PiB7XG4gIGNvbnN0IGJhc2UgPVxuICAgIHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyAoeyBwcm9jZXNzSWQ6IGlucHV0IH0gc2F0aXNmaWVzIHsgcmVhZG9ubHkgcHJvY2Vzc0lkOiBzdHJpbmcgfSlcbiAgICAgIDogaW5wdXRcblxuICBjb25zdCBwcm9jZXNzSWQgPSBiYXNlLnByb2Nlc3NJZFxuICBpZiAodHlwZW9mIHByb2Nlc3NJZCAhPT0gXCJzdHJpbmdcIiB8fCBwcm9jZXNzSWQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW1Byb2Nlc3MubWFrZV0gcHJvY2Vzc0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpXG4gIH1cblxuICBjb25zdCB0cmlnZ2VycyA9XG4gICAgQXJyYXkuaXNBcnJheShiYXNlLnRyaWdnZXJzKSAmJiBiYXNlLnRyaWdnZXJzLmxlbmd0aCA+IDBcbiAgICAgID8gYmFzZS50cmlnZ2Vyc1xuICAgICAgOiBERUZBVUxUX1RSSUdHRVJTXG5cbiAgY29uc3QgY29uY3VycmVuY3kgPSBiYXNlLmNvbmN1cnJlbmN5ID8/ICh7IG1vZGU6IFwibGF0ZXN0XCIgfSBzYXRpc2ZpZXMgUHJvY2Vzc0NvbmN1cnJlbmN5UG9saWN5KVxuICBjb25zdCBlcnJvclBvbGljeSA9IGJhc2UuZXJyb3JQb2xpY3kgPz8gKHsgbW9kZTogXCJmYWlsU3RvcFwiIH0gc2F0aXNmaWVzIFByb2Nlc3NFcnJvclBvbGljeSlcbiAgY29uc3QgZGlhZ25vc3RpY3NMZXZlbCA9IGJhc2UuZGlhZ25vc3RpY3NMZXZlbCA/PyBcIm9mZlwiXG5cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzSWQsXG4gICAgbmFtZTogYmFzZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBiYXNlLmRlc2NyaXB0aW9uLFxuICAgIHJlcXVpcmVzOiBiYXNlLnJlcXVpcmVzLFxuICAgIHRyaWdnZXJzLFxuICAgIGNvbmN1cnJlbmN5LFxuICAgIGVycm9yUG9saWN5LFxuICAgIGRpYWdub3N0aWNzTGV2ZWwsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1ha2UgPSA8RSwgUj4oXG4gIGRlZmluaXRpb246IFByb2Nlc3NNYWtlRGVmaW5pdGlvbixcbiAgZWZmZWN0OiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIFI+LFxuKTogUHJvY2Vzc0VmZmVjdDxFLCBSPiA9PlxuICBNZXRhLmF0dGFjaE1ldGEoZWZmZWN0LCB7XG4gICAgZGVmaW5pdGlvbjogbm9ybWFsaXplRGVmaW5pdGlvbihkZWZpbml0aW9uKSxcbiAgICBraW5kOiBcInByb2Nlc3NcIixcbiAgfSlcblxuZXhwb3J0IGNvbnN0IGdldERlZmluaXRpb24gPSAoXG4gIGVmZmVjdDogRWZmZWN0LkVmZmVjdDx2b2lkLCBhbnksIGFueT4sXG4pOiBQcm9jZXNzRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCA9PiBNZXRhLmdldERlZmluaXRpb24oZWZmZWN0KVxuXG5leHBvcnQgY29uc3QgZ2V0TWV0YSA9IChlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8dm9pZCwgYW55LCBhbnk+KTogTWV0YS5Qcm9jZXNzTWV0YSB8IHVuZGVmaW5lZCA9PlxuICBNZXRhLmdldE1ldGEoZWZmZWN0KVxuXG5leHBvcnQgY29uc3QgYXR0YWNoTWV0YSA9IDxFLCBSPihcbiAgZWZmZWN0OiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIFI+LFxuICBtZXRhOiBNZXRhLlByb2Nlc3NNZXRhLFxuKTogUHJvY2Vzc0VmZmVjdDxFLCBSPiA9PiBNZXRhLmF0dGFjaE1ldGEoZWZmZWN0LCBtZXRhKVxuXG50eXBlIExpbmtNb2R1bGVUb2tlbjxJZCBleHRlbmRzIHN0cmluZywgU2ggZXh0ZW5kcyBBbnlNb2R1bGVTaGFwZT4gPVxuICB8IE1vZHVsZVRhZzxJZCwgU2g+XG4gIHwgTW9kdWxlTGlrZTxJZCwgU2gsIG9iamVjdD5cblxudHlwZSBMaW5rTW9kdWxlSWRPZjxNPiA9IE0gZXh0ZW5kcyB7IHJlYWRvbmx5IGlkOiBpbmZlciBJZCB9ID8gSWQgOiBuZXZlclxudHlwZSBMaW5rTW9kdWxlU2hhcGVPZjxNPiA9IE0gZXh0ZW5kcyBNb2R1bGVMaWtlPHN0cmluZywgaW5mZXIgU2gsIG9iamVjdD5cbiAgPyBTaFxuICA6IE0gZXh0ZW5kcyBNb2R1bGVUYWc8c3RyaW5nLCBpbmZlciBTaD5cbiAgICA/IFNoXG4gICAgOiBuZXZlclxudHlwZSBMaW5rTW9kdWxlVGFnT2Y8TT4gPSBNIGV4dGVuZHMgTW9kdWxlTGlrZTxzdHJpbmcsIGluZmVyIFNoLCBvYmplY3Q+XG4gID8gTW9kdWxlVGFnPHN0cmluZywgU2g+XG4gIDogTSBleHRlbmRzIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPlxuICAgID8gTVxuICAgIDogbmV2ZXJcblxuY29uc3QgaXNNb2R1bGVMaWtlID0gKFxuICB2YWx1ZTogdW5rbm93bixcbik6IHZhbHVlIGlzIE1vZHVsZUxpa2U8c3RyaW5nLCBBbnlNb2R1bGVTaGFwZSwgb2JqZWN0PiA9PlxuICBCb29sZWFuKHZhbHVlKSAmJlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgKCgodmFsdWUgYXMgeyByZWFkb25seSBfa2luZD86IHVua25vd24gfSkuX2tpbmQgPT09IFwiTW9kdWxlRGVmXCIgfHxcbiAgICAodmFsdWUgYXMgeyByZWFkb25seSBfa2luZD86IHVua25vd24gfSkuX2tpbmQgPT09IFwiTW9kdWxlXCIpICYmXG4gICAgXCJ0YWdcIiBpbiAodmFsdWUgYXMgb2JqZWN0KSlcblxuY29uc3QgdW53cmFwTW9kdWxlVGFnID0gPElkIGV4dGVuZHMgc3RyaW5nLCBTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlPihcbiAgbW9kdWxlOiBMaW5rTW9kdWxlVG9rZW48SWQsIFNoPixcbik6IE1vZHVsZVRhZzxJZCwgU2g+ID0+XG4gIGlzTW9kdWxlTGlrZShtb2R1bGUpID8gbW9kdWxlLnRhZyA6IG1vZHVsZVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtDb25maWc8TXMgZXh0ZW5kcyByZWFkb25seSBMaW5rTW9kdWxlVG9rZW48c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT5bXT4ge1xuICByZWFkb25seSBpZD86IHN0cmluZ1xuICByZWFkb25seSBtb2R1bGVzOiBNc1xufVxuXG5leHBvcnQgdHlwZSBMaW5rSGFuZGxlczxNcyBleHRlbmRzIHJlYWRvbmx5IExpbmtNb2R1bGVUb2tlbjxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPltdPiA9IHtcbiAgW00gaW4gTXNbbnVtYmVyXSBhcyBMaW5rTW9kdWxlSWRPZjxNPl06IE1vZHVsZUhhbmRsZTxMaW5rTW9kdWxlU2hhcGVPZjxNPj5cbn1cblxudHlwZSBNb2R1bGVzUmVjb3JkPE1zIGV4dGVuZHMgcmVhZG9ubHkgTGlua01vZHVsZVRva2VuPHN0cmluZywgQW55TW9kdWxlU2hhcGU+W10+ID0ge1xuICBbTSBpbiBNc1tudW1iZXJdIGFzIExpbmtNb2R1bGVJZE9mPE0+XTogTGlua01vZHVsZVRhZ09mPE0+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rPFxuICBNcyBleHRlbmRzIHJlYWRvbmx5IExpbmtNb2R1bGVUb2tlbjxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPltdLFxuICBFID0gbmV2ZXIsXG4gIFIgPSBuZXZlclxuPihcbiAgY29uZmlnOiBMaW5rQ29uZmlnPE1zPixcbiAgbG9naWM6ICgkOiBMaW5rSGFuZGxlczxNcz4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgUj4sXG4pOiBQcm9jZXNzRWZmZWN0PEUsIFI+IHtcbiAgY29uc3QgbGlua0lkID1cbiAgICBjb25maWcuaWQgPz9cbiAgICBbLi4uY29uZmlnLm1vZHVsZXNdXG4gICAgICAubWFwKChtKSA9PiBtLmlkKVxuICAgICAgLnNvcnQoKVxuICAgICAgLmpvaW4oXCJ+XCIpXG5cbiAgY29uc3QgbW9kdWxlc1JlY29yZCA9IE9iamVjdC5jcmVhdGUobnVsbCkgYXMgTW9kdWxlc1JlY29yZDxNcz5cbiAgY29uc3QgcmVxdWlyZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgbW9kdWxlIG9mIGNvbmZpZy5tb2R1bGVzKSB7XG4gICAgY29uc3QgdGFnID0gdW53cmFwTW9kdWxlVGFnKG1vZHVsZSlcbiAgICByZXF1aXJlcy5hZGQoU3RyaW5nKHRhZy5pZCkpXG4gICAgOyhtb2R1bGVzUmVjb3JkIGFzIFJlY29yZDxzdHJpbmcsIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPj4pW3RhZy5pZF0gPVxuICAgICAgdGFnIGFzIHVua25vd24gYXMgTW9kdWxlVGFnPHN0cmluZywgQW55TW9kdWxlU2hhcGU+XG4gIH1cblxuICBjb25zdCBlZmZlY3QgPSBNb2R1bGVGYWN0b3J5LkxpbmsoXG4gICAgbW9kdWxlc1JlY29yZCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPj4sXG4gICAgbG9naWMgYXMgdW5rbm93biBhcyAoXG4gICAgICAkOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVIYW5kbGU8QW55TW9kdWxlU2hhcGU+PixcbiAgICApID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgUj4sXG4gIClcblxuICBjb25zdCBkZWZpbml0aW9uOiBQcm9jZXNzRGVmaW5pdGlvbiA9IHtcbiAgICBwcm9jZXNzSWQ6IGxpbmtJZCxcbiAgICByZXF1aXJlczogQXJyYXkuZnJvbShyZXF1aXJlcyksXG4gICAgdHJpZ2dlcnM6IFtcbiAgICAgIC4uLkRFRkFVTFRfVFJJR0dFUlMsXG4gICAgICB7IGtpbmQ6IFwicGxhdGZvcm1FdmVudFwiLCBwbGF0Zm9ybUV2ZW50OiBgbGluazoke2xpbmtJZH1gIH0sXG4gICAgXSxcbiAgICBjb25jdXJyZW5jeTogeyBtb2RlOiBcImxhdGVzdFwiIH0sXG4gICAgZXJyb3JQb2xpY3k6IHsgbW9kZTogXCJmYWlsU3RvcFwiIH0sXG4gICAgZGlhZ25vc3RpY3NMZXZlbDogXCJvZmZcIixcbiAgfVxuXG4gIHJldHVybiBNZXRhLmF0dGFjaE1ldGEoZWZmZWN0LCB7XG4gICAgZGVmaW5pdGlvbixcbiAgICBraW5kOiBcImxpbmtcIixcbiAgfSkgYXMgUHJvY2Vzc0VmZmVjdDxFLCBSPlxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7O0FBMENBLElBQU0sbUJBQXNEO0FBQUEsRUFDMUQsRUFBRSxNQUFNLGlCQUFpQixlQUFlLGVBQWU7QUFDekQ7QUFFQSxJQUFNLHNCQUFzQixDQUFDLFVBQW9EO0FBQy9FLFFBQU0sT0FDSixPQUFPLFVBQVUsV0FDWixFQUFFLFdBQVcsTUFBTSxJQUNwQjtBQUVOLFFBQU0sWUFBWSxLQUFLO0FBQ3ZCLE1BQUksT0FBTyxjQUFjLFlBQVksVUFBVSxXQUFXLEdBQUc7QUFDM0QsVUFBTSxJQUFJLE1BQU0scURBQXFEO0FBQUEsRUFDdkU7QUFFQSxRQUFNLFdBQ0osTUFBTSxRQUFRLEtBQUssUUFBUSxLQUFLLEtBQUssU0FBUyxTQUFTLElBQ25ELEtBQUssV0FDTDtBQUVOLFFBQU0sY0FBYyxLQUFLLGVBQWdCLEVBQUUsTUFBTSxTQUFTO0FBQzFELFFBQU0sY0FBYyxLQUFLLGVBQWdCLEVBQUUsTUFBTSxXQUFXO0FBQzVELFFBQU0sbUJBQW1CLEtBQUssb0JBQW9CO0FBRWxELFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxNQUFNLEtBQUs7QUFBQSxJQUNYLGFBQWEsS0FBSztBQUFBLElBQ2xCLFVBQVUsS0FBSztBQUFBLElBQ2Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFFTyxJQUFNLE9BQU8sQ0FDbEIsWUFDQSxXQUVLLFdBQVcsUUFBUTtBQUFBLEVBQ3RCLFlBQVksb0JBQW9CLFVBQVU7QUFBQSxFQUMxQyxNQUFNO0FBQ1IsQ0FBQztBQUVJLElBQU1BLGlCQUFnQixDQUMzQixXQUN1QyxjQUFjLE1BQU07QUFFdEQsSUFBTUMsV0FBVSxDQUFDLFdBQ2pCLFFBQVEsTUFBTTtBQUVkLElBQU1DLGNBQWEsQ0FDeEIsUUFDQSxTQUM2QixXQUFXLFFBQVEsSUFBSTtBQWtCdEQsSUFBTSxlQUFlLENBQ25CLFVBRUEsUUFBUSxLQUFLLEtBQ2IsT0FBTyxVQUFVLGNBQ2QsTUFBdUMsVUFBVSxlQUNqRCxNQUF1QyxVQUFVLGFBQ2xELFNBQVU7QUFFZCxJQUFNLGtCQUFrQixDQUN0QixXQUVBLGFBQWEsTUFBTSxJQUFJLE9BQU8sTUFBTTtBQWUvQixTQUFTLEtBS2QsUUFDQSxPQUNxQjtBQUNyQixRQUFNLFNBQ0osT0FBTyxNQUNQLENBQUMsR0FBRyxPQUFPLE9BQU8sRUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFDZixLQUFLLEVBQ0wsS0FBSyxHQUFHO0FBRWIsUUFBTSxnQkFBZ0IsdUJBQU8sT0FBTyxJQUFJO0FBQ3hDLFFBQU0sV0FBVyxvQkFBSSxJQUFZO0FBRWpDLGFBQVcsVUFBVSxPQUFPLFNBQVM7QUFDbkMsVUFBTSxNQUFNLGdCQUFnQixNQUFNO0FBQ2xDLGFBQVMsSUFBSSxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzFCLElBQUMsY0FBb0UsSUFBSSxFQUFFLElBQzFFO0FBQUEsRUFDSjtBQUVBLFFBQU0sU0FBdUI7QUFBQSxJQUMzQjtBQUFBLElBQ0E7QUFBQSxFQUdGO0FBRUEsUUFBTSxhQUFnQztBQUFBLElBQ3BDLFdBQVc7QUFBQSxJQUNYLFVBQVUsTUFBTSxLQUFLLFFBQVE7QUFBQSxJQUM3QixVQUFVO0FBQUEsTUFDUixHQUFHO0FBQUEsTUFDSCxFQUFFLE1BQU0saUJBQWlCLGVBQWUsUUFBUSxNQUFNLEdBQUc7QUFBQSxJQUMzRDtBQUFBLElBQ0EsYUFBYSxFQUFFLE1BQU0sU0FBUztBQUFBLElBQzlCLGFBQWEsRUFBRSxNQUFNLFdBQVc7QUFBQSxJQUNoQyxrQkFBa0I7QUFBQSxFQUNwQjtBQUVBLFNBQVksV0FBVyxRQUFRO0FBQUEsSUFDN0I7QUFBQSxJQUNBLE1BQU07QUFBQSxFQUNSLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiZ2V0RGVmaW5pdGlvbiIsICJnZXRNZXRhIiwgImF0dGFjaE1ldGEiXQp9Cg==
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
isDevEnv
|
|
5
|
+
} from "./chunk-GP37MEGJ.js";
|
|
6
|
+
|
|
7
|
+
// ../logix-core/src/Root.ts
|
|
8
|
+
import { Context as Context2, Effect } from "../effect.js";
|
|
9
|
+
|
|
10
|
+
// ../logix-core/src/internal/runtime/core/RootContext.ts
|
|
11
|
+
import { Context } from "../effect.js";
|
|
12
|
+
var RootContextTagImpl = class extends Context.Tag(
|
|
13
|
+
"@logix/core/RootContext"
|
|
14
|
+
)() {
|
|
15
|
+
};
|
|
16
|
+
var RootContextTag = RootContextTagImpl;
|
|
17
|
+
|
|
18
|
+
// ../logix-core/src/Root.ts
|
|
19
|
+
var tagIdOf = (tag) => typeof tag?.id === "string" ? String(tag.id) : typeof tag?.key === "string" ? String(tag.key) : "<unknown tag>";
|
|
20
|
+
var makeMissingRootProviderError = (tag, entrypoint, extra) => {
|
|
21
|
+
const dev = isDevEnv();
|
|
22
|
+
const tokenId = tagIdOf(tag);
|
|
23
|
+
const fix = dev ? [
|
|
24
|
+
"- Provide it when creating the runtime tree (Logix.Runtime.make(...,{ layer }) / ManagedRuntime.make(Layer.mergeAll(...))).",
|
|
25
|
+
"- If you're in React and want the current runtime environment singleton, use useModule(ModuleTag).",
|
|
26
|
+
"- Do not rely on nested RuntimeProvider.layer to mock Root.resolve."
|
|
27
|
+
] : [];
|
|
28
|
+
const message = dev ? [
|
|
29
|
+
"[MissingRootProviderError] Cannot resolve Tag from root provider.",
|
|
30
|
+
extra ? `
|
|
31
|
+
${extra}` : "",
|
|
32
|
+
`tokenId: ${tokenId}`,
|
|
33
|
+
`entrypoint: ${entrypoint}`,
|
|
34
|
+
"mode: global",
|
|
35
|
+
"startScope: root",
|
|
36
|
+
"",
|
|
37
|
+
"fix:",
|
|
38
|
+
...fix
|
|
39
|
+
].filter((s) => s.length > 0).join("\n") : "[MissingRootProviderError] tag not found in root provider";
|
|
40
|
+
const err = new Error(message);
|
|
41
|
+
err.name = "MissingRootProviderError";
|
|
42
|
+
err.tokenId = tokenId;
|
|
43
|
+
err.entrypoint = entrypoint;
|
|
44
|
+
err.mode = "global";
|
|
45
|
+
err.startScope = { kind: "root" };
|
|
46
|
+
err.fix = fix;
|
|
47
|
+
return err;
|
|
48
|
+
};
|
|
49
|
+
var resolve = (tag, options) => Effect.gen(function* () {
|
|
50
|
+
const entrypoint = options?.entrypoint ?? "logic.root.resolve";
|
|
51
|
+
const root = yield* RootContextTag;
|
|
52
|
+
const rootContext = root.context ?? (options?.waitForReady ? yield* root.ready : void 0);
|
|
53
|
+
if (!rootContext) {
|
|
54
|
+
return yield* Effect.die(
|
|
55
|
+
makeMissingRootProviderError(
|
|
56
|
+
tag,
|
|
57
|
+
entrypoint,
|
|
58
|
+
"reason: rootContextNotReady"
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
return Context2.get(rootContext, tag);
|
|
64
|
+
} catch {
|
|
65
|
+
return yield* Effect.die(
|
|
66
|
+
makeMissingRootProviderError(tag, entrypoint)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
RootContextTag,
|
|
73
|
+
resolve
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvUm9vdC50cyIsICIuLi8uLi8uLi8uLi9sb2dpeC1jb3JlL3NyYy9pbnRlcm5hbC9ydW50aW1lL2NvcmUvUm9vdENvbnRleHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIlxuaW1wb3J0IHsgaXNEZXZFbnYgfSBmcm9tIFwiLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvZW52LmpzXCJcbmltcG9ydCB7IFJvb3RDb250ZXh0VGFnIH0gZnJvbSBcIi4vaW50ZXJuYWwvcnVudGltZS9jb3JlL1Jvb3RDb250ZXh0LmpzXCJcblxuZXhwb3J0IHR5cGUgUm9vdFJlc29sdmVFbnRyeXBvaW50ID0gXCJsb2dpYy5yb290LnJlc29sdmVcIiB8IFwibG9naWMuJC5yb290LnJlc29sdmVcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RSZXNvbHZlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBSb290UmVzb2x2ZUVudHJ5cG9pbnRcbiAgLyoqXG4gICAqIFx1NjYyRlx1NTQyNlx1NTE0MVx1OEJCOFx1NTcyOCBSb290Q29udGV4dCBcdTVDMUFcdTY3MkFcdTVDMzFcdTdFRUFcdTY1RjZcdTdCNDlcdTVGODVcdUZGMUFcbiAgICogLSBcdTlFRDhcdThCQTQgZmFsc2VcdUZGMUFcdTkwN0ZcdTUxNERcdTU3MjggbGF5ZXIvc2V0dXAgXHU5NjM2XHU2QkI1XHU4QkVGXHU3NTI4XHU1QkZDXHU4MUY0XHU2QjdCXHU5NTAxXHVGRjFCXG4gICAqIC0gYCQucm9vdC5yZXNvbHZlYCBcdTRGMUFcdTU3MjggcnVuIFx1OTYzNlx1NkJCNVx1NEYyMCB0cnVlXHVGRjA4cnVuLW9ubHlcdUZGMDlcdUZGMENcdTUxNDFcdThCQjhcdTdCNDlcdTVGODUgRW52IFx1N0VDNFx1ODhDNVx1NUI4Q1x1NjIxMFx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgd2FpdEZvclJlYWR5PzogYm9vbGVhblxufVxuXG5jb25zdCB0YWdJZE9mID0gKHRhZzogQ29udGV4dC5UYWc8YW55LCBhbnk+KTogc3RyaW5nID0+XG4gIHR5cGVvZiAodGFnIGFzIGFueSk/LmlkID09PSBcInN0cmluZ1wiXG4gICAgPyBTdHJpbmcoKHRhZyBhcyBhbnkpLmlkKVxuICAgIDogdHlwZW9mICh0YWcgYXMgYW55KT8ua2V5ID09PSBcInN0cmluZ1wiXG4gICAgICA/IFN0cmluZygodGFnIGFzIGFueSkua2V5KVxuICAgICAgOiBcIjx1bmtub3duIHRhZz5cIlxuXG5jb25zdCBtYWtlTWlzc2luZ1Jvb3RQcm92aWRlckVycm9yID0gKFxuICB0YWc6IENvbnRleHQuVGFnPGFueSwgYW55PixcbiAgZW50cnlwb2ludDogUm9vdFJlc29sdmVFbnRyeXBvaW50LFxuICBleHRyYT86IHN0cmluZyxcbik6IEVycm9yID0+IHtcbiAgY29uc3QgZGV2ID0gaXNEZXZFbnYoKVxuICBjb25zdCB0b2tlbklkID0gdGFnSWRPZih0YWcpXG4gIGNvbnN0IGZpeDogc3RyaW5nW10gPSBkZXZcbiAgICA/IFtcbiAgICAgICAgXCItIFByb3ZpZGUgaXQgd2hlbiBjcmVhdGluZyB0aGUgcnVudGltZSB0cmVlIChMb2dpeC5SdW50aW1lLm1ha2UoLi4uLHsgbGF5ZXIgfSkgLyBNYW5hZ2VkUnVudGltZS5tYWtlKExheWVyLm1lcmdlQWxsKC4uLikpKS5cIixcbiAgICAgICAgXCItIElmIHlvdSdyZSBpbiBSZWFjdCBhbmQgd2FudCB0aGUgY3VycmVudCBydW50aW1lIGVudmlyb25tZW50IHNpbmdsZXRvbiwgdXNlIHVzZU1vZHVsZShNb2R1bGVUYWcpLlwiLFxuICAgICAgICBcIi0gRG8gbm90IHJlbHkgb24gbmVzdGVkIFJ1bnRpbWVQcm92aWRlci5sYXllciB0byBtb2NrIFJvb3QucmVzb2x2ZS5cIixcbiAgICAgIF1cbiAgICA6IFtdXG5cbiAgY29uc3QgbWVzc2FnZSA9IGRldlxuICAgID8gW1xuICAgICAgICBcIltNaXNzaW5nUm9vdFByb3ZpZGVyRXJyb3JdIENhbm5vdCByZXNvbHZlIFRhZyBmcm9tIHJvb3QgcHJvdmlkZXIuXCIsXG4gICAgICAgIGV4dHJhID8gYFxcbiR7ZXh0cmF9YCA6IFwiXCIsXG4gICAgICAgIGB0b2tlbklkOiAke3Rva2VuSWR9YCxcbiAgICAgICAgYGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gLFxuICAgICAgICBcIm1vZGU6IGdsb2JhbFwiLFxuICAgICAgICBcInN0YXJ0U2NvcGU6IHJvb3RcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCJmaXg6XCIsXG4gICAgICAgIC4uLmZpeCxcbiAgICAgIF1cbiAgICAgICAgLmZpbHRlcigocykgPT4gcy5sZW5ndGggPiAwKVxuICAgICAgICAuam9pbihcIlxcblwiKVxuICAgIDogXCJbTWlzc2luZ1Jvb3RQcm92aWRlckVycm9yXSB0YWcgbm90IGZvdW5kIGluIHJvb3QgcHJvdmlkZXJcIlxuXG4gIGNvbnN0IGVyciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuICBlcnIubmFtZSA9IFwiTWlzc2luZ1Jvb3RQcm92aWRlckVycm9yXCJcbiAgOyhlcnIgYXMgYW55KS50b2tlbklkID0gdG9rZW5JZFxuICA7KGVyciBhcyBhbnkpLmVudHJ5cG9pbnQgPSBlbnRyeXBvaW50XG4gIDsoZXJyIGFzIGFueSkubW9kZSA9IFwiZ2xvYmFsXCJcbiAgOyhlcnIgYXMgYW55KS5zdGFydFNjb3BlID0geyBraW5kOiBcInJvb3RcIiB9XG4gIDsoZXJyIGFzIGFueSkuZml4ID0gZml4XG4gIHJldHVybiBlcnJcbn1cblxuLyoqXG4gKiBSb290LnJlc29sdmVcbiAqXG4gKiBcdTY2M0VcdTVGMEZcdTRFQ0VcdTIwMUNcdTVGNTNcdTUyNEQgUnVudGltZSBUcmVlIFx1NzY4NFx1NjgzOVx1RkYwOHJvb3QgcHJvdmlkZXJcdUZGMDlcdTIwMURcdTg5RTNcdTY3OTBcdTY3RDBcdTRFMkEgVGFnXHVGRjA4U2VydmljZVRhZyAvIE1vZHVsZVRhZ1x1RkYwOVx1MzAwMlxuICpcbiAqIFx1OEJFRFx1NEU0OVx1RkYxQVxuICogLSBcdTU2RkFcdTVCOUFcdThCRkJcdTUzRDYgcm9vdENvbnRleHRcdUZGMENcdTRFMERcdTUzRDdcdTY2RjRcdThGRDEgc2NvcGUgXHU3Njg0IExheWVyL0NvbnRleHQgXHU4OTg2XHU3NkQ2XHU1RjcxXHU1NENEXHVGRjFCXG4gKiAtIFx1NUJGOSBNb2R1bGVUYWdcdUZGMUFcdTUzRUFcdTg4NjhcdThGQkUgcm9vdCBcdTUzNTVcdTRGOEJcdThCRURcdTRFNDlcdUZGMDhcdTRFMERcdTc1MjhcdTRFOEVcdTU5MUFcdTVCOUVcdTRGOEJcdTkwMDlcdTYyRTlcdUZGMDlcdTMwMDJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmUgPSA8SWQsIFN2Yz4oXG4gIHRhZzogQ29udGV4dC5UYWc8SWQsIFN2Yz4sXG4gIG9wdGlvbnM/OiBSb290UmVzb2x2ZU9wdGlvbnMsXG4pOiBFZmZlY3QuRWZmZWN0PFN2YywgbmV2ZXIsIGFueT4gPT5cbiAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgIGNvbnN0IGVudHJ5cG9pbnQ6IFJvb3RSZXNvbHZlRW50cnlwb2ludCA9XG4gICAgICBvcHRpb25zPy5lbnRyeXBvaW50ID8/IFwibG9naWMucm9vdC5yZXNvbHZlXCJcblxuICAgIGNvbnN0IHJvb3QgPSB5aWVsZCogUm9vdENvbnRleHRUYWdcblxuICAgIGNvbnN0IHJvb3RDb250ZXh0ID1cbiAgICAgIHJvb3QuY29udGV4dCA/PyAob3B0aW9ucz8ud2FpdEZvclJlYWR5ID8geWllbGQqIHJvb3QucmVhZHkgOiB1bmRlZmluZWQpXG5cbiAgICBpZiAoIXJvb3RDb250ZXh0KSB7XG4gICAgICByZXR1cm4geWllbGQqIEVmZmVjdC5kaWUoXG4gICAgICAgIG1ha2VNaXNzaW5nUm9vdFByb3ZpZGVyRXJyb3IoXG4gICAgICAgICAgdGFnIGFzIENvbnRleHQuVGFnPGFueSwgYW55PixcbiAgICAgICAgICBlbnRyeXBvaW50LFxuICAgICAgICAgIFwicmVhc29uOiByb290Q29udGV4dE5vdFJlYWR5XCIsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBDb250ZXh0LmdldChyb290Q29udGV4dCwgdGFnIGFzIENvbnRleHQuVGFnPGFueSwgYW55PikgYXMgU3ZjXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4geWllbGQqIEVmZmVjdC5kaWUoXG4gICAgICAgIG1ha2VNaXNzaW5nUm9vdFByb3ZpZGVyRXJyb3IodGFnIGFzIENvbnRleHQuVGFnPGFueSwgYW55PiwgZW50cnlwb2ludCksXG4gICAgICApXG4gICAgfVxuICB9KVxuIiwgImltcG9ydCB7IENvbnRleHQsIERlZmVycmVkIH0gZnJvbSBcImVmZmVjdFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9vdENvbnRleHQge1xuICBjb250ZXh0OiBDb250ZXh0LkNvbnRleHQ8YW55PiB8IHVuZGVmaW5lZFxuICByZWFkb25seSByZWFkeTogRGVmZXJyZWQuRGVmZXJyZWQ8Q29udGV4dC5Db250ZXh0PGFueT4sIG5ldmVyPlxufVxuXG5jbGFzcyBSb290Q29udGV4dFRhZ0ltcGwgZXh0ZW5kcyBDb250ZXh0LlRhZyhcbiAgXCJAbG9naXgvY29yZS9Sb290Q29udGV4dFwiLFxuKTxSb290Q29udGV4dFRhZ0ltcGwsIFJvb3RDb250ZXh0PigpIHt9XG5cbmV4cG9ydCBjb25zdCBSb290Q29udGV4dFRhZyA9IFJvb3RDb250ZXh0VGFnSW1wbFxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQUFBLFNBQVMsV0FBQUEsVUFBUyxjQUFjOzs7QUNBaEMsU0FBUyxlQUF5QjtBQU9sQyxJQUFNLHFCQUFOLGNBQWlDLFFBQVE7QUFBQSxFQUN2QztBQUNGLEVBQW1DLEVBQUU7QUFBQztBQUUvQixJQUFNLGlCQUFpQjs7O0FESzlCLElBQU0sVUFBVSxDQUFDLFFBQ2YsT0FBUSxLQUFhLE9BQU8sV0FDeEIsT0FBUSxJQUFZLEVBQUUsSUFDdEIsT0FBUSxLQUFhLFFBQVEsV0FDM0IsT0FBUSxJQUFZLEdBQUcsSUFDdkI7QUFFUixJQUFNLCtCQUErQixDQUNuQyxLQUNBLFlBQ0EsVUFDVTtBQUNWLFFBQU0sTUFBTSxTQUFTO0FBQ3JCLFFBQU0sVUFBVSxRQUFRLEdBQUc7QUFDM0IsUUFBTSxNQUFnQixNQUNsQjtBQUFBLElBQ0U7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFDQSxDQUFDO0FBRUwsUUFBTSxVQUFVLE1BQ1o7QUFBQSxJQUNFO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFBSyxLQUFLLEtBQUs7QUFBQSxJQUN2QixZQUFZLE9BQU87QUFBQSxJQUNuQixlQUFlLFVBQVU7QUFBQSxJQUN6QjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLEVBQ0wsRUFDRyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUMxQixLQUFLLElBQUksSUFDWjtBQUVKLFFBQU0sTUFBTSxJQUFJLE1BQU0sT0FBTztBQUM3QixNQUFJLE9BQU87QUFDVixFQUFDLElBQVksVUFBVTtBQUN2QixFQUFDLElBQVksYUFBYTtBQUMxQixFQUFDLElBQVksT0FBTztBQUNwQixFQUFDLElBQVksYUFBYSxFQUFFLE1BQU0sT0FBTztBQUN6QyxFQUFDLElBQVksTUFBTTtBQUNwQixTQUFPO0FBQ1Q7QUFXTyxJQUFNLFVBQVUsQ0FDckIsS0FDQSxZQUVBLE9BQU8sSUFBSSxhQUFhO0FBQ3RCLFFBQU0sYUFDSixTQUFTLGNBQWM7QUFFekIsUUFBTSxPQUFPLE9BQU87QUFFcEIsUUFBTSxjQUNKLEtBQUssWUFBWSxTQUFTLGVBQWUsT0FBTyxLQUFLLFFBQVE7QUFFL0QsTUFBSSxDQUFDLGFBQWE7QUFDaEIsV0FBTyxPQUFPLE9BQU87QUFBQSxNQUNuQjtBQUFBLFFBQ0U7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUk7QUFDRixXQUFPQyxTQUFRLElBQUksYUFBYSxHQUE0QjtBQUFBLEVBQzlELFFBQVE7QUFDTixXQUFPLE9BQU8sT0FBTztBQUFBLE1BQ25CLDZCQUE2QixLQUE4QixVQUFVO0FBQUEsSUFDdkU7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFsiQ29udGV4dCIsICJDb250ZXh0Il0KfQo=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
isDevEnv
|
|
5
|
+
} from "./chunk-XE7ULSGQ.js";
|
|
6
|
+
|
|
7
|
+
// ../logix-core/src/internal/runtime/core/runtimeInternalsAccessor.ts
|
|
8
|
+
var RUNTIME_INTERNALS = /* @__PURE__ */ Symbol.for("@logix/core/runtimeInternals");
|
|
9
|
+
var BOUND_INTERNALS = /* @__PURE__ */ Symbol.for("@logix/core/boundInternals");
|
|
10
|
+
var MODULE_TRAITS_PROGRAM = /* @__PURE__ */ Symbol.for("@logix/core/moduleTraitsProgram");
|
|
11
|
+
var defineHidden = (target, key, value) => {
|
|
12
|
+
Object.defineProperty(target, key, {
|
|
13
|
+
value,
|
|
14
|
+
enumerable: false,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: false
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
var setRuntimeInternals = (runtime, internals) => {
|
|
20
|
+
defineHidden(runtime, RUNTIME_INTERNALS, internals);
|
|
21
|
+
};
|
|
22
|
+
var setBoundInternals = (bound, internals) => {
|
|
23
|
+
defineHidden(bound, BOUND_INTERNALS, internals);
|
|
24
|
+
};
|
|
25
|
+
var setModuleTraitsProgram = (module, program) => {
|
|
26
|
+
defineHidden(module, MODULE_TRAITS_PROGRAM, program);
|
|
27
|
+
};
|
|
28
|
+
var getModuleTraitsProgram = (module) => {
|
|
29
|
+
if (!module) return void 0;
|
|
30
|
+
if (typeof module !== "object" && typeof module !== "function") return void 0;
|
|
31
|
+
return module[MODULE_TRAITS_PROGRAM];
|
|
32
|
+
};
|
|
33
|
+
var formatScope = (moduleId, instanceId) => {
|
|
34
|
+
const m = typeof moduleId === "string" && moduleId.length > 0 ? moduleId : "unknown";
|
|
35
|
+
const i = typeof instanceId === "string" && instanceId.length > 0 ? instanceId : "unknown";
|
|
36
|
+
return `moduleId=${m}, instanceId=${i}`;
|
|
37
|
+
};
|
|
38
|
+
var getRuntimeInternals = (runtime) => {
|
|
39
|
+
const scope = runtime;
|
|
40
|
+
const internals = runtime[RUNTIME_INTERNALS];
|
|
41
|
+
if (!internals) {
|
|
42
|
+
const msg = isDevEnv() ? [
|
|
43
|
+
"[MissingRuntimeInternals] Runtime internals not installed on ModuleRuntime instance.",
|
|
44
|
+
`scope: ${formatScope(scope.moduleId, scope.instanceId)}`,
|
|
45
|
+
"fix:",
|
|
46
|
+
"- Ensure ModuleRuntime.make calls internalHooks.installInternalHooks (020 foundation).",
|
|
47
|
+
"- If you created a mock runtime for tests, attach internals or avoid calling internal-only APIs."
|
|
48
|
+
].join("\n") : "Runtime internals not installed";
|
|
49
|
+
throw new Error(msg);
|
|
50
|
+
}
|
|
51
|
+
const runtimeInstanceId = scope.instanceId;
|
|
52
|
+
if (typeof runtimeInstanceId === "string" && runtimeInstanceId.length > 0 && runtimeInstanceId !== internals.instanceId) {
|
|
53
|
+
throw new Error(
|
|
54
|
+
isDevEnv() ? [
|
|
55
|
+
"[InconsistentRuntimeInternals] Runtime internals instanceId mismatch.",
|
|
56
|
+
`runtime: ${formatScope(scope.moduleId, runtimeInstanceId)}`,
|
|
57
|
+
`internals: ${formatScope(internals.moduleId, internals.instanceId)}`
|
|
58
|
+
].join("\n") : "Runtime internals mismatch"
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return internals;
|
|
62
|
+
};
|
|
63
|
+
var getBoundInternals = (bound) => {
|
|
64
|
+
const internals = bound[BOUND_INTERNALS];
|
|
65
|
+
if (!internals) {
|
|
66
|
+
const msg = isDevEnv() ? [
|
|
67
|
+
"[MissingBoundInternals] Bound internals not installed on Bound API instance.",
|
|
68
|
+
"fix:",
|
|
69
|
+
"- Ensure BoundApiRuntime attaches internals (020 foundation).",
|
|
70
|
+
"- If you created a mock bound for tests, attach internals or avoid calling internal-only APIs."
|
|
71
|
+
].join("\n") : "Bound internals not installed";
|
|
72
|
+
throw new Error(msg);
|
|
73
|
+
}
|
|
74
|
+
return internals;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
setRuntimeInternals,
|
|
79
|
+
setBoundInternals,
|
|
80
|
+
setModuleTraitsProgram,
|
|
81
|
+
getModuleTraitsProgram,
|
|
82
|
+
getRuntimeInternals,
|
|
83
|
+
getBoundInternals
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL3J1bnRpbWVJbnRlcm5hbHNBY2Nlc3Nvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaXNEZXZFbnYgfSBmcm9tICcuL2Vudi5qcydcbmltcG9ydCB0eXBlIHsgUnVudGltZUludGVybmFscyB9IGZyb20gJy4vUnVudGltZUludGVybmFscy5qcydcblxuY29uc3QgUlVOVElNRV9JTlRFUk5BTFMgPSBTeW1ib2wuZm9yKCdAbG9naXgvY29yZS9ydW50aW1lSW50ZXJuYWxzJylcbmNvbnN0IEJPVU5EX0lOVEVSTkFMUyA9IFN5bWJvbC5mb3IoJ0Bsb2dpeC9jb3JlL2JvdW5kSW50ZXJuYWxzJylcbmNvbnN0IE1PRFVMRV9UUkFJVFNfUFJPR1JBTSA9IFN5bWJvbC5mb3IoJ0Bsb2dpeC9jb3JlL21vZHVsZVRyYWl0c1Byb2dyYW0nKVxuXG5jb25zdCBkZWZpbmVIaWRkZW4gPSAodGFyZ2V0OiBvYmplY3QsIGtleTogc3ltYm9sLCB2YWx1ZTogdW5rbm93bik6IHZvaWQgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICB2YWx1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc2V0UnVudGltZUludGVybmFscyA9IChydW50aW1lOiBvYmplY3QsIGludGVybmFsczogUnVudGltZUludGVybmFscyk6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4ocnVudGltZSwgUlVOVElNRV9JTlRFUk5BTFMsIGludGVybmFscylcbn1cblxuZXhwb3J0IGNvbnN0IHNldEJvdW5kSW50ZXJuYWxzID0gKGJvdW5kOiBvYmplY3QsIGludGVybmFsczogUnVudGltZUludGVybmFscyk6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4oYm91bmQsIEJPVU5EX0lOVEVSTkFMUywgaW50ZXJuYWxzKVxufVxuXG4vKipcbiAqIE1vZHVsZVRyYWl0c1Byb2dyYW1cdUZGMDhTdGF0ZVRyYWl0UHJvZ3JhbVx1RkYwOVx1RkYxQVxuICogLSBcdTc1MjhcdTRFOEVcdTU3MjggTW9kdWxlIFx1NUI5QVx1NEU0OVx1NUJGOVx1OEM2MVx1NEUwQVx1NjMwMlx1OEY3RCB0cmFpdHMgUHJvZ3JhbVx1RkYwOFx1NEY5QiBUcmFpdExpZmVjeWNsZS9EZWJ1ZyBcdTRGN0ZcdTc1MjhcdUZGMDlcdUZGMUJcbiAqIC0gXHU0RjdGXHU3NTI4IFN5bWJvbCArIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5XHVGRjBDXHU5MDdGXHU1MTREIGAuX18qYCBtYWdpYyBmaWVsZCBcdTYyNjlcdTY1NjNcdTMwMDJcbiAqXG4gKiBcdTZDRThcdTYxMEZcdUZGMUFcdThGRDlcdTY2MkZcdTIwMUNcdTZBMjFcdTU3NTdcdTVCOUFcdTRFNDlcdTRGQTdcdTIwMURcdTc2ODRcdTUxODVcdTkwRThcdTY5RkRcdTRGNERcdUZGMENcdTRFMERcdTVDNUVcdTRFOEUgUnVudGltZUludGVybmFsc1x1RkYwOFx1NUI5RVx1NEY4Qlx1N0VBN1x1RkYwOVx1RkYxQlx1NEUyNFx1ODAwNVx1OEJFRFx1NEU0OVx1NEUwRFx1NTQwQ1x1MzAwMlxuICovXG5leHBvcnQgY29uc3Qgc2V0TW9kdWxlVHJhaXRzUHJvZ3JhbSA9IChtb2R1bGU6IG9iamVjdCwgcHJvZ3JhbTogdW5rbm93bik6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4obW9kdWxlLCBNT0RVTEVfVFJBSVRTX1BST0dSQU0sIHByb2dyYW0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRNb2R1bGVUcmFpdHNQcm9ncmFtID0gKG1vZHVsZTogdW5rbm93bik6IHVua25vd24gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIW1vZHVsZSkgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gKG1vZHVsZSBhcyBhbnkpW01PRFVMRV9UUkFJVFNfUFJPR1JBTV0gYXMgdW5rbm93biB8IHVuZGVmaW5lZFxufVxuXG5jb25zdCBmb3JtYXRTY29wZSA9IChtb2R1bGVJZDogdW5rbm93biwgaW5zdGFuY2VJZDogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG0gPSB0eXBlb2YgbW9kdWxlSWQgPT09ICdzdHJpbmcnICYmIG1vZHVsZUlkLmxlbmd0aCA+IDAgPyBtb2R1bGVJZCA6ICd1bmtub3duJ1xuICBjb25zdCBpID0gdHlwZW9mIGluc3RhbmNlSWQgPT09ICdzdHJpbmcnICYmIGluc3RhbmNlSWQubGVuZ3RoID4gMCA/IGluc3RhbmNlSWQgOiAndW5rbm93bidcbiAgcmV0dXJuIGBtb2R1bGVJZD0ke219LCBpbnN0YW5jZUlkPSR7aX1gXG59XG5cbmV4cG9ydCBjb25zdCBnZXRSdW50aW1lSW50ZXJuYWxzID0gKHJ1bnRpbWU6IG9iamVjdCk6IFJ1bnRpbWVJbnRlcm5hbHMgPT4ge1xuICBjb25zdCBzY29wZSA9IHJ1bnRpbWUgYXMgeyByZWFkb25seSBtb2R1bGVJZD86IHVua25vd247IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiB1bmtub3duIH1cbiAgY29uc3QgaW50ZXJuYWxzID0gKHJ1bnRpbWUgYXMgYW55KVtSVU5USU1FX0lOVEVSTkFMU10gYXMgUnVudGltZUludGVybmFscyB8IHVuZGVmaW5lZFxuICBpZiAoIWludGVybmFscykge1xuICAgIGNvbnN0IG1zZyA9IGlzRGV2RW52KClcbiAgICAgID8gW1xuICAgICAgICAgICdbTWlzc2luZ1J1bnRpbWVJbnRlcm5hbHNdIFJ1bnRpbWUgaW50ZXJuYWxzIG5vdCBpbnN0YWxsZWQgb24gTW9kdWxlUnVudGltZSBpbnN0YW5jZS4nLFxuICAgICAgICAgIGBzY29wZTogJHtmb3JtYXRTY29wZShzY29wZS5tb2R1bGVJZCwgc2NvcGUuaW5zdGFuY2VJZCl9YCxcbiAgICAgICAgICAnZml4OicsXG4gICAgICAgICAgJy0gRW5zdXJlIE1vZHVsZVJ1bnRpbWUubWFrZSBjYWxscyBpbnRlcm5hbEhvb2tzLmluc3RhbGxJbnRlcm5hbEhvb2tzICgwMjAgZm91bmRhdGlvbikuJyxcbiAgICAgICAgICAnLSBJZiB5b3UgY3JlYXRlZCBhIG1vY2sgcnVudGltZSBmb3IgdGVzdHMsIGF0dGFjaCBpbnRlcm5hbHMgb3IgYXZvaWQgY2FsbGluZyBpbnRlcm5hbC1vbmx5IEFQSXMuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgOiAnUnVudGltZSBpbnRlcm5hbHMgbm90IGluc3RhbGxlZCdcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKVxuICB9XG5cbiAgY29uc3QgcnVudGltZUluc3RhbmNlSWQgPSBzY29wZS5pbnN0YW5jZUlkXG4gIGlmIChcbiAgICB0eXBlb2YgcnVudGltZUluc3RhbmNlSWQgPT09ICdzdHJpbmcnICYmXG4gICAgcnVudGltZUluc3RhbmNlSWQubGVuZ3RoID4gMCAmJlxuICAgIHJ1bnRpbWVJbnN0YW5jZUlkICE9PSBpbnRlcm5hbHMuaW5zdGFuY2VJZFxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBpc0RldkVudigpXG4gICAgICAgID8gW1xuICAgICAgICAgICAgJ1tJbmNvbnNpc3RlbnRSdW50aW1lSW50ZXJuYWxzXSBSdW50aW1lIGludGVybmFscyBpbnN0YW5jZUlkIG1pc21hdGNoLicsXG4gICAgICAgICAgICBgcnVudGltZTogJHtmb3JtYXRTY29wZShzY29wZS5tb2R1bGVJZCwgcnVudGltZUluc3RhbmNlSWQpfWAsXG4gICAgICAgICAgICBgaW50ZXJuYWxzOiAke2Zvcm1hdFNjb3BlKGludGVybmFscy5tb2R1bGVJZCwgaW50ZXJuYWxzLmluc3RhbmNlSWQpfWAsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgICA6ICdSdW50aW1lIGludGVybmFscyBtaXNtYXRjaCcsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGludGVybmFsc1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRJbnRlcm5hbHMgPSAoYm91bmQ6IG9iamVjdCk6IFJ1bnRpbWVJbnRlcm5hbHMgPT4ge1xuICBjb25zdCBpbnRlcm5hbHMgPSAoYm91bmQgYXMgYW55KVtCT1VORF9JTlRFUk5BTFNdIGFzIFJ1bnRpbWVJbnRlcm5hbHMgfCB1bmRlZmluZWRcbiAgaWYgKCFpbnRlcm5hbHMpIHtcbiAgICBjb25zdCBtc2cgPSBpc0RldkVudigpXG4gICAgICA/IFtcbiAgICAgICAgICAnW01pc3NpbmdCb3VuZEludGVybmFsc10gQm91bmQgaW50ZXJuYWxzIG5vdCBpbnN0YWxsZWQgb24gQm91bmQgQVBJIGluc3RhbmNlLicsXG4gICAgICAgICAgJ2ZpeDonLFxuICAgICAgICAgICctIEVuc3VyZSBCb3VuZEFwaVJ1bnRpbWUgYXR0YWNoZXMgaW50ZXJuYWxzICgwMjAgZm91bmRhdGlvbikuJyxcbiAgICAgICAgICAnLSBJZiB5b3UgY3JlYXRlZCBhIG1vY2sgYm91bmQgZm9yIHRlc3RzLCBhdHRhY2ggaW50ZXJuYWxzIG9yIGF2b2lkIGNhbGxpbmcgaW50ZXJuYWwtb25seSBBUElzLicsXG4gICAgICAgIF0uam9pbignXFxuJylcbiAgICAgIDogJ0JvdW5kIGludGVybmFscyBub3QgaW5zdGFsbGVkJ1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxzXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBR0EsSUFBTSxvQkFBb0IsdUJBQU8sSUFBSSw4QkFBOEI7QUFDbkUsSUFBTSxrQkFBa0IsdUJBQU8sSUFBSSw0QkFBNEI7QUFDL0QsSUFBTSx3QkFBd0IsdUJBQU8sSUFBSSxpQ0FBaUM7QUFFMUUsSUFBTSxlQUFlLENBQUMsUUFBZ0IsS0FBYSxVQUF5QjtBQUMxRSxTQUFPLGVBQWUsUUFBUSxLQUFLO0FBQUEsSUFDakM7QUFBQSxJQUNBLFlBQVk7QUFBQSxJQUNaLGNBQWM7QUFBQSxJQUNkLFVBQVU7QUFBQSxFQUNaLENBQUM7QUFDSDtBQUVPLElBQU0sc0JBQXNCLENBQUMsU0FBaUIsY0FBc0M7QUFDekYsZUFBYSxTQUFTLG1CQUFtQixTQUFTO0FBQ3BEO0FBRU8sSUFBTSxvQkFBb0IsQ0FBQyxPQUFlLGNBQXNDO0FBQ3JGLGVBQWEsT0FBTyxpQkFBaUIsU0FBUztBQUNoRDtBQVNPLElBQU0seUJBQXlCLENBQUMsUUFBZ0IsWUFBMkI7QUFDaEYsZUFBYSxRQUFRLHVCQUF1QixPQUFPO0FBQ3JEO0FBRU8sSUFBTSx5QkFBeUIsQ0FBQyxXQUF5QztBQUM5RSxNQUFJLENBQUMsT0FBUSxRQUFPO0FBQ3BCLE1BQUksT0FBTyxXQUFXLFlBQVksT0FBTyxXQUFXLFdBQVksUUFBTztBQUN2RSxTQUFRLE9BQWUscUJBQXFCO0FBQzlDO0FBRUEsSUFBTSxjQUFjLENBQUMsVUFBbUIsZUFBZ0M7QUFDdEUsUUFBTSxJQUFJLE9BQU8sYUFBYSxZQUFZLFNBQVMsU0FBUyxJQUFJLFdBQVc7QUFDM0UsUUFBTSxJQUFJLE9BQU8sZUFBZSxZQUFZLFdBQVcsU0FBUyxJQUFJLGFBQWE7QUFDakYsU0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7QUFDdkM7QUFFTyxJQUFNLHNCQUFzQixDQUFDLFlBQXNDO0FBQ3hFLFFBQU0sUUFBUTtBQUNkLFFBQU0sWUFBYSxRQUFnQixpQkFBaUI7QUFDcEQsTUFBSSxDQUFDLFdBQVc7QUFDZCxVQUFNLE1BQU0sU0FBUyxJQUNqQjtBQUFBLE1BQ0U7QUFBQSxNQUNBLFVBQVUsWUFBWSxNQUFNLFVBQVUsTUFBTSxVQUFVLENBQUM7QUFBQSxNQUN2RDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLEtBQUssSUFBSSxJQUNYO0FBQ0osVUFBTSxJQUFJLE1BQU0sR0FBRztBQUFBLEVBQ3JCO0FBRUEsUUFBTSxvQkFBb0IsTUFBTTtBQUNoQyxNQUNFLE9BQU8sc0JBQXNCLFlBQzdCLGtCQUFrQixTQUFTLEtBQzNCLHNCQUFzQixVQUFVLFlBQ2hDO0FBQ0EsVUFBTSxJQUFJO0FBQUEsTUFDUixTQUFTLElBQ0w7QUFBQSxRQUNFO0FBQUEsUUFDQSxZQUFZLFlBQVksTUFBTSxVQUFVLGlCQUFpQixDQUFDO0FBQUEsUUFDMUQsY0FBYyxZQUFZLFVBQVUsVUFBVSxVQUFVLFVBQVUsQ0FBQztBQUFBLE1BQ3JFLEVBQUUsS0FBSyxJQUFJLElBQ1g7QUFBQSxJQUNOO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVPLElBQU0sb0JBQW9CLENBQUMsVUFBb0M7QUFDcEUsUUFBTSxZQUFhLE1BQWMsZUFBZTtBQUNoRCxNQUFJLENBQUMsV0FBVztBQUNkLFVBQU0sTUFBTSxTQUFTLElBQ2pCO0FBQUEsTUFDRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxLQUFLLElBQUksSUFDWDtBQUNKLFVBQU0sSUFBSSxNQUFNLEdBQUc7QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|