@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,102 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
isDevEnv
|
|
5
|
+
} from "./chunk-2UGKSXDZ.js";
|
|
6
|
+
|
|
7
|
+
// ../logix-core/src/ScopeRegistry.ts
|
|
8
|
+
import { Context, Layer } from "../effect.js";
|
|
9
|
+
var ScopeRegistryTag = class extends Context.Tag("@logix/core/ScopeRegistry")() {
|
|
10
|
+
};
|
|
11
|
+
var ScopedRuntimeTag = class extends Context.Tag("@logix/core/ScopeRegistry/ScopedRuntime")() {
|
|
12
|
+
};
|
|
13
|
+
var internal = {
|
|
14
|
+
ScopeRegistryTag,
|
|
15
|
+
ScopedRuntimeTag
|
|
16
|
+
};
|
|
17
|
+
var makeRegistry = () => {
|
|
18
|
+
let nextLeaseId = 0;
|
|
19
|
+
const scopes = /* @__PURE__ */ new Map();
|
|
20
|
+
const getStack = (scopeId, token) => {
|
|
21
|
+
const byToken = scopes.get(scopeId);
|
|
22
|
+
if (byToken) {
|
|
23
|
+
const stack = byToken.get(token);
|
|
24
|
+
if (stack) return stack;
|
|
25
|
+
const created2 = [];
|
|
26
|
+
byToken.set(token, created2);
|
|
27
|
+
return created2;
|
|
28
|
+
}
|
|
29
|
+
const created = [];
|
|
30
|
+
const createdByToken = /* @__PURE__ */ new Map();
|
|
31
|
+
createdByToken.set(token, created);
|
|
32
|
+
scopes.set(scopeId, createdByToken);
|
|
33
|
+
return created;
|
|
34
|
+
};
|
|
35
|
+
const tryDeleteEmpty = (scopeId, token) => {
|
|
36
|
+
const byToken = scopes.get(scopeId);
|
|
37
|
+
if (!byToken) return;
|
|
38
|
+
const stack = byToken.get(token);
|
|
39
|
+
if (stack && stack.length === 0) {
|
|
40
|
+
byToken.delete(token);
|
|
41
|
+
}
|
|
42
|
+
if (byToken.size === 0) {
|
|
43
|
+
scopes.delete(scopeId);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const register = (scopeId, token, value) => {
|
|
47
|
+
nextLeaseId += 1;
|
|
48
|
+
const leaseId = nextLeaseId;
|
|
49
|
+
const stack = getStack(scopeId, token);
|
|
50
|
+
if (isDevEnv() && stack.length > 0) {
|
|
51
|
+
console.debug(
|
|
52
|
+
`[ScopeRegistry] Multiple registrations detected for scopeId="${scopeId}". This is allowed (LIFO), but usually indicates scopeId collisions or missing cleanup.`
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
stack.push({ leaseId, value });
|
|
56
|
+
const release = () => {
|
|
57
|
+
const stack2 = scopes.get(scopeId)?.get(token);
|
|
58
|
+
if (!stack2 || stack2.length === 0) return;
|
|
59
|
+
const last = stack2[stack2.length - 1];
|
|
60
|
+
if (last && last.leaseId === leaseId) {
|
|
61
|
+
stack2.pop();
|
|
62
|
+
tryDeleteEmpty(scopeId, token);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const idx = stack2.findIndex((e) => e.leaseId === leaseId);
|
|
66
|
+
if (idx >= 0) {
|
|
67
|
+
stack2.splice(idx, 1);
|
|
68
|
+
tryDeleteEmpty(scopeId, token);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return { release };
|
|
72
|
+
};
|
|
73
|
+
const get = (scopeId, token) => {
|
|
74
|
+
const stack = scopes.get(scopeId)?.get(token);
|
|
75
|
+
if (!stack || stack.length === 0) return void 0;
|
|
76
|
+
return stack[stack.length - 1].value;
|
|
77
|
+
};
|
|
78
|
+
const clearToken = (scopeId, token) => {
|
|
79
|
+
const byToken = scopes.get(scopeId);
|
|
80
|
+
if (!byToken) return;
|
|
81
|
+
byToken.delete(token);
|
|
82
|
+
if (byToken.size === 0) {
|
|
83
|
+
scopes.delete(scopeId);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const clearScope = (scopeId) => {
|
|
87
|
+
scopes.delete(scopeId);
|
|
88
|
+
};
|
|
89
|
+
const clearAll = () => {
|
|
90
|
+
scopes.clear();
|
|
91
|
+
};
|
|
92
|
+
return { register, get, clearToken, clearScope, clearAll };
|
|
93
|
+
};
|
|
94
|
+
var layer = () => Layer.succeed(ScopeRegistryTag, makeRegistry());
|
|
95
|
+
|
|
96
|
+
export {
|
|
97
|
+
ScopeRegistryTag,
|
|
98
|
+
ScopedRuntimeTag,
|
|
99
|
+
internal,
|
|
100
|
+
layer
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvU2NvcGVSZWdpc3RyeS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGV4dCwgTGF5ZXIsIE1hbmFnZWRSdW50aW1lIH0gZnJvbSAnZWZmZWN0J1xuaW1wb3J0IHsgaXNEZXZFbnYgfSBmcm9tICcuL0Vudi5qcydcblxuZXhwb3J0IHR5cGUgU2NvcGVJZCA9IHN0cmluZ1xuXG50eXBlIEFueVRhZyA9IENvbnRleHQuVGFnPGFueSwgYW55PlxuXG50eXBlIExlYXNlSWQgPSBudW1iZXJcblxudHlwZSBFbnRyeSA9IHtcbiAgcmVhZG9ubHkgbGVhc2VJZDogTGVhc2VJZFxuICByZWFkb25seSB2YWx1ZTogdW5rbm93blxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUmVnaXN0cnkge1xuICAvKipcbiAgICogXHU2Q0U4XHU1MThDXHU0RTAwXHU0RTJBIHNjb3BlLWJvdW5kIFx1NzY4NFx1NTAzQ1x1RkYwOFx1NjUyRlx1NjMwMVx1NTkxQVx1NjVCOVx1NkNFOFx1NTE4Q1x1RkYxQVx1NTQwRVx1NkNFOFx1NTE4Q1x1ODAwNVx1ODk4Nlx1NzZENiBnZXQgXHU3Njg0XHU4RkQ0XHU1NkRFXHU1MDNDXHVGRjA5XHUzMDAyXG4gICAqIFx1OEZENFx1NTZERSByZWxlYXNlIFx1NTFGRFx1NjU3MFx1RkYxQVx1OEMwM1x1NzUyOFx1NTQwRVx1NUMwNlx1NjRBNFx1OTUwMFx1NjcyQ1x1NkIyMVx1NkNFOFx1NTE4Q1x1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0ZXI6IDxBPihzY29wZUlkOiBTY29wZUlkLCB0b2tlbjogQ29udGV4dC5UYWc8YW55LCBBPiwgdmFsdWU6IEEpID0+IHsgcmVhZG9ubHkgcmVsZWFzZTogKCkgPT4gdm9pZCB9XG5cbiAgLyoqXG4gICAqIFx1OEJGQlx1NTNENlx1NjdEMFx1NEUyQSBzY29wZSBcdTRFMEJcdTY3RDBcdTRFMkEgdG9rZW4gXHU3Njg0XHUyMDFDXHU1RjUzXHU1MjREXHU1MDNDXHUyMDFEXHVGRjA4XHU2NzAwXHU1NDBFXHU0RTAwXHU2QjIxIHJlZ2lzdGVyIFx1NzY4NFx1NTAzQ1x1RkYwOVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0OiA8QT4oc2NvcGVJZDogU2NvcGVJZCwgdG9rZW46IENvbnRleHQuVGFnPGFueSwgQT4pID0+IEEgfCB1bmRlZmluZWRcblxuICAvKipcbiAgICogXHU1MjIwXHU5NjY0XHU2N0QwXHU0RTJBIHNjb3BlIFx1NEUwQlx1NjdEMFx1NEUyQSB0b2tlbiBcdTc2ODRcdTYyNDBcdTY3MDlcdTZDRThcdTUxOENcdUZGMDhcdTY1RTBcdThCQkFcdThDMDFcdTZDRThcdTUxOENcdTc2ODRcdUZGMDlcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFyVG9rZW46IChzY29wZUlkOiBTY29wZUlkLCB0b2tlbjogQW55VGFnKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIFx1NkUwNVx1NzQwNlx1NjdEMFx1NEUyQSBzY29wZSBcdTRFMEJcdTc2ODRcdTYyNDBcdTY3MDkgdG9rZW5cdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFyU2NvcGU6IChzY29wZUlkOiBTY29wZUlkKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIFx1NkUwNVx1NzQwNlx1NjU3NFx1NEUyQSByZWdpc3RyeVx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYXJBbGw6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlUmVnaXN0cnlUYWcgZXh0ZW5kcyBDb250ZXh0LlRhZygnQGxvZ2l4L2NvcmUvU2NvcGVSZWdpc3RyeScpPFNjb3BlUmVnaXN0cnlUYWcsIFNjb3BlUmVnaXN0cnk+KCkge31cblxuLyoqXG4gKiBcdTc1MjhcdTRFOEVcdTU3MjggU2NvcGVSZWdpc3RyeSBcdTRFMkRcdTVCNThcdTY1M0VcdTIwMUNcdTY3RDBcdTRFMkEgc2NvcGUgXHU1QkY5XHU1RTk0XHU3Njg0IE1hbmFnZWRSdW50aW1lIFx1NTNFNVx1NjdDNFx1MjAxRFx1MzAwMlxuICpcbiAqIFx1NTE3OFx1NTc4Qlx1NTczQVx1NjY2Rlx1RkYxQVx1OERFOCBSZWFjdCBcdTVCNTBcdTY4MTEgLyBcdTcyRUNcdTdBQ0Igcm9vdCBcdTk3MDBcdTg5ODFcdTU5MERcdTc1MjhcdTU0MENcdTRFMDBcdTRFMkEgcnVudGltZSBzY29wZVx1RkYwOEVudi9TY29wZS9GaWJlclJlZlx1RkYwOVx1NjVGNlx1RkYwQ1xuICogXHU1QzA2XHU4QkU1IHJ1bnRpbWUgXHU0RUU1IHNjb3BlSWQgXHU2Q0U4XHU1MThDXHU1RTc2XHU1NzI4XHU1M0U2XHU0RTAwXHU2OEY1XHU2ODExXHU0RTJEXHU1M0Q2XHU1NkRFXHUzMDAyXG4gKi9cbmV4cG9ydCBjbGFzcyBTY29wZWRSdW50aW1lVGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoJ0Bsb2dpeC9jb3JlL1Njb3BlUmVnaXN0cnkvU2NvcGVkUnVudGltZScpPFxuICBTY29wZWRSdW50aW1lVGFnLFxuICBNYW5hZ2VkUnVudGltZS5NYW5hZ2VkUnVudGltZTxhbnksIGFueT5cbj4oKSB7fVxuXG5leHBvcnQgY29uc3QgaW50ZXJuYWwgPSB7XG4gIFNjb3BlUmVnaXN0cnlUYWcsXG4gIFNjb3BlZFJ1bnRpbWVUYWcsXG59XG5cbmNvbnN0IG1ha2VSZWdpc3RyeSA9ICgpOiBTY29wZVJlZ2lzdHJ5ID0+IHtcbiAgbGV0IG5leHRMZWFzZUlkOiBMZWFzZUlkID0gMFxuXG4gIC8vIHNjb3BlSWQgLT4gKHRva2VuIC0+IHN0YWNrKGVudHJpZXMpKVxuICBjb25zdCBzY29wZXMgPSBuZXcgTWFwPFNjb3BlSWQsIE1hcDxBbnlUYWcsIEFycmF5PEVudHJ5Pj4+KClcblxuICBjb25zdCBnZXRTdGFjayA9IChzY29wZUlkOiBTY29wZUlkLCB0b2tlbjogQW55VGFnKTogQXJyYXk8RW50cnk+ID0+IHtcbiAgICBjb25zdCBieVRva2VuID0gc2NvcGVzLmdldChzY29wZUlkKVxuICAgIGlmIChieVRva2VuKSB7XG4gICAgICBjb25zdCBzdGFjayA9IGJ5VG9rZW4uZ2V0KHRva2VuKVxuICAgICAgaWYgKHN0YWNrKSByZXR1cm4gc3RhY2tcbiAgICAgIGNvbnN0IGNyZWF0ZWQ6IEFycmF5PEVudHJ5PiA9IFtdXG4gICAgICBieVRva2VuLnNldCh0b2tlbiwgY3JlYXRlZClcbiAgICAgIHJldHVybiBjcmVhdGVkXG4gICAgfVxuICAgIGNvbnN0IGNyZWF0ZWQ6IEFycmF5PEVudHJ5PiA9IFtdXG4gICAgY29uc3QgY3JlYXRlZEJ5VG9rZW4gPSBuZXcgTWFwPEFueVRhZywgQXJyYXk8RW50cnk+PigpXG4gICAgY3JlYXRlZEJ5VG9rZW4uc2V0KHRva2VuLCBjcmVhdGVkKVxuICAgIHNjb3Blcy5zZXQoc2NvcGVJZCwgY3JlYXRlZEJ5VG9rZW4pXG4gICAgcmV0dXJuIGNyZWF0ZWRcbiAgfVxuXG4gIGNvbnN0IHRyeURlbGV0ZUVtcHR5ID0gKHNjb3BlSWQ6IFNjb3BlSWQsIHRva2VuOiBBbnlUYWcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBieVRva2VuID0gc2NvcGVzLmdldChzY29wZUlkKVxuICAgIGlmICghYnlUb2tlbikgcmV0dXJuXG4gICAgY29uc3Qgc3RhY2sgPSBieVRva2VuLmdldCh0b2tlbilcbiAgICBpZiAoc3RhY2sgJiYgc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICBieVRva2VuLmRlbGV0ZSh0b2tlbilcbiAgICB9XG4gICAgaWYgKGJ5VG9rZW4uc2l6ZSA9PT0gMCkge1xuICAgICAgc2NvcGVzLmRlbGV0ZShzY29wZUlkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlZ2lzdGVyOiBTY29wZVJlZ2lzdHJ5WydyZWdpc3RlciddID0gKHNjb3BlSWQsIHRva2VuLCB2YWx1ZSkgPT4ge1xuICAgIG5leHRMZWFzZUlkICs9IDFcbiAgICBjb25zdCBsZWFzZUlkID0gbmV4dExlYXNlSWRcbiAgICBjb25zdCBzdGFjayA9IGdldFN0YWNrKHNjb3BlSWQsIHRva2VuIGFzIEFueVRhZylcblxuICAgIC8vIGRldjogXHU1NDBDXHU0RTAwIHNjb3BlSWQrdG9rZW4gXHU1OTFBXHU2NUI5XHU2Q0U4XHU1MThDXHU1RjgwXHU1RjgwXHU2MTBGXHU1NDczXHU3NzQwIHNjb3BlSWQgXHU5MDA5XHU2MkU5XHU1MUIyXHU3QTgxXHU2MjE2XHU3NTFGXHU1NDdEXHU1NDY4XHU2NzFGXHU2Q0M0XHU2RjBGXHVGRjFCXG4gICAgLy8gXHU0RjQ2IFJlYWN0L1x1NUU3Nlx1NTNEMVx1NkUzMlx1NjdEMy9cdTkxQ0RcdTVFRkEgUHJvdmlkZXIgXHU1M0VGXHU4MEZEXHU1QkZDXHU4MUY0XHU3N0VEXHU2NjgyXHU5MUNEXHU1MTY1XHVGRjBDXHU1NkUwXHU2QjY0XHU4RkQ5XHU5MUNDXHU1M0VBXHU1MDVBXHU4RjdCXHU5MUNGXHU2M0QwXHU3OTNBXHVGRjBDXHU0RTBEXHU1RjNBXHU1MjM2XHU2MjlCXHU5NTE5XHUzMDAyXG4gICAgaWYgKGlzRGV2RW52KCkgJiYgc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgIGBbU2NvcGVSZWdpc3RyeV0gTXVsdGlwbGUgcmVnaXN0cmF0aW9ucyBkZXRlY3RlZCBmb3Igc2NvcGVJZD1cIiR7c2NvcGVJZH1cIi4gYCArXG4gICAgICAgICAgYFRoaXMgaXMgYWxsb3dlZCAoTElGTyksIGJ1dCB1c3VhbGx5IGluZGljYXRlcyBzY29wZUlkIGNvbGxpc2lvbnMgb3IgbWlzc2luZyBjbGVhbnVwLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgc3RhY2sucHVzaCh7IGxlYXNlSWQsIHZhbHVlIH0pXG5cbiAgICBjb25zdCByZWxlYXNlID0gKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhY2syID0gc2NvcGVzLmdldChzY29wZUlkKT8uZ2V0KHRva2VuIGFzIEFueVRhZylcbiAgICAgIGlmICghc3RhY2syIHx8IHN0YWNrMi5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgICAvLyBcdTVFMzhcdTg5QzFcdTYwQzVcdTUxQjVcdUZGMUFMSUZPIFx1OTFDQVx1NjUzRVxuICAgICAgY29uc3QgbGFzdCA9IHN0YWNrMltzdGFjazIubGVuZ3RoIC0gMV1cbiAgICAgIGlmIChsYXN0ICYmIGxhc3QubGVhc2VJZCA9PT0gbGVhc2VJZCkge1xuICAgICAgICBzdGFjazIucG9wKClcbiAgICAgICAgdHJ5RGVsZXRlRW1wdHkoc2NvcGVJZCwgdG9rZW4gYXMgQW55VGFnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gXHU1MTVDXHU1RTk1XHVGRjFBXHU0RTJEXHU5NUY0XHU5MUNBXHU2NTNFXHVGRjA4XHU3RUJGXHU2MDI3XHU2MjZCXHU2M0NGXHVGRjA5XG4gICAgICBjb25zdCBpZHggPSBzdGFjazIuZmluZEluZGV4KChlKSA9PiBlLmxlYXNlSWQgPT09IGxlYXNlSWQpXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgc3RhY2syLnNwbGljZShpZHgsIDEpXG4gICAgICAgIHRyeURlbGV0ZUVtcHR5KHNjb3BlSWQsIHRva2VuIGFzIEFueVRhZylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyByZWxlYXNlIH1cbiAgfVxuXG4gIGNvbnN0IGdldDogU2NvcGVSZWdpc3RyeVsnZ2V0J10gPSAoc2NvcGVJZCwgdG9rZW4pID0+IHtcbiAgICBjb25zdCBzdGFjayA9IHNjb3Blcy5nZXQoc2NvcGVJZCk/LmdldCh0b2tlbiBhcyBBbnlUYWcpXG4gICAgaWYgKCFzdGFjayB8fCBzdGFjay5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0hLnZhbHVlIGFzIGFueVxuICB9XG5cbiAgY29uc3QgY2xlYXJUb2tlbjogU2NvcGVSZWdpc3RyeVsnY2xlYXJUb2tlbiddID0gKHNjb3BlSWQsIHRva2VuKSA9PiB7XG4gICAgY29uc3QgYnlUb2tlbiA9IHNjb3Blcy5nZXQoc2NvcGVJZClcbiAgICBpZiAoIWJ5VG9rZW4pIHJldHVyblxuICAgIGJ5VG9rZW4uZGVsZXRlKHRva2VuKVxuICAgIGlmIChieVRva2VuLnNpemUgPT09IDApIHtcbiAgICAgIHNjb3Blcy5kZWxldGUoc2NvcGVJZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBjbGVhclNjb3BlOiBTY29wZVJlZ2lzdHJ5WydjbGVhclNjb3BlJ10gPSAoc2NvcGVJZCkgPT4ge1xuICAgIHNjb3Blcy5kZWxldGUoc2NvcGVJZClcbiAgfVxuXG4gIGNvbnN0IGNsZWFyQWxsOiBTY29wZVJlZ2lzdHJ5WydjbGVhckFsbCddID0gKCkgPT4ge1xuICAgIHNjb3Blcy5jbGVhcigpXG4gIH1cblxuICByZXR1cm4geyByZWdpc3RlciwgZ2V0LCBjbGVhclRva2VuLCBjbGVhclNjb3BlLCBjbGVhckFsbCB9XG59XG5cbmV4cG9ydCBjb25zdCBsYXllciA9ICgpOiBMYXllci5MYXllcjxTY29wZVJlZ2lzdHJ5VGFnLCBuZXZlciwgbmV2ZXI+ID0+IExheWVyLnN1Y2NlZWQoU2NvcGVSZWdpc3RyeVRhZywgbWFrZVJlZ2lzdHJ5KCkpXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBQUEsU0FBUyxTQUFTLGFBQTZCO0FBMEN4QyxJQUFNLG1CQUFOLGNBQStCLFFBQVEsSUFBSSwyQkFBMkIsRUFBbUMsRUFBRTtBQUFDO0FBUTVHLElBQU0sbUJBQU4sY0FBK0IsUUFBUSxJQUFJLHlDQUF5QyxFQUd6RixFQUFFO0FBQUM7QUFFRSxJQUFNLFdBQVc7QUFBQSxFQUN0QjtBQUFBLEVBQ0E7QUFDRjtBQUVBLElBQU0sZUFBZSxNQUFxQjtBQUN4QyxNQUFJLGNBQXVCO0FBRzNCLFFBQU0sU0FBUyxvQkFBSSxJQUF3QztBQUUzRCxRQUFNLFdBQVcsQ0FBQyxTQUFrQixVQUFnQztBQUNsRSxVQUFNLFVBQVUsT0FBTyxJQUFJLE9BQU87QUFDbEMsUUFBSSxTQUFTO0FBQ1gsWUFBTSxRQUFRLFFBQVEsSUFBSSxLQUFLO0FBQy9CLFVBQUksTUFBTyxRQUFPO0FBQ2xCLFlB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
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
record
|
|
5
|
+
} from "./chunk-4KIYG5E4.js";
|
|
6
|
+
import {
|
|
7
|
+
EffectOpMiddlewareTag,
|
|
8
|
+
RunSessionTag,
|
|
9
|
+
make,
|
|
10
|
+
run
|
|
11
|
+
} from "./chunk-O57OZBDR.js";
|
|
12
|
+
|
|
13
|
+
// ../logix-core/src/internal/runtime/core/FlowRuntime.ts
|
|
14
|
+
import { Effect, Stream, Ref, Option } from "../effect.js";
|
|
15
|
+
var getMiddlewareStack = () => Effect.serviceOption(EffectOpMiddlewareTag).pipe(
|
|
16
|
+
Effect.map((maybe) => Option.isSome(maybe) ? maybe.value.stack : [])
|
|
17
|
+
);
|
|
18
|
+
var getRuntimeScope = (runtime) => {
|
|
19
|
+
if (!runtime) return {};
|
|
20
|
+
if (typeof runtime !== "object" && typeof runtime !== "function") return {};
|
|
21
|
+
const scope = runtime;
|
|
22
|
+
return {
|
|
23
|
+
moduleId: typeof scope.moduleId === "string" ? scope.moduleId : void 0,
|
|
24
|
+
instanceId: typeof scope.instanceId === "string" ? scope.instanceId : void 0
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
var resolveEffect = (eff, payload) => typeof eff === "function" ? eff(payload) : eff;
|
|
28
|
+
var make2 = (runtime, runtimeInternals) => {
|
|
29
|
+
const scope = getRuntimeScope(runtime);
|
|
30
|
+
const resolveConcurrencyLimit = () => runtimeInternals ? runtimeInternals.concurrency.resolveConcurrencyPolicy().pipe(
|
|
31
|
+
Effect.map((p) => p.concurrencyLimit)
|
|
32
|
+
) : Effect.succeed(16);
|
|
33
|
+
const runAsFlowOp = (name, payload, eff, options) => Effect.gen(function* () {
|
|
34
|
+
const stack = yield* getMiddlewareStack();
|
|
35
|
+
const meta = {
|
|
36
|
+
...options?.meta ?? {},
|
|
37
|
+
policy: options?.policy,
|
|
38
|
+
tags: options?.tags,
|
|
39
|
+
trace: options?.trace,
|
|
40
|
+
moduleId: scope.moduleId,
|
|
41
|
+
instanceId: scope.instanceId
|
|
42
|
+
};
|
|
43
|
+
if (!(typeof meta.opSeq === "number" && Number.isFinite(meta.opSeq))) {
|
|
44
|
+
const sessionOpt = yield* Effect.serviceOption(RunSessionTag);
|
|
45
|
+
if (Option.isSome(sessionOpt)) {
|
|
46
|
+
const key = meta.instanceId ?? "global";
|
|
47
|
+
meta.opSeq = sessionOpt.value.local.nextSeq("opSeq", key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const op = make({
|
|
51
|
+
kind: "flow",
|
|
52
|
+
name,
|
|
53
|
+
payload,
|
|
54
|
+
effect: eff,
|
|
55
|
+
meta
|
|
56
|
+
});
|
|
57
|
+
return yield* run(op, stack);
|
|
58
|
+
});
|
|
59
|
+
const runEffect = (eff) => (payload) => resolveEffect(eff, payload);
|
|
60
|
+
const runStreamSequential = (eff, options) => (stream) => Stream.runForEach(
|
|
61
|
+
stream,
|
|
62
|
+
(payload) => runAsFlowOp(
|
|
63
|
+
"flow.run",
|
|
64
|
+
payload,
|
|
65
|
+
runEffect(eff)(payload),
|
|
66
|
+
options
|
|
67
|
+
)
|
|
68
|
+
);
|
|
69
|
+
const runStreamParallel = (eff, options) => (stream) => Effect.gen(function* () {
|
|
70
|
+
const concurrency = yield* resolveConcurrencyLimit();
|
|
71
|
+
return yield* Stream.runDrain(
|
|
72
|
+
stream.pipe(
|
|
73
|
+
Stream.mapEffect(
|
|
74
|
+
(payload) => runAsFlowOp(
|
|
75
|
+
"flow.runParallel",
|
|
76
|
+
payload,
|
|
77
|
+
runEffect(eff)(payload),
|
|
78
|
+
options
|
|
79
|
+
),
|
|
80
|
+
{ concurrency }
|
|
81
|
+
)
|
|
82
|
+
)
|
|
83
|
+
).pipe(
|
|
84
|
+
Effect.catchAllCause(
|
|
85
|
+
(cause) => record({
|
|
86
|
+
type: "diagnostic",
|
|
87
|
+
moduleId: scope.moduleId,
|
|
88
|
+
instanceId: scope.instanceId,
|
|
89
|
+
code: "flow::unhandled_failure",
|
|
90
|
+
severity: "error",
|
|
91
|
+
message: "Flow watcher (runParallel) failed with an unhandled error.",
|
|
92
|
+
hint: "Handle errors explicitly inside the watcher (catch/catchAll) or write back via TaskRunner failure; avoid silent failures.",
|
|
93
|
+
kind: "flow_unhandled_failure",
|
|
94
|
+
trigger: {
|
|
95
|
+
kind: "flow",
|
|
96
|
+
name: "runParallel"
|
|
97
|
+
}
|
|
98
|
+
}).pipe(Effect.zipRight(Effect.failCause(cause)))
|
|
99
|
+
)
|
|
100
|
+
);
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
fromAction: (predicate) => runtime.actions$.pipe(Stream.filter(predicate)),
|
|
104
|
+
fromState: (selector) => runtime.changes(selector),
|
|
105
|
+
debounce: (ms) => (stream) => Stream.debounce(stream, ms),
|
|
106
|
+
throttle: (ms) => (stream) => Stream.throttle(stream, {
|
|
107
|
+
cost: () => 1,
|
|
108
|
+
units: 1,
|
|
109
|
+
duration: ms,
|
|
110
|
+
strategy: "enforce"
|
|
111
|
+
}),
|
|
112
|
+
filter: (predicate) => (stream) => Stream.filter(stream, predicate),
|
|
113
|
+
run: (eff, options) => (stream) => runStreamSequential(eff, options)(stream),
|
|
114
|
+
runParallel: (eff, options) => (stream) => runStreamParallel(eff, options)(stream),
|
|
115
|
+
runLatest: (eff, options) => (stream) => Stream.runDrain(
|
|
116
|
+
Stream.map(
|
|
117
|
+
stream,
|
|
118
|
+
(payload) => runAsFlowOp(
|
|
119
|
+
"flow.runLatest",
|
|
120
|
+
payload,
|
|
121
|
+
runEffect(eff)(payload),
|
|
122
|
+
options
|
|
123
|
+
)
|
|
124
|
+
).pipe(
|
|
125
|
+
Stream.flatMap((effect) => Stream.fromEffect(effect), {
|
|
126
|
+
switch: true
|
|
127
|
+
})
|
|
128
|
+
)
|
|
129
|
+
),
|
|
130
|
+
runExhaust: (eff, options) => (stream) => Effect.gen(function* () {
|
|
131
|
+
const concurrency = yield* resolveConcurrencyLimit();
|
|
132
|
+
const busyRef = yield* Ref.make(false);
|
|
133
|
+
const mapper = (payload) => Effect.gen(function* () {
|
|
134
|
+
const acquired = yield* Ref.modify(
|
|
135
|
+
busyRef,
|
|
136
|
+
(busy) => busy ? [false, busy] : [true, true]
|
|
137
|
+
);
|
|
138
|
+
if (!acquired) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
yield* runAsFlowOp(
|
|
143
|
+
"flow.runExhaust",
|
|
144
|
+
payload,
|
|
145
|
+
runEffect(eff)(payload),
|
|
146
|
+
options
|
|
147
|
+
);
|
|
148
|
+
} finally {
|
|
149
|
+
yield* Ref.set(busyRef, false);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return yield* Stream.runDrain(
|
|
153
|
+
stream.pipe(
|
|
154
|
+
Stream.mapEffect(mapper, { concurrency })
|
|
155
|
+
)
|
|
156
|
+
);
|
|
157
|
+
})
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
make2 as make
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0Zsb3dSdW50aW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBFZmZlY3QsIFN0cmVhbSwgUmVmLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCJcbmltcG9ydCB0eXBlIHtcbiAgQW55TW9kdWxlU2hhcGUsXG4gIE1vZHVsZVJ1bnRpbWUsXG4gIFN0YXRlT2YsXG4gIEFjdGlvbk9mLFxuICBNb2R1bGVTaGFwZSxcbn0gZnJvbSBcIi4vbW9kdWxlLmpzXCJcbmltcG9ydCB0eXBlICogYXMgTG9naWMgZnJvbSBcIi4vTG9naWNNaWRkbGV3YXJlLmpzXCJcbmltcG9ydCAqIGFzIEVmZmVjdE9wIGZyb20gXCIuLi8uLi9lZmZlY3Qtb3AuanNcIlxuaW1wb3J0ICogYXMgRWZmZWN0T3BDb3JlIGZyb20gXCIuL0VmZmVjdE9wQ29yZS5qc1wiXG5pbXBvcnQgeyBSdW5TZXNzaW9uVGFnIH0gZnJvbSBcIi4uLy4uL29ic2VydmFiaWxpdHkvcnVuU2Vzc2lvbi5qc1wiXG5pbXBvcnQgdHlwZSB7IFJ1bnRpbWVJbnRlcm5hbHMgfSBmcm9tIFwiLi9SdW50aW1lSW50ZXJuYWxzLmpzXCJcbmltcG9ydCAqIGFzIERlYnVnIGZyb20gXCIuL0RlYnVnU2luay5qc1wiXG5cbmNvbnN0IGdldE1pZGRsZXdhcmVTdGFjayA9ICgpOiBFZmZlY3QuRWZmZWN0PFxuICBFZmZlY3RPcC5NaWRkbGV3YXJlU3RhY2ssXG4gIG5ldmVyLFxuICBhbnlcbj4gPT5cbiAgRWZmZWN0LnNlcnZpY2VPcHRpb24oRWZmZWN0T3BDb3JlLkVmZmVjdE9wTWlkZGxld2FyZVRhZykucGlwZShcbiAgICBFZmZlY3QubWFwKChtYXliZSkgPT4gKE9wdGlvbi5pc1NvbWUobWF5YmUpID8gbWF5YmUudmFsdWUuc3RhY2sgOiBbXSkpLFxuICApXG5cbmNvbnN0IGdldFJ1bnRpbWVTY29wZSA9IChcbiAgcnVudGltZTogdW5rbm93bixcbik6IHsgcmVhZG9ubHkgbW9kdWxlSWQ/OiBzdHJpbmc7IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiBzdHJpbmcgfSA9PiB7XG4gIGlmICghcnVudGltZSkgcmV0dXJuIHt9XG4gIGlmICh0eXBlb2YgcnVudGltZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcnVudGltZSAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4ge31cbiAgY29uc3Qgc2NvcGUgPSBydW50aW1lIGFzIHsgcmVhZG9ubHkgbW9kdWxlSWQ/OiB1bmtub3duOyByZWFkb25seSBpbnN0YW5jZUlkPzogdW5rbm93biB9XG4gIHJldHVybiB7XG4gICAgbW9kdWxlSWQ6IHR5cGVvZiBzY29wZS5tb2R1bGVJZCA9PT0gXCJzdHJpbmdcIiA/IHNjb3BlLm1vZHVsZUlkIDogdW5kZWZpbmVkLFxuICAgIGluc3RhbmNlSWQ6IHR5cGVvZiBzY29wZS5pbnN0YW5jZUlkID09PSBcInN0cmluZ1wiID8gc2NvcGUuaW5zdGFuY2VJZCA6IHVuZGVmaW5lZCxcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaTxTaCBleHRlbmRzIE1vZHVsZVNoYXBlPGFueSwgYW55PiwgUiA9IG5ldmVyPiB7XG4gIHJlYWRvbmx5IGZyb21BY3Rpb246IDxUIGV4dGVuZHMgQWN0aW9uT2Y8U2g+PihcbiAgICBwcmVkaWNhdGU6IChhOiBBY3Rpb25PZjxTaD4pID0+IGEgaXMgVFxuICApID0+IFN0cmVhbS5TdHJlYW08VD5cblxuICByZWFkb25seSBmcm9tU3RhdGU6IDxWPihcbiAgICBzZWxlY3RvcjogKHM6IFN0YXRlT2Y8U2g+KSA9PiBWXG4gICkgPT4gU3RyZWFtLlN0cmVhbTxWPlxuXG4gIHJlYWRvbmx5IGRlYm91bmNlOiA8Vj4oXG4gICAgbXM6IG51bWJlclxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IFN0cmVhbS5TdHJlYW08Vj5cblxuICByZWFkb25seSB0aHJvdHRsZTogPFY+KFxuICAgIG1zOiBudW1iZXJcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgZmlsdGVyOiA8Vj4oXG4gICAgcHJlZGljYXRlOiAodmFsdWU6IFYpID0+IGJvb2xlYW5cbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBTdHJlYW0uU3RyZWFtPFY+XG5cbiAgcmVhZG9ubHkgcnVuOiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxuXG4gIHJlYWRvbmx5IHJ1blBhcmFsbGVsOiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxuXG4gIHJlYWRvbmx5IHJ1bkxhdGVzdDogPFYsIEEgPSB2b2lkLCBFID0gbmV2ZXIsIFIyID0gdW5rbm93bj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFYpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFY+KSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIExvZ2ljLkVudjxTaCwgUiAmIFIyPj5cblxuICByZWFkb25seSBydW5FeGhhdXN0OiA8ViwgQSA9IHZvaWQsIEUgPSBuZXZlciwgUjIgPSB1bmtub3duPihcbiAgICBlZmY6XG4gICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICB8ICgocGF5bG9hZDogVikgPT4gTG9naWMuT2Y8U2gsIFIgJiBSMiwgQSwgRT4pLFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApID0+IChzdHJlYW06IFN0cmVhbS5TdHJlYW08Vj4pID0+IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgTG9naWMuRW52PFNoLCBSICYgUjI+PlxufVxuXG5jb25zdCByZXNvbHZlRWZmZWN0ID0gPFQsIFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFIsIEEsIEU+KFxuICBlZmY6XG4gICAgfCBMb2dpYy5PZjxTaCwgUiwgQSwgRT5cbiAgICB8ICgocGF5bG9hZDogVCkgPT4gTG9naWMuT2Y8U2gsIFIsIEEsIEU+KSxcbiAgcGF5bG9hZDogVFxuKTogTG9naWMuT2Y8U2gsIFIsIEEsIEU+ID0+XG4gIHR5cGVvZiBlZmYgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gKGVmZiBhcyAocDogVCkgPT4gTG9naWMuT2Y8U2gsIFIsIEEsIEU+KShwYXlsb2FkKVxuICAgIDogZWZmXG5cbmV4cG9ydCBjb25zdCBtYWtlID0gPFNoIGV4dGVuZHMgQW55TW9kdWxlU2hhcGUsIFIgPSBuZXZlcj4oXG4gIHJ1bnRpbWU6IE1vZHVsZVJ1bnRpbWU8U3RhdGVPZjxTaD4sIEFjdGlvbk9mPFNoPj4sXG4gIHJ1bnRpbWVJbnRlcm5hbHM/OiBSdW50aW1lSW50ZXJuYWxzLFxuKTogQXBpPFNoLCBSPiA9PiB7XG4gIGNvbnN0IHNjb3BlID0gZ2V0UnVudGltZVNjb3BlKHJ1bnRpbWUpXG4gIGNvbnN0IHJlc29sdmVDb25jdXJyZW5jeUxpbWl0ID0gKCk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgbnVtYmVyIHwgXCJ1bmJvdW5kZWRcIixcbiAgICBuZXZlcixcbiAgICBhbnlcbiAgPiA9PlxuICAgIHJ1bnRpbWVJbnRlcm5hbHNcbiAgICAgID8gcnVudGltZUludGVybmFscy5jb25jdXJyZW5jeS5yZXNvbHZlQ29uY3VycmVuY3lQb2xpY3koKS5waXBlKFxuICAgICAgICAgIEVmZmVjdC5tYXAoKHApID0+IHAuY29uY3VycmVuY3lMaW1pdCksXG4gICAgICAgIClcbiAgICAgIDogRWZmZWN0LnN1Y2NlZWQoMTYpXG5cbiAgY29uc3QgcnVuQXNGbG93T3AgPSA8QSwgRSwgUjIsIFY+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwYXlsb2FkOiBWLFxuICAgIGVmZjogRWZmZWN0LkVmZmVjdDxBLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+LFxuICAgIG9wdGlvbnM/OiBMb2dpYy5PcGVyYXRpb25PcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEEsIEUsIExvZ2ljLkVudjxTaCwgUiAmIFIyPj4gPT5cbiAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICBjb25zdCBzdGFjayA9IHlpZWxkKiBnZXRNaWRkbGV3YXJlU3RhY2soKVxuICAgICAgY29uc3QgbWV0YTogYW55ID0ge1xuICAgICAgICAuLi4ob3B0aW9ucz8ubWV0YSA/PyB7fSksXG4gICAgICAgIHBvbGljeTogb3B0aW9ucz8ucG9saWN5LFxuICAgICAgICB0YWdzOiBvcHRpb25zPy50YWdzLFxuICAgICAgICB0cmFjZTogb3B0aW9ucz8udHJhY2UsXG4gICAgICAgIG1vZHVsZUlkOiBzY29wZS5tb2R1bGVJZCxcbiAgICAgICAgaW5zdGFuY2VJZDogc2NvcGUuaW5zdGFuY2VJZCxcbiAgICAgIH1cblxuICAgICAgaWYgKCEodHlwZW9mIG1ldGEub3BTZXEgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1ldGEub3BTZXEpKSkge1xuICAgICAgICBjb25zdCBzZXNzaW9uT3B0ID0geWllbGQqIEVmZmVjdC5zZXJ2aWNlT3B0aW9uKFJ1blNlc3Npb25UYWcpXG4gICAgICAgIGlmIChPcHRpb24uaXNTb21lKHNlc3Npb25PcHQpKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gbWV0YS5pbnN0YW5jZUlkID8/IFwiZ2xvYmFsXCJcbiAgICAgICAgICBtZXRhLm9wU2VxID0gc2Vzc2lvbk9wdC52YWx1ZS5sb2NhbC5uZXh0U2VxKFwib3BTZXFcIiwga2V5KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wID0gRWZmZWN0T3AubWFrZTxBLCBFLCBhbnk+KHtcbiAgICAgICAga2luZDogXCJmbG93XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIGVmZmVjdDogZWZmIGFzIGFueSxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4geWllbGQqIEVmZmVjdE9wLnJ1bihvcCwgc3RhY2spXG4gICAgfSkgYXMgYW55XG5cbiAgY29uc3QgcnVuRWZmZWN0ID1cbiAgICA8VCwgQSwgRSwgUjI+KFxuICAgICAgZWZmOlxuICAgICAgICB8IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+XG4gICAgICAgIHwgKChwYXlsb2FkOiBUKSA9PiBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPilcbiAgICApID0+XG4gICAgICAocGF5bG9hZDogVCkgPT5cbiAgICAgICAgcmVzb2x2ZUVmZmVjdDxULCBTaCwgUiAmIFIyLCBBLCBFPihlZmYsIHBheWxvYWQpXG5cbiAgY29uc3QgcnVuU3RyZWFtU2VxdWVudGlhbCA9IDxULCBBLCBFLCBSMj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFQpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFQ+KTogRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+ID0+XG4gICAgU3RyZWFtLnJ1bkZvckVhY2goc3RyZWFtLCAocGF5bG9hZCkgPT5cbiAgICAgIHJ1bkFzRmxvd09wPEEsIEUsIFIyLCBUPihcbiAgICAgICAgXCJmbG93LnJ1blwiLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBydW5FZmZlY3Q8VCwgQSwgRSwgUjI+KGVmZikocGF5bG9hZCksXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICBjb25zdCBydW5TdHJlYW1QYXJhbGxlbCA9IDxULCBBLCBFLCBSMj4oXG4gICAgZWZmOlxuICAgICAgfCBMb2dpYy5PZjxTaCwgUiAmIFIyLCBBLCBFPlxuICAgICAgfCAoKHBheWxvYWQ6IFQpID0+IExvZ2ljLk9mPFNoLCBSICYgUjIsIEEsIEU+KSxcbiAgICBvcHRpb25zPzogTG9naWMuT3BlcmF0aW9uT3B0aW9ucyxcbiAgKSA9PiAoc3RyZWFtOiBTdHJlYW0uU3RyZWFtPFQ+KTogRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBMb2dpYy5FbnY8U2gsIFIgJiBSMj4+ID0+XG4gICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB5aWVsZCogcmVzb2x2ZUNvbmN1cnJlbmN5TGltaXQoKVxuXG4gICAgICByZXR1cm4geWllbGQqIFN0cmVhbS5ydW5EcmFpbihcbiAgICAgICAgc3RyZWFtLnBpcGUoXG4gICAgICAgICAgU3RyZWFtLm1hcEVmZmVjdChcbiAgICAgICAgICAgIChwYXlsb2FkKSA9PlxuICAgICAgICAgICAgICBydW5Bc0Zsb3dPcDxBLCBFLCBSMiwgVD4oXG4gICAgICAgICAgICAgICAgXCJmbG93LnJ1blBhcmFsbGVsXCIsXG4gICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBydW5FZmZlY3Q8VCwgQSwgRSwgUjI+KGVmZikocGF5bG9hZCksXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHsgY29uY3VycmVuY3kgfSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKS5waXBlKFxuICAgICAgICBFZmZlY3QuY2F0Y2hBbGxDYXVzZSgoY2F1c2UpID0+XG4gICAgICAgICAgRGVidWcucmVjb3JkKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZGlhZ25vc3RpY1wiLFxuICAgICAgICAgICAgbW9kdWxlSWQ6IHNjb3BlLm1vZHVsZUlkLFxuICAgICAgICAgICAgaW5zdGFuY2VJZDogc2NvcGUuaW5zdGFuY2VJZCxcbiAgICAgICAgICAgIGNvZGU6IFwiZmxvdzo6dW5oYW5kbGVkX2ZhaWx1cmVcIixcbiAgICAgICAgICAgIHNldmVyaXR5OiBcImVycm9yXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIkZsb3cgd2F0Y2hlciAocnVuUGFyYWxsZWwpIGZhaWxlZCB3aXRoIGFuIHVuaGFuZGxlZCBlcnJvci5cIixcbiAgICAgICAgICAgIGhpbnQ6XG4gICAgICAgICAgICAgIFwiSGFuZGxlIGVycm9ycyBleHBsaWNpdGx5IGluc2lkZSB0aGUgd2F0Y2hlciAoY2F0Y2gvY2F0Y2hBbGwpIG9yIHdyaXRlIGJhY2sgdmlhIFRhc2tSdW5uZXIgZmFpbHVyZTsgYXZvaWQgc2lsZW50IGZhaWx1cmVzLlwiLFxuICAgICAgICAgICAga2luZDogXCJmbG93X3VuaGFuZGxlZF9mYWlsdXJlXCIsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7XG4gICAgICAgICAgICAgIGtpbmQ6IFwiZmxvd1wiLFxuICAgICAgICAgICAgICBuYW1lOiBcInJ1blBhcmFsbGVsXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLnBpcGUoRWZmZWN0LnppcFJpZ2h0KEVmZmVjdC5mYWlsQ2F1c2UoY2F1c2UpKSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgfSkgYXMgYW55XG5cbiAgcmV0dXJuIHtcbiAgICBmcm9tQWN0aW9uOiA8VCBleHRlbmRzIEFjdGlvbk9mPFNoPj4oXG4gICAgICBwcmVkaWNhdGU6IChhOiBBY3Rpb25PZjxTaD4pID0+IGEgaXMgVFxuICAgICkgPT4gcnVudGltZS5hY3Rpb25zJC5waXBlKFN0cmVhbS5maWx0ZXIocHJlZGljYXRlKSksXG5cbiAgICBmcm9tU3RhdGU6IDxWPihzZWxlY3RvcjogKHM6IFN0YXRlT2Y8U2g+KSA9PiBWKSA9PlxuICAgICAgcnVudGltZS5jaGFuZ2VzKHNlbGVjdG9yKSxcblxuICAgIGRlYm91bmNlOiAobXM6IG51bWJlcikgPT4gKHN0cmVhbSkgPT4gU3RyZWFtLmRlYm91bmNlKHN0cmVhbSwgbXMpLFxuXG4gICAgdGhyb3R0bGU6IChtczogbnVtYmVyKSA9PiAoc3RyZWFtKSA9PlxuICAgICAgU3RyZWFtLnRocm90dGxlKHN0cmVhbSwge1xuICAgICAgICBjb3N0OiAoKSA9PiAxLFxuICAgICAgICB1bml0czogMSxcbiAgICAgICAgZHVyYXRpb246IG1zLFxuICAgICAgICBzdHJhdGVneTogXCJlbmZvcmNlXCIsXG4gICAgICB9KSxcblxuICAgIGZpbHRlcjogKHByZWRpY2F0ZTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pID0+IChzdHJlYW0pID0+XG4gICAgICBTdHJlYW0uZmlsdGVyKHN0cmVhbSwgcHJlZGljYXRlKSxcblxuICAgIHJ1bjogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT5cbiAgICAgIHJ1blN0cmVhbVNlcXVlbnRpYWw8YW55LCBhbnksIGFueSwgYW55PihlZmYsIG9wdGlvbnMpKHN0cmVhbSksXG5cbiAgICBydW5QYXJhbGxlbDogKGVmZiwgb3B0aW9ucykgPT4gKHN0cmVhbSkgPT5cbiAgICAgIHJ1blN0cmVhbVBhcmFsbGVsPGFueSwgYW55LCBhbnksIGFueT4oZWZmLCBvcHRpb25zKShzdHJlYW0pLFxuXG4gICAgcnVuTGF0ZXN0OiAoZWZmLCBvcHRpb25zKSA9PiAoc3RyZWFtKSA9PlxuICAgICAgU3RyZWFtLnJ1bkRyYWluKFxuICAgICAgICBTdHJlYW0ubWFwKHN0cmVhbSwgKHBheWxvYWQpID0+XG4gICAgICAgICAgcnVuQXNGbG93T3A8YW55LCBhbnksIGFueSwgYW55PihcbiAgICAgICAgICAgIFwiZmxvdy5ydW5MYXRlc3RcIixcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICBydW5FZmZlY3Q8YW55LCBhbnksIGFueSwgYW55PihlZmYpKHBheWxvYWQpLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBTdHJlYW0uZmxhdE1hcCgoZWZmZWN0KSA9PiBTdHJlYW0uZnJvbUVmZmVjdChlZmZlY3QpLCB7XG4gICAgICAgICAgICBzd2l0Y2g6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcblxuICAgIHJ1bkV4aGF1c3Q6IChlZmYsIG9wdGlvbnMpID0+IChzdHJlYW0pID0+XG4gICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0geWllbGQqIHJlc29sdmVDb25jdXJyZW5jeUxpbWl0KClcbiAgICAgICAgY29uc3QgYnVzeVJlZiA9IHlpZWxkKiBSZWYubWFrZShmYWxzZSlcbiAgICAgICAgY29uc3QgbWFwcGVyID0gKHBheWxvYWQ6IGFueSkgPT5cbiAgICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBhY3F1aXJlZCA9IHlpZWxkKiBSZWYubW9kaWZ5KGJ1c3lSZWYsIChidXN5KSA9PlxuICAgICAgICAgICAgICBidXN5ID8gKFtmYWxzZSwgYnVzeV0gYXMgY29uc3QpIDogKFt0cnVlLCB0cnVlXSBhcyBjb25zdClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmICghYWNxdWlyZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB5aWVsZCogcnVuQXNGbG93T3A8YW55LCBhbnksIGFueSwgYW55PihcbiAgICAgICAgICAgICAgICBcImZsb3cucnVuRXhoYXVzdFwiLFxuICAgICAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICAgICAgcnVuRWZmZWN0PGFueSwgYW55LCBhbnksIGFueT4oZWZmKShwYXlsb2FkKSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICB5aWVsZCogUmVmLnNldChidXN5UmVmLCBmYWxzZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiB5aWVsZCogU3RyZWFtLnJ1bkRyYWluKFxuICAgICAgICAgIHN0cmVhbS5waXBlKFxuICAgICAgICAgICAgU3RyZWFtLm1hcEVmZmVjdChtYXBwZXIsIHsgY29uY3VycmVuY3kgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxRQUFRLFFBQVEsS0FBSyxjQUFjO0FBZTVDLElBQU0scUJBQXFCLE1BS3pCLE9BQU8sY0FBMkIscUJBQXFCLEVBQUU7QUFBQSxFQUN2RCxPQUFPLElBQUksQ0FBQyxVQUFXLE9BQU8sT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFFO0FBQ3ZFO0FBRUYsSUFBTSxrQkFBa0IsQ0FDdEIsWUFDaUU7QUFDakUsTUFBSSxDQUFDLFFBQVMsUUFBTyxDQUFDO0FBQ3RCLE1BQUksT0FBTyxZQUFZLFlBQVksT0FBTyxZQUFZLFdBQVksUUFBTyxDQUFDO0FBQzFF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
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
CutoverCoverageMatrix,
|
|
5
|
+
evaluateFullCutoverGate
|
|
6
|
+
} from "./chunk-SIXNQNIR.js";
|
|
7
|
+
import {
|
|
8
|
+
FullCutoverGateModeTag,
|
|
9
|
+
KernelImplementationRefTag,
|
|
10
|
+
RuntimeServicesRegistryTag,
|
|
11
|
+
RuntimeServicesRuntimeConfigTag,
|
|
12
|
+
defaultKernelImplementationRef,
|
|
13
|
+
getKernelImplementationRef,
|
|
14
|
+
getRuntimeServicesEvidence,
|
|
15
|
+
isKernelImplementationRef
|
|
16
|
+
} from "./chunk-CRE4NJJ6.js";
|
|
17
|
+
|
|
18
|
+
// ../logix-core/src/Kernel.ts
|
|
19
|
+
import { Layer } from "../effect.js";
|
|
20
|
+
var defaultKernelImplementationRef2 = defaultKernelImplementationRef;
|
|
21
|
+
var isKernelImplementationRef2 = isKernelImplementationRef;
|
|
22
|
+
var CutoverCoverageMatrix2 = CutoverCoverageMatrix;
|
|
23
|
+
var evaluateFullCutoverGate2 = (args) => {
|
|
24
|
+
return evaluateFullCutoverGate({
|
|
25
|
+
mode: args.mode,
|
|
26
|
+
requestedKernelId: args.requestedKernelId,
|
|
27
|
+
runtimeServicesEvidence: args.runtimeServicesEvidence,
|
|
28
|
+
coverageMatrix: args.coverageMatrix,
|
|
29
|
+
diagnosticsLevel: args.diagnosticsLevel
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
var KernelContractMetaAllowlist = [];
|
|
33
|
+
var kernelLayer = (ref) => Layer.succeed(KernelImplementationRefTag, ref);
|
|
34
|
+
var runtimeDefaultServicesOverridesLayer = (services) => Layer.succeed(RuntimeServicesRuntimeConfigTag, {
|
|
35
|
+
services
|
|
36
|
+
});
|
|
37
|
+
var getRuntimeServicesEvidence2 = getRuntimeServicesEvidence;
|
|
38
|
+
var getKernelImplementationRef2 = getKernelImplementationRef;
|
|
39
|
+
var runtimeServicesRegistryLayer = (registry) => Layer.succeed(RuntimeServicesRegistryTag, registry);
|
|
40
|
+
var fullCutoverGateModeLayer = (mode) => Layer.succeed(FullCutoverGateModeTag, mode);
|
|
41
|
+
var isKernelFullyActivated = (evidence) => !evidence.overridesApplied.some((s) => s.includes("fallback="));
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
defaultKernelImplementationRef2 as defaultKernelImplementationRef,
|
|
45
|
+
isKernelImplementationRef2 as isKernelImplementationRef,
|
|
46
|
+
CutoverCoverageMatrix2 as CutoverCoverageMatrix,
|
|
47
|
+
evaluateFullCutoverGate2 as evaluateFullCutoverGate,
|
|
48
|
+
KernelContractMetaAllowlist,
|
|
49
|
+
kernelLayer,
|
|
50
|
+
runtimeDefaultServicesOverridesLayer,
|
|
51
|
+
getRuntimeServicesEvidence2 as getRuntimeServicesEvidence,
|
|
52
|
+
getKernelImplementationRef2 as getKernelImplementationRef,
|
|
53
|
+
runtimeServicesRegistryLayer,
|
|
54
|
+
fullCutoverGateModeLayer,
|
|
55
|
+
isKernelFullyActivated
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvS2VybmVsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBMYXllciB9IGZyb20gJ2VmZmVjdCdcbmltcG9ydCB0eXBlIHsgTGF5ZXIgYXMgTGF5ZXJUeXBlIH0gZnJvbSAnZWZmZWN0J1xuaW1wb3J0IHR5cGUgKiBhcyBEZWJ1ZyBmcm9tICcuL0RlYnVnLmpzJ1xuaW1wb3J0ICogYXMgRnVsbEN1dG92ZXJHYXRlIGZyb20gJy4vaW50ZXJuYWwvcnVudGltZS9jb3JlL0Z1bGxDdXRvdmVyR2F0ZS5qcydcbmltcG9ydCAqIGFzIFJ1bnRpbWVLZXJuZWwgZnJvbSAnLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvUnVudGltZUtlcm5lbC5qcydcbmltcG9ydCAqIGFzIEtlcm5lbFJlZiBmcm9tICcuL2ludGVybmFsL3J1bnRpbWUvY29yZS9LZXJuZWxSZWYuanMnXG5leHBvcnQgdHlwZSB7IFJ1bnRpbWVTZXJ2aWNlQnVpbHRpbnMgfSBmcm9tICcuL2ludGVybmFsL3J1bnRpbWUvY29yZS9SdW50aW1lU2VydmljZUJ1aWx0aW5zLmpzJ1xuZXhwb3J0IHsgUnVudGltZVNlcnZpY2VCdWlsdGluc1RhZyB9IGZyb20gJy4vaW50ZXJuYWwvcnVudGltZS9jb3JlL1J1bnRpbWVTZXJ2aWNlQnVpbHRpbnMuanMnXG5cbmV4cG9ydCB0eXBlIEtlcm5lbElkID0gS2VybmVsUmVmLktlcm5lbElkXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2VybmVsSW1wbGVtZW50YXRpb25SZWYgZXh0ZW5kcyBLZXJuZWxSZWYuS2VybmVsSW1wbGVtZW50YXRpb25SZWYge31cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRLZXJuZWxJbXBsZW1lbnRhdGlvblJlZiA9IEtlcm5lbFJlZi5kZWZhdWx0S2VybmVsSW1wbGVtZW50YXRpb25SZWZcblxuZXhwb3J0IGNvbnN0IGlzS2VybmVsSW1wbGVtZW50YXRpb25SZWYgPSBLZXJuZWxSZWYuaXNLZXJuZWxJbXBsZW1lbnRhdGlvblJlZlxuXG5leHBvcnQgdHlwZSBSdW50aW1lU2VydmljZU92ZXJyaWRlID0gUnVudGltZUtlcm5lbC5SdW50aW1lU2VydmljZU92ZXJyaWRlXG5leHBvcnQgdHlwZSBSdW50aW1lU2VydmljZXNPdmVycmlkZXMgPSBSdW50aW1lS2VybmVsLlJ1bnRpbWVTZXJ2aWNlc092ZXJyaWRlc1xuZXhwb3J0IHR5cGUgUnVudGltZVNlcnZpY2VCaW5kaW5nID0gUnVudGltZUtlcm5lbC5SdW50aW1lU2VydmljZUJpbmRpbmdcbmV4cG9ydCB0eXBlIFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlID0gUnVudGltZUtlcm5lbC5SdW50aW1lU2VydmljZXNFdmlkZW5jZVxuXG5leHBvcnQgdHlwZSBSdW50aW1lU2VydmljZUltcGw8U2VydmljZT4gPSBSdW50aW1lS2VybmVsLlJ1bnRpbWVTZXJ2aWNlSW1wbDxTZXJ2aWNlPlxuZXhwb3J0IHR5cGUgUnVudGltZVNlcnZpY2VzUmVnaXN0cnkgPSBSdW50aW1lS2VybmVsLlJ1bnRpbWVTZXJ2aWNlc1JlZ2lzdHJ5XG5cbmV4cG9ydCB0eXBlIEN1dG92ZXJDb3ZlcmFnZU1hdHJpeCA9IEZ1bGxDdXRvdmVyR2F0ZS5DdXRvdmVyQ292ZXJhZ2VNYXRyaXhcblxuZXhwb3J0IGNvbnN0IEN1dG92ZXJDb3ZlcmFnZU1hdHJpeCA9IEZ1bGxDdXRvdmVyR2F0ZS5DdXRvdmVyQ292ZXJhZ2VNYXRyaXhcblxuZXhwb3J0IHR5cGUgRnVsbEN1dG92ZXJHYXRlTW9kZSA9IEZ1bGxDdXRvdmVyR2F0ZS5GdWxsQ3V0b3ZlckdhdGVNb2RlXG5cbmV4cG9ydCB0eXBlIEZ1bGxDdXRvdmVyR2F0ZUFuY2hvciA9IEZ1bGxDdXRvdmVyR2F0ZS5GdWxsQ3V0b3ZlckdhdGVBbmNob3JcblxuZXhwb3J0IHR5cGUgRnVsbEN1dG92ZXJHYXRlVmVyZGljdCA9IEZ1bGxDdXRvdmVyR2F0ZS5GdWxsQ3V0b3ZlckdhdGVWZXJkaWN0XG5cbmV4cG9ydCB0eXBlIEZ1bGxDdXRvdmVyR2F0ZVJlc3VsdCA9IEZ1bGxDdXRvdmVyR2F0ZS5GdWxsQ3V0b3ZlckdhdGVSZXN1bHRcblxuZXhwb3J0IGNvbnN0IGV2YWx1YXRlRnVsbEN1dG92ZXJHYXRlID0gKGFyZ3M6IHtcbiAgcmVhZG9ubHkgbW9kZTogRnVsbEN1dG92ZXJHYXRlTW9kZVxuICByZWFkb25seSByZXF1ZXN0ZWRLZXJuZWxJZDogS2VybmVsSWRcbiAgcmVhZG9ubHkgcnVudGltZVNlcnZpY2VzRXZpZGVuY2U6IFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlXG4gIHJlYWRvbmx5IGNvdmVyYWdlTWF0cml4PzogQ3V0b3ZlckNvdmVyYWdlTWF0cml4XG4gIHJlYWRvbmx5IGRpYWdub3N0aWNzTGV2ZWw/OiBEZWJ1Zy5EaWFnbm9zdGljc0xldmVsXG59KTogRnVsbEN1dG92ZXJHYXRlUmVzdWx0ID0+IHtcbiAgcmV0dXJuIEZ1bGxDdXRvdmVyR2F0ZS5ldmFsdWF0ZUZ1bGxDdXRvdmVyR2F0ZSh7XG4gICAgbW9kZTogYXJncy5tb2RlLFxuICAgIHJlcXVlc3RlZEtlcm5lbElkOiBhcmdzLnJlcXVlc3RlZEtlcm5lbElkLFxuICAgIHJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlOiBhcmdzLnJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlLFxuICAgIGNvdmVyYWdlTWF0cml4OiBhcmdzLmNvdmVyYWdlTWF0cml4LFxuICAgIGRpYWdub3N0aWNzTGV2ZWw6IGFyZ3MuZGlhZ25vc3RpY3NMZXZlbCxcbiAgfSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXJuZWxDb250cmFjdE1ldGFBbGxvd2xpc3RJdGVtIHtcbiAgcmVhZG9ubHkgbWV0YUtleTogc3RyaW5nXG4gIHJlYWRvbmx5IHJlYXNvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgS2VybmVsQ29udHJhY3RNZXRhQWxsb3dsaXN0ID0gW10gYXMgY29uc3Qgc2F0aXNmaWVzIFJlYWRvbmx5QXJyYXk8S2VybmVsQ29udHJhY3RNZXRhQWxsb3dsaXN0SXRlbT5cblxuLyoqXG4gKiBrZXJuZWxMYXllclx1RkYxQVxuICogLSBcdTU3MjhcdTVGNTNcdTUyNEQgcnVudGltZSB0cmVlIFx1NEUwQlx1NThGMFx1NjYwRVx1MjAxQ1x1OEJGN1x1NkM0Mlx1NzY4NFx1NTE4NVx1NjgzOFx1NjVDRlx1MjAxRFx1RkYwOHJlcXVlc3RlZCBrZXJuZWwgZmFtaWx5XHVGRjA5XHVGRjFCXG4gKiAtIFx1NEUwRFx1NzZGNFx1NjNBNVx1NEY1Q1x1NEUzQVx1MjAxQ1x1NTE2OFx1NTk1N1x1NzUxRlx1NjU0OFx1MjAxRFx1NzY4NFx1OEJDMVx1NjYwRVx1RkYwOGZhbGxiYWNrL21peCBcdTc1MzEgUnVudGltZVNlcnZpY2VzRXZpZGVuY2UgXHU1MjI0XHU1QjlBXHVGRjA5XHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBrZXJuZWxMYXllciA9IChyZWY6IEtlcm5lbEltcGxlbWVudGF0aW9uUmVmKTogTGF5ZXJUeXBlLkxheWVyPGFueSwgbmV2ZXIsIG5ldmVyPiA9PlxuICBMYXllci5zdWNjZWVkKEtlcm5lbFJlZi5LZXJuZWxJbXBsZW1lbnRhdGlvblJlZlRhZywgcmVmKSBhcyBMYXllclR5cGUuTGF5ZXI8YW55LCBuZXZlciwgbmV2ZXI+XG5cbi8qKlxuICogcnVudGltZURlZmF1bHRTZXJ2aWNlc092ZXJyaWRlc0xheWVyXHVGRjFBXG4gKiAtIFx1NTcyOCBNYW5hZ2VkUnVudGltZSBcdTg4QzVcdTkxNERcdTk2MzZcdTZCQjVcdTYzRDBcdTRGOUIgcnVudGltZV9kZWZhdWx0IHNjb3BlIFx1NzY4NCBzZXJ2aWNlSWQgXHUyMTkyIGltcGxJZCBcdTg5ODZcdTUxOTlcdUZGMUJcbiAqIC0gXHU5RUQ4XHU4QkE0XHU0RTBEXHU2M0QwXHU0RjlCIHNlcnZpY2VzQnlNb2R1bGVJZFx1RkYwOFx1Nzk4MVx1NkI2Mlx1NzUyOCBtb2R1bGVJZCBcdTRGNUNcdTRFM0FcdTlFRDhcdThCQTRcdTUxODVcdTY4MzhcdTkwMDlcdTYyRTlcdTdDOTJcdTVFQTZcdUZGMDlcdTMwMDJcbiAqL1xuZXhwb3J0IGNvbnN0IHJ1bnRpbWVEZWZhdWx0U2VydmljZXNPdmVycmlkZXNMYXllciA9IChcbiAgc2VydmljZXM6IFJ1bnRpbWVTZXJ2aWNlc092ZXJyaWRlcyxcbik6IExheWVyVHlwZS5MYXllcjxhbnksIG5ldmVyLCBuZXZlcj4gPT5cbiAgTGF5ZXIuc3VjY2VlZChSdW50aW1lS2VybmVsLlJ1bnRpbWVTZXJ2aWNlc1J1bnRpbWVDb25maWdUYWcsIHtcbiAgICBzZXJ2aWNlcyxcbiAgfSkgYXMgTGF5ZXJUeXBlLkxheWVyPGFueSwgbmV2ZXIsIG5ldmVyPlxuXG4vKipcbiAqIGdldFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlXHVGRjFBXG4gKiAtIFx1OEJGQlx1NTNENlx1NURGMlx1NUI4OVx1ODhDNVx1NTcyOCBNb2R1bGVSdW50aW1lIFx1NEUwQVx1NzY4NCBSdW50aW1lU2VydmljZXNFdmlkZW5jZVx1RkYwOHNlcnZpY2VJZCBcdTIxOTIgaW1wbElkIFx1OEJDMVx1NjM2RVx1RkYwOVx1MzAwMlxuICogLSBcdTRGNUNcdTRFM0FcdTVCRjlcdTU5MTZcdTUxNjVcdTUzRTNcdUZGMENcdTkwN0ZcdTUxNERcdThDMDNcdTc1MjhcdTY1QjlcdTc2RjRcdTYzQTVcdTRGOURcdThENTYgc3JjL2ludGVybmFsIFx1OERFRlx1NUY4NFx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgZ2V0UnVudGltZVNlcnZpY2VzRXZpZGVuY2UgPSBSdW50aW1lS2VybmVsLmdldFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlXG5cbi8qKlxuICogZ2V0S2VybmVsSW1wbGVtZW50YXRpb25SZWZcdUZGMUFcbiAqIC0gXHU4QkZCXHU1M0Q2XHU1REYyXHU1Qjg5XHU4OEM1XHU1NzI4IE1vZHVsZVJ1bnRpbWUgXHU0RTBBXHU3Njg0IEtlcm5lbEltcGxlbWVudGF0aW9uUmVmXHVGRjA4cmVxdWVzdGVkIGtlcm5lbCBmYW1pbHlcdUZGMDlcdTMwMDJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtlcm5lbEltcGxlbWVudGF0aW9uUmVmID0gS2VybmVsUmVmLmdldEtlcm5lbEltcGxlbWVudGF0aW9uUmVmXG5cbi8qKlxuICogcnVudGltZVNlcnZpY2VzUmVnaXN0cnlMYXllclx1RkYxQVxuICogLSBcdTU3MjggcnVudGltZSBcdTg4QzVcdTkxNERcdTk2MzZcdTZCQjVcdTZDRThcdTUxNjVcdTk4OURcdTU5MTZcdTc2ODQgc2VydmljZUlkIFx1MjE5MiBpbXBsc1x1RkYwOFx1NEY4Qlx1NTk4MiBjb3JlLW5nIFx1NjNEMFx1NEY5Qlx1NzY4NFx1NUI5RVx1NzNCMFx1RkYwOVx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgcnVudGltZVNlcnZpY2VzUmVnaXN0cnlMYXllciA9IChyZWdpc3RyeTogUnVudGltZVNlcnZpY2VzUmVnaXN0cnkpOiBMYXllclR5cGUuTGF5ZXI8YW55LCBuZXZlciwgbmV2ZXI+ID0+XG4gIExheWVyLnN1Y2NlZWQoUnVudGltZUtlcm5lbC5SdW50aW1lU2VydmljZXNSZWdpc3RyeVRhZywgcmVnaXN0cnkpIGFzIExheWVyVHlwZS5MYXllcjxhbnksIG5ldmVyLCBuZXZlcj5cblxuLyoqXG4gKiBmdWxsQ3V0b3ZlckdhdGVNb2RlTGF5ZXJcdUZGMUFcbiAqIC0gXHU2M0E3XHU1MjM2XHU4RkQwXHU4ODRDXHU2NUY2XHU4OEM1XHU5MTREXHU5NjM2XHU2QkI1XHU3Njg0IGN1dG92ZXIgZ2F0ZSBcdTYyNjdcdTg4NENcdTZBMjFcdTVGMEZcdUZGMDh0cmlhbC9mdWxsQ3V0b3Zlclx1RkYwOVx1MzAwMlxuICogLSBcdTlFRDhcdThCQTRcdThERUZcdTVGODRcdUZGMDgwNDhcdUZGMDlcdTVFOTRcdTY2M0VcdTVGMEZcdThCQkVcdTdGNkVcdTRFM0EgZnVsbEN1dG92ZXJcdUZGMUJ0cmlhbC1ydW4vXHU1QkY5XHU3MTY3XHU1M0VGXHU4OTg2XHU3NkQ2XHU0RTNBIHRyaWFsXHUzMDAyXG4gKi9cbmV4cG9ydCBjb25zdCBmdWxsQ3V0b3ZlckdhdGVNb2RlTGF5ZXIgPSAobW9kZTogRnVsbEN1dG92ZXJHYXRlTW9kZSk6IExheWVyVHlwZS5MYXllcjxhbnksIG5ldmVyLCBuZXZlcj4gPT5cbiAgTGF5ZXIuc3VjY2VlZChSdW50aW1lS2VybmVsLkZ1bGxDdXRvdmVyR2F0ZU1vZGVUYWcsIG1vZGUpIGFzIExheWVyVHlwZS5MYXllcjxhbnksIG5ldmVyLCBuZXZlcj5cblxuLyoqXG4gKiBpc0tlcm5lbEZ1bGx5QWN0aXZhdGVkXHVGRjFBXG4gKiAtIFx1MjAxQ1x1NTE2OFx1NTk1N1x1NTIwN1x1NjM2Mlx1MjAxRFx1NzY4NFx1NjcwMFx1NUMwRlx1NTIyNFx1NUI5QVx1RkYxQVx1NEUwRFx1NTE0MVx1OEJCOFx1NTNEMVx1NzUxRiBmYWxsYmFja1x1RkYwOFx1NTQyNlx1NTIxOVx1ODlDNlx1NEUzQVx1NjcyQVx1OEZCRVx1NjgwN1x1RkYwOVx1MzAwMlxuICovXG5leHBvcnQgY29uc3QgaXNLZXJuZWxGdWxseUFjdGl2YXRlZCA9IChldmlkZW5jZTogUnVudGltZVNlcnZpY2VzRXZpZGVuY2UpOiBib29sZWFuID0+XG4gICFldmlkZW5jZS5vdmVycmlkZXNBcHBsaWVkLnNvbWUoKHMpID0+IHMuaW5jbHVkZXMoJ2ZhbGxiYWNrPScpKVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxhQUFhO0FBYWYsSUFBTUEsa0NBQTJDO0FBRWpELElBQU1DLDZCQUFzQztBQVk1QyxJQUFNQyx5QkFBd0M7QUFVOUMsSUFBTUMsMkJBQTBCLENBQUMsU0FNWDtBQUMzQixTQUF1Qix3QkFBd0I7QUFBQSxJQUM3QyxNQUFNLEtBQUs7QUFBQSxJQUNYLG1CQUFtQixLQUFLO0FBQUEsSUFDeEIseUJBQXlCLEtBQUs7QUFBQSxJQUM5QixnQkFBZ0IsS0FBSztBQUFBLElBQ3JCLGtCQUFrQixLQUFLO0FBQUEsRUFDekIsQ0FBQztBQUNIO0FBT08sSUFBTSw4QkFBOEIsQ0FBQztBQU9yQyxJQUFNLGNBQWMsQ0FBQyxRQUMxQixNQUFNLFFBQWtCLDRCQUE0QixHQUFHO0FBT2xELElBQU0sdUNBQXVDLENBQ2xELGFBRUEsTUFBTSxRQUFzQixpQ0FBaUM7QUFBQSxFQUMzRDtBQUNGLENBQUM7QUFPSSxJQUFNQyw4QkFBMkM7QUFNakQsSUFBTUMsOEJBQXVDO0FBTTdDLElBQU0sK0JBQStCLENBQUMsYUFDM0MsTUFBTSxRQUFzQiw0QkFBNEIsUUFBUTtBQU8zRCxJQUFNLDJCQUEyQixDQUFDLFNBQ3ZDLE1BQU0sUUFBc0Isd0JBQXdCLElBQUk7QUFNbkQsSUFBTSx5QkFBeUIsQ0FBQyxhQUNyQyxDQUFDLFNBQVMsaUJBQWlCLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxXQUFXLENBQUM7IiwKICAibmFtZXMiOiBbImRlZmF1bHRLZXJuZWxJbXBsZW1lbnRhdGlvblJlZiIsICJpc0tlcm5lbEltcGxlbWVudGF0aW9uUmVmIiwgIkN1dG92ZXJDb3ZlcmFnZU1hdHJpeCIsICJldmFsdWF0ZUZ1bGxDdXRvdmVyR2F0ZSIsICJnZXRSdW50aW1lU2VydmljZXNFdmlkZW5jZSIsICJnZXRLZXJuZWxJbXBsZW1lbnRhdGlvblJlZiJdCn0K
|