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