@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,103 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
OBSERVABILITY_PROTOCOL_VERSION,
|
|
5
|
+
exportEvidencePackage
|
|
6
|
+
} from "./chunk-Z5L7EZXS.js";
|
|
7
|
+
|
|
8
|
+
// ../logix-core/src/internal/observability/runSession.ts
|
|
9
|
+
import { Context, Layer } from "../effect.js";
|
|
10
|
+
var RunSessionTagImpl = class extends Context.Tag(
|
|
11
|
+
"@logix/core/RunSession"
|
|
12
|
+
)() {
|
|
13
|
+
};
|
|
14
|
+
var RunSessionTag = RunSessionTagImpl;
|
|
15
|
+
var NEXT_RUN_SEQ_KEY = /* @__PURE__ */ Symbol.for("@logix/core/runSession/nextRunSeq");
|
|
16
|
+
var fallbackNextRunSeq = 0;
|
|
17
|
+
var nextRunSeq = () => {
|
|
18
|
+
try {
|
|
19
|
+
const g = globalThis;
|
|
20
|
+
const prev = typeof g[NEXT_RUN_SEQ_KEY] === "number" ? g[NEXT_RUN_SEQ_KEY] : 0;
|
|
21
|
+
const next = prev + 1;
|
|
22
|
+
g[NEXT_RUN_SEQ_KEY] = next;
|
|
23
|
+
return next;
|
|
24
|
+
} catch {
|
|
25
|
+
fallbackNextRunSeq += 1;
|
|
26
|
+
return fallbackNextRunSeq;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var makeRunId = (startedAt) => `run-${startedAt}.${nextRunSeq()}`;
|
|
30
|
+
var makeRunSessionLocalState = () => {
|
|
31
|
+
const onceKeys = /* @__PURE__ */ new Set();
|
|
32
|
+
const seqByNamespace = /* @__PURE__ */ new Map();
|
|
33
|
+
return {
|
|
34
|
+
once: (key) => {
|
|
35
|
+
if (onceKeys.has(key)) return false;
|
|
36
|
+
onceKeys.add(key);
|
|
37
|
+
return true;
|
|
38
|
+
},
|
|
39
|
+
nextSeq: (namespace, key) => {
|
|
40
|
+
const byKey = seqByNamespace.get(namespace) ?? /* @__PURE__ */ new Map();
|
|
41
|
+
if (!seqByNamespace.has(namespace)) seqByNamespace.set(namespace, byKey);
|
|
42
|
+
const prev = byKey.get(key) ?? 0;
|
|
43
|
+
const next = prev + 1;
|
|
44
|
+
byKey.set(key, next);
|
|
45
|
+
return next;
|
|
46
|
+
},
|
|
47
|
+
clear: () => {
|
|
48
|
+
onceKeys.clear();
|
|
49
|
+
seqByNamespace.clear();
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
var makeRunSession = (options) => {
|
|
54
|
+
const startedAt = options?.startedAt ?? Date.now();
|
|
55
|
+
return {
|
|
56
|
+
runId: options?.runId ?? makeRunId(startedAt),
|
|
57
|
+
source: options?.source ?? { host: "unknown" },
|
|
58
|
+
startedAt,
|
|
59
|
+
local: options?.local ?? makeRunSessionLocalState()
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
var makeEvidenceSink = (session) => {
|
|
63
|
+
const events = [];
|
|
64
|
+
let nextSeq = 1;
|
|
65
|
+
return {
|
|
66
|
+
record: (type, payload, options) => {
|
|
67
|
+
events.push({
|
|
68
|
+
protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,
|
|
69
|
+
runId: session.runId,
|
|
70
|
+
seq: nextSeq++,
|
|
71
|
+
timestamp: options?.timestamp ?? Date.now(),
|
|
72
|
+
type,
|
|
73
|
+
payload
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
export: (options) => {
|
|
77
|
+
const protocolVersion = options?.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION;
|
|
78
|
+
const maxEvents = options?.maxEvents;
|
|
79
|
+
const selected = typeof maxEvents === "number" && Number.isFinite(maxEvents) && maxEvents > 0 ? events.slice(Math.max(0, events.length - Math.floor(maxEvents))) : events.slice();
|
|
80
|
+
return exportEvidencePackage({
|
|
81
|
+
protocolVersion,
|
|
82
|
+
runId: session.runId,
|
|
83
|
+
source: session.source,
|
|
84
|
+
createdAt: options?.createdAt,
|
|
85
|
+
events: selected,
|
|
86
|
+
summary: options?.summary
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
clear: () => {
|
|
90
|
+
events.length = 0;
|
|
91
|
+
nextSeq = 1;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
var runSessionLayer = (session) => Layer.succeed(RunSessionTag, session ?? makeRunSession());
|
|
96
|
+
|
|
97
|
+
export {
|
|
98
|
+
RunSessionTag,
|
|
99
|
+
makeRunSession,
|
|
100
|
+
makeEvidenceSink,
|
|
101
|
+
runSessionLayer
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9ydW5TZXNzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBDb250ZXh0LCBMYXllciB9IGZyb20gXCJlZmZlY3RcIlxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tIFwiLi9qc29uVmFsdWUuanNcIlxuaW1wb3J0IHR5cGUgeyBFdmlkZW5jZVBhY2thZ2UsIEV2aWRlbmNlUGFja2FnZVNvdXJjZSwgT2JzZXJ2YXRpb25FbnZlbG9wZSB9IGZyb20gXCIuL2V2aWRlbmNlLmpzXCJcbmltcG9ydCB7IGV4cG9ydEV2aWRlbmNlUGFja2FnZSwgT0JTRVJWQUJJTElUWV9QUk9UT0NPTF9WRVJTSU9OIH0gZnJvbSBcIi4vZXZpZGVuY2UuanNcIlxuXG5leHBvcnQgdHlwZSBSdW5JZCA9IHN0cmluZ1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNlc3Npb25Mb2NhbFN0YXRlIHtcbiAgLyoqXG4gICAqIG9uY2VcdUZGMUFcdTc1MjhcdTRFOEVcdTIwMUNcdTUzRUFcdTUzRDFcdTRFMDBcdTZCMjFcdTIwMURcdTc2ODRcdTUzQkJcdTkxQ0RcdTk1MkVcdTk2QzZcdTU0MDhcdUZGMDhcdTVGQzVcdTk4N0JcdTYzMDlcdTRGMUFcdThCRERcdTk2OTRcdTc5QkJcdUZGMENcdTkwN0ZcdTUxNERcdThERThcdTRGMUFcdThCRERcdTZDNjFcdTY3RDNcdUZGMDlcdTMwMDJcbiAgICogXHU4RkQ0XHU1NkRFIHRydWUgXHU4ODY4XHU3OTNBXHU5OTk2XHU2QjIxXHU1MUZBXHU3M0IwXHVGRjBDZmFsc2UgXHU4ODY4XHU3OTNBXHU1REYyXHU1MUZBXHU3M0IwXHU4RkM3XHUzMDAyXG4gICAqL1xuICByZWFkb25seSBvbmNlOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW5cblxuICAvKipcbiAgICogc2VxXHVGRjFBXHU3NTI4XHU0RThFXHU2MzA5IGtleSBcdTUyMDZcdTkxNERcdTUzNTVcdThDMDNcdTVFOEZcdTUzRjdcdUZGMDhcdTRGOEJcdTU5ODIgb3BTZXEvZXZlbnRTZXEgXHU3QjQ5XHVGRjA5XHVGRjBDXHU1RkM1XHU5ODdCXHU2MzA5XHU0RjFBXHU4QkREXHU5Njk0XHU3OUJCXHUzMDAyXG4gICAqL1xuICByZWFkb25seSBuZXh0U2VxOiAobmFtZXNwYWNlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiBudW1iZXJcblxuICAvKiogXHU0RUM1XHU3NTI4XHU0RThFXHU2RDRCXHU4QkQ1L1x1NTkwRFx1NEY0RFx1RkYxQVx1NkUwNVx1N0E3QVx1NjcyQ1x1NEYxQVx1OEJERFx1NzY4NFx1NjcyQ1x1NTczMFx1NzJCNlx1NjAwMVx1MzAwMiAqL1xuICByZWFkb25seSBjbGVhcjogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNlc3Npb24ge1xuICByZWFkb25seSBydW5JZDogUnVuSWRcbiAgcmVhZG9ubHkgc291cmNlOiBFdmlkZW5jZVBhY2thZ2VTb3VyY2VcbiAgcmVhZG9ubHkgc3RhcnRlZEF0OiBudW1iZXJcbiAgcmVhZG9ubHkgbG9jYWw6IFJ1blNlc3Npb25Mb2NhbFN0YXRlXG59XG5cbmNsYXNzIFJ1blNlc3Npb25UYWdJbXBsIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGxvZ2l4L2NvcmUvUnVuU2Vzc2lvblwiLFxuKTxSdW5TZXNzaW9uVGFnSW1wbCwgUnVuU2Vzc2lvbj4oKSB7fVxuXG5leHBvcnQgY29uc3QgUnVuU2Vzc2lvblRhZyA9IFJ1blNlc3Npb25UYWdJbXBsXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZpZGVuY2VTaW5rIHtcbiAgcmVhZG9ubHkgcmVjb3JkOiAodHlwZTogc3RyaW5nLCBwYXlsb2FkOiBKc29uVmFsdWUsIG9wdGlvbnM/OiB7IHJlYWRvbmx5IHRpbWVzdGFtcD86IG51bWJlciB9KSA9PiB2b2lkXG4gIHJlYWRvbmx5IGV4cG9ydDogKG9wdGlvbnM/OiB7XG4gICAgcmVhZG9ubHkgcHJvdG9jb2xWZXJzaW9uPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY3JlYXRlZEF0PzogbnVtYmVyXG4gICAgcmVhZG9ubHkgc3VtbWFyeT86IEpzb25WYWx1ZVxuICAgIHJlYWRvbmx5IG1heEV2ZW50cz86IG51bWJlclxuICB9KSA9PiBFdmlkZW5jZVBhY2thZ2VcbiAgcmVhZG9ubHkgY2xlYXI6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgTkVYVF9SVU5fU0VRX0tFWSA9IFN5bWJvbC5mb3IoXCJAbG9naXgvY29yZS9ydW5TZXNzaW9uL25leHRSdW5TZXFcIilcbmxldCBmYWxsYmFja05leHRSdW5TZXEgPSAwXG5cbmNvbnN0IG5leHRSdW5TZXEgPSAoKTogbnVtYmVyID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IGc6IGFueSA9IGdsb2JhbFRoaXMgYXMgYW55XG4gICAgY29uc3QgcHJldiA9IHR5cGVvZiBnW05FWFRfUlVOX1NFUV9LRVldID09PSBcIm51bWJlclwiID8gKGdbTkVYVF9SVU5fU0VRX0tFWV0gYXMgbnVtYmVyKSA6IDBcbiAgICBjb25zdCBuZXh0ID0gcHJldiArIDFcbiAgICBnW05FWFRfUlVOX1NFUV9LRVldID0gbmV4dFxuICAgIHJldHVybiBuZXh0XG4gIH0gY2F0Y2gge1xuICAgIGZhbGxiYWNrTmV4dFJ1blNlcSArPSAxXG4gICAgcmV0dXJuIGZhbGxiYWNrTmV4dFJ1blNlcVxuICB9XG59XG5cbmNvbnN0IG1ha2VSdW5JZCA9IChzdGFydGVkQXQ6IG51bWJlcik6IFJ1bklkID0+IGBydW4tJHtzdGFydGVkQXR9LiR7bmV4dFJ1blNlcSgpfWBcblxuZXhwb3J0IGNvbnN0IG1ha2VSdW5TZXNzaW9uTG9jYWxTdGF0ZSA9ICgpOiBSdW5TZXNzaW9uTG9jYWxTdGF0ZSA9PiB7XG4gIGNvbnN0IG9uY2VLZXlzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3Qgc2VxQnlOYW1lc3BhY2UgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgbnVtYmVyPj4oKVxuXG4gIHJldHVybiB7XG4gICAgb25jZTogKGtleSkgPT4ge1xuICAgICAgaWYgKG9uY2VLZXlzLmhhcyhrZXkpKSByZXR1cm4gZmFsc2VcbiAgICAgIG9uY2VLZXlzLmFkZChrZXkpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gICAgbmV4dFNlcTogKG5hbWVzcGFjZSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBieUtleSA9IHNlcUJ5TmFtZXNwYWNlLmdldChuYW1lc3BhY2UpID8/IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KClcbiAgICAgIGlmICghc2VxQnlOYW1lc3BhY2UuaGFzKG5hbWVzcGFjZSkpIHNlcUJ5TmFtZXNwYWNlLnNldChuYW1lc3BhY2UsIGJ5S2V5KVxuICAgICAgY29uc3QgcHJldiA9IGJ5S2V5LmdldChrZXkpID8/IDBcbiAgICAgIGNvbnN0IG5leHQgPSBwcmV2ICsgMVxuICAgICAgYnlLZXkuc2V0KGtleSwgbmV4dClcbiAgICAgIHJldHVybiBuZXh0XG4gICAgfSxcbiAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgb25jZUtleXMuY2xlYXIoKVxuICAgICAgc2VxQnlOYW1lc3BhY2UuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1ha2VSdW5TZXNzaW9uID0gKG9wdGlvbnM/OiB7XG4gIHJlYWRvbmx5IHJ1bklkPzogUnVuSWRcbiAgcmVhZG9ubHkgc291cmNlPzogRXZpZGVuY2VQYWNrYWdlU291cmNlXG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdD86IG51bWJlclxuICByZWFkb25seSBsb2NhbD86IFJ1blNlc3Npb25Mb2NhbFN0YXRlXG59KTogUnVuU2Vzc2lvbiA9PiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG9wdGlvbnM/LnN0YXJ0ZWRBdCA/PyBEYXRlLm5vdygpXG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IG9wdGlvbnM/LnJ1bklkID8/IG1ha2VSdW5JZChzdGFydGVkQXQpLFxuICAgIHNvdXJjZTogb3B0aW9ucz8uc291cmNlID8/IHsgaG9zdDogXCJ1bmtub3duXCIgfSxcbiAgICBzdGFydGVkQXQsXG4gICAgbG9jYWw6IG9wdGlvbnM/LmxvY2FsID8/IG1ha2VSdW5TZXNzaW9uTG9jYWxTdGF0ZSgpLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlRXZpZGVuY2VTaW5rID0gKHNlc3Npb246IFJ1blNlc3Npb24pOiBFdmlkZW5jZVNpbmsgPT4ge1xuICBjb25zdCBldmVudHM6IE9ic2VydmF0aW9uRW52ZWxvcGVbXSA9IFtdXG4gIGxldCBuZXh0U2VxID0gMVxuXG4gIHJldHVybiB7XG4gICAgcmVjb3JkOiAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykgPT4ge1xuICAgICAgZXZlbnRzLnB1c2goe1xuICAgICAgICBwcm90b2NvbFZlcnNpb246IE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgICAgcnVuSWQ6IHNlc3Npb24ucnVuSWQsXG4gICAgICAgIHNlcTogbmV4dFNlcSsrLFxuICAgICAgICB0aW1lc3RhbXA6IG9wdGlvbnM/LnRpbWVzdGFtcCA/PyBEYXRlLm5vdygpLFxuICAgICAgICB0eXBlLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSlcbiAgICB9LFxuICAgIGV4cG9ydDogKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHByb3RvY29sVmVyc2lvbiA9IG9wdGlvbnM/LnByb3RvY29sVmVyc2lvbiA/PyBPQlNFUlZBQklMSVRZX1BST1RPQ09MX1ZFUlNJT05cbiAgICAgIGNvbnN0IG1heEV2ZW50cyA9IG9wdGlvbnM/Lm1heEV2ZW50c1xuXG4gICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgIHR5cGVvZiBtYXhFdmVudHMgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKG1heEV2ZW50cykgJiYgbWF4RXZlbnRzID4gMFxuICAgICAgICAgID8gZXZlbnRzLnNsaWNlKE1hdGgubWF4KDAsIGV2ZW50cy5sZW5ndGggLSBNYXRoLmZsb29yKG1heEV2ZW50cykpKVxuICAgICAgICAgIDogZXZlbnRzLnNsaWNlKClcblxuICAgICAgcmV0dXJuIGV4cG9ydEV2aWRlbmNlUGFja2FnZSh7XG4gICAgICAgIHByb3RvY29sVmVyc2lvbixcbiAgICAgICAgcnVuSWQ6IHNlc3Npb24ucnVuSWQsXG4gICAgICAgIHNvdXJjZTogc2Vzc2lvbi5zb3VyY2UsXG4gICAgICAgIGNyZWF0ZWRBdDogb3B0aW9ucz8uY3JlYXRlZEF0LFxuICAgICAgICBldmVudHM6IHNlbGVjdGVkLFxuICAgICAgICBzdW1tYXJ5OiBvcHRpb25zPy5zdW1tYXJ5LFxuICAgICAgfSlcbiAgICB9LFxuICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICBldmVudHMubGVuZ3RoID0gMFxuICAgICAgbmV4dFNlcSA9IDFcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBydW5TZXNzaW9uTGF5ZXIgPSAoXG4gIHNlc3Npb24/OiBSdW5TZXNzaW9uLFxuKTogTGF5ZXIuTGF5ZXI8UnVuU2Vzc2lvblRhZ0ltcGwsIG5ldmVyLCBuZXZlcj4gPT5cbiAgTGF5ZXIuc3VjY2VlZChSdW5TZXNzaW9uVGFnLCBzZXNzaW9uID8/IG1ha2VSdW5TZXNzaW9uKCkpIGFzIExheWVyLkxheWVyPFxuICAgIFJ1blNlc3Npb25UYWdJbXBsLFxuICAgIG5ldmVyLFxuICAgIG5ldmVyXG4gID5cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBQUEsU0FBUyxTQUFTLGFBQWE7QUE4Qi9CLElBQU0sb0JBQU4sY0FBZ0MsUUFBUTtBQUFBLEVBQ3RDO0FBQ0YsRUFBaUMsRUFBRTtBQUFDO0FBRTdCLElBQU0sZ0JBQWdCO0FBYTdCLElBQU0sbUJBQW1CLHVCQUFPLElBQUksbUNBQW1DO0FBQ3ZFLElBQUkscUJBQXFCO0FBRXpCLElBQU0sYUFBYSxNQUFjO0FBQy9CLE1BQUk7QUFFRixVQUFNLElBQVM7QUFDZixVQUFNLE9BQU8s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
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// ../logix-core/src/internal/observability/jsonValue.ts
|
|
5
|
+
var isJsonValue = (input) => {
|
|
6
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
7
|
+
const loop = (value, depth) => {
|
|
8
|
+
if (depth > 64) return false;
|
|
9
|
+
if (value === null) return true;
|
|
10
|
+
switch (typeof value) {
|
|
11
|
+
case "string":
|
|
12
|
+
case "boolean":
|
|
13
|
+
return true;
|
|
14
|
+
case "number":
|
|
15
|
+
return Number.isFinite(value);
|
|
16
|
+
case "object": {
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
if (seen.has(value)) return false;
|
|
19
|
+
seen.add(value);
|
|
20
|
+
for (const item of value) {
|
|
21
|
+
if (!loop(item, depth + 1)) return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (!isPlainRecord(value)) return false;
|
|
26
|
+
if (seen.has(value)) return false;
|
|
27
|
+
seen.add(value);
|
|
28
|
+
for (const v of Object.values(value)) {
|
|
29
|
+
if (!loop(v, depth + 1)) return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
default:
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return loop(input, 0);
|
|
38
|
+
};
|
|
39
|
+
var defaultOptions = {
|
|
40
|
+
maxDepth: 6,
|
|
41
|
+
maxObjectKeys: 32,
|
|
42
|
+
maxArrayLength: 32,
|
|
43
|
+
maxStringLength: 256,
|
|
44
|
+
maxJsonBytes: 4 * 1024,
|
|
45
|
+
oversizedPreviewBytes: 256
|
|
46
|
+
};
|
|
47
|
+
var truncateString = (value, maxLen, stats) => {
|
|
48
|
+
if (value.length <= maxLen) return value;
|
|
49
|
+
stats.oversized += 1;
|
|
50
|
+
return value.slice(0, maxLen);
|
|
51
|
+
};
|
|
52
|
+
var mergeDowngrade = (current, next) => {
|
|
53
|
+
if (!current) return next;
|
|
54
|
+
if (current === "non_serializable" || next === "non_serializable") return "non_serializable";
|
|
55
|
+
if (current === "oversized" || next === "oversized") return "oversized";
|
|
56
|
+
return "unknown";
|
|
57
|
+
};
|
|
58
|
+
function isPlainRecord(value) {
|
|
59
|
+
if (typeof value !== "object" || value === null) return false;
|
|
60
|
+
const proto = Object.getPrototypeOf(value);
|
|
61
|
+
return proto === Object.prototype || proto === null;
|
|
62
|
+
}
|
|
63
|
+
var asNumber = (value, stats) => {
|
|
64
|
+
if (Number.isFinite(value)) return value;
|
|
65
|
+
stats.nonSerializable += 1;
|
|
66
|
+
return String(value);
|
|
67
|
+
};
|
|
68
|
+
var toJsonValueInternal = (input, options, stats, seen, depth) => {
|
|
69
|
+
if (input === null) return null;
|
|
70
|
+
switch (typeof input) {
|
|
71
|
+
case "string":
|
|
72
|
+
return truncateString(input, options.maxStringLength, stats);
|
|
73
|
+
case "number":
|
|
74
|
+
return asNumber(input, stats);
|
|
75
|
+
case "boolean":
|
|
76
|
+
return input;
|
|
77
|
+
case "bigint":
|
|
78
|
+
stats.nonSerializable += 1;
|
|
79
|
+
return truncateString(input.toString(), options.maxStringLength, stats);
|
|
80
|
+
case "symbol":
|
|
81
|
+
stats.nonSerializable += 1;
|
|
82
|
+
return truncateString(input.toString(), options.maxStringLength, stats);
|
|
83
|
+
case "function":
|
|
84
|
+
stats.nonSerializable += 1;
|
|
85
|
+
return "[Function]";
|
|
86
|
+
case "undefined":
|
|
87
|
+
stats.dropped += 1;
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
if (depth >= options.maxDepth) {
|
|
91
|
+
stats.oversized += 1;
|
|
92
|
+
return "[Truncated]";
|
|
93
|
+
}
|
|
94
|
+
if (input instanceof Date) {
|
|
95
|
+
return input.toISOString();
|
|
96
|
+
}
|
|
97
|
+
if (input instanceof Error) {
|
|
98
|
+
stats.nonSerializable += 1;
|
|
99
|
+
return {
|
|
100
|
+
name: truncateString(input.name, options.maxStringLength, stats),
|
|
101
|
+
message: truncateString(input.message, options.maxStringLength, stats)
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (typeof input === "object") {
|
|
105
|
+
if (seen.has(input)) {
|
|
106
|
+
stats.nonSerializable += 1;
|
|
107
|
+
return "[Circular]";
|
|
108
|
+
}
|
|
109
|
+
seen.add(input);
|
|
110
|
+
}
|
|
111
|
+
if (Array.isArray(input)) {
|
|
112
|
+
const out2 = [];
|
|
113
|
+
const limit2 = Math.min(input.length, options.maxArrayLength);
|
|
114
|
+
for (let i = 0; i < limit2; i++) {
|
|
115
|
+
out2.push(toJsonValueInternal(input[i], options, stats, seen, depth + 1));
|
|
116
|
+
}
|
|
117
|
+
if (input.length > limit2) {
|
|
118
|
+
stats.oversized += 1;
|
|
119
|
+
out2.push(`[...${input.length - limit2} more]`);
|
|
120
|
+
}
|
|
121
|
+
return out2;
|
|
122
|
+
}
|
|
123
|
+
if (!isPlainRecord(input)) {
|
|
124
|
+
stats.nonSerializable += 1;
|
|
125
|
+
return truncateString(String(input), options.maxStringLength, stats);
|
|
126
|
+
}
|
|
127
|
+
const entries = Object.entries(input);
|
|
128
|
+
const limit = Math.min(entries.length, options.maxObjectKeys);
|
|
129
|
+
const out = {};
|
|
130
|
+
for (let i = 0; i < limit; i++) {
|
|
131
|
+
const [rawKey, rawValue] = entries[i];
|
|
132
|
+
const key = truncateString(rawKey, options.maxStringLength, stats);
|
|
133
|
+
if (rawValue === void 0) {
|
|
134
|
+
stats.dropped += 1;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
out[key] = toJsonValueInternal(rawValue, options, stats, seen, depth + 1);
|
|
138
|
+
}
|
|
139
|
+
if (entries.length > limit) {
|
|
140
|
+
stats.oversized += 1;
|
|
141
|
+
out.__truncatedKeys = entries.length - limit;
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
};
|
|
145
|
+
var projectJsonValue = (input, options) => {
|
|
146
|
+
const resolved = { ...defaultOptions, ...options ?? {} };
|
|
147
|
+
const stats = { dropped: 0, oversized: 0, nonSerializable: 0 };
|
|
148
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
149
|
+
let downgrade;
|
|
150
|
+
const value = toJsonValueInternal(input, resolved, stats, seen, 0);
|
|
151
|
+
if (stats.nonSerializable > 0) {
|
|
152
|
+
downgrade = mergeDowngrade(downgrade, "non_serializable");
|
|
153
|
+
}
|
|
154
|
+
if (stats.oversized > 0) {
|
|
155
|
+
downgrade = mergeDowngrade(downgrade, "oversized");
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const json = JSON.stringify(value);
|
|
159
|
+
if (json.length > resolved.maxJsonBytes) {
|
|
160
|
+
downgrade = mergeDowngrade(downgrade, "oversized");
|
|
161
|
+
const preview = json.slice(0, Math.min(resolved.oversizedPreviewBytes, resolved.maxJsonBytes));
|
|
162
|
+
return {
|
|
163
|
+
value: {
|
|
164
|
+
_tag: "oversized",
|
|
165
|
+
bytes: json.length,
|
|
166
|
+
preview
|
|
167
|
+
},
|
|
168
|
+
stats: {
|
|
169
|
+
dropped: stats.dropped,
|
|
170
|
+
oversized: stats.oversized + 1,
|
|
171
|
+
nonSerializable: stats.nonSerializable
|
|
172
|
+
},
|
|
173
|
+
downgrade
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
} catch {
|
|
177
|
+
downgrade = mergeDowngrade(downgrade, "non_serializable");
|
|
178
|
+
return {
|
|
179
|
+
value: "[Unserializable]",
|
|
180
|
+
stats: {
|
|
181
|
+
dropped: stats.dropped,
|
|
182
|
+
oversized: stats.oversized,
|
|
183
|
+
nonSerializable: stats.nonSerializable + 1
|
|
184
|
+
},
|
|
185
|
+
downgrade
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
value,
|
|
190
|
+
stats: {
|
|
191
|
+
dropped: stats.dropped,
|
|
192
|
+
oversized: stats.oversized,
|
|
193
|
+
nonSerializable: stats.nonSerializable
|
|
194
|
+
},
|
|
195
|
+
downgrade
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export {
|
|
200
|
+
isJsonValue,
|
|
201
|
+
projectJsonValue
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9qc29uVmFsdWUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB0eXBlIEpzb25WYWx1ZSA9XG4gIHwgbnVsbFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBSZWFkb25seUFycmF5PEpzb25WYWx1ZT5cbiAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIERvd25ncmFkZVJlYXNvbiA9IFwibm9uX3NlcmlhbGl6YWJsZVwiIHwgXCJvdmVyc2l6ZWRcIiB8IFwidW5rbm93blwiXG5cbmV4cG9ydCBjb25zdCBpc0pzb25WYWx1ZSA9IChpbnB1dDogdW5rbm93bik6IGlucHV0IGlzIEpzb25WYWx1ZSA9PiB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldDxvYmplY3Q+KClcblxuICBjb25zdCBsb29wID0gKHZhbHVlOiB1bmtub3duLCBkZXB0aDogbnVtYmVyKTogdmFsdWUgaXMgSnNvblZhbHVlID0+IHtcbiAgICBpZiAoZGVwdGggPiA2NCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gdHJ1ZVxuXG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpXG4gICAgICBjYXNlIFwib2JqZWN0XCI6IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgc2Vlbi5hZGQodmFsdWUpXG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIWxvb3AoaXRlbSwgZGVwdGggKyAxKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzUGxhaW5SZWNvcmQodmFsdWUpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIGZhbHNlXG4gICAgICAgIHNlZW4uYWRkKHZhbHVlKVxuXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiBPYmplY3QudmFsdWVzKHZhbHVlKSkge1xuICAgICAgICAgIGlmICghbG9vcCh2LCBkZXB0aCArIDEpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9vcChpbnB1dCwgMClcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFsdWVQcm9qZWN0aW9uU3RhdHMge1xuICByZWFkb25seSBkcm9wcGVkOiBudW1iZXJcbiAgcmVhZG9ubHkgb3ZlcnNpemVkOiBudW1iZXJcbiAgcmVhZG9ubHkgbm9uU2VyaWFsaXphYmxlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFsdWVQcm9qZWN0aW9uIHtcbiAgcmVhZG9ubHkgdmFsdWU6IEpzb25WYWx1ZVxuICByZWFkb25seSBzdGF0czogSnNvblZhbHVlUHJvamVjdGlvblN0YXRzXG4gIHJlYWRvbmx5IGRvd25ncmFkZT86IERvd25ncmFkZVJlYXNvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYWx1ZVByb2plY3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWF4RGVwdGg/OiBudW1iZXJcbiAgcmVhZG9ubHkgbWF4T2JqZWN0S2V5cz86IG51bWJlclxuICByZWFkb25seSBtYXhBcnJheUxlbmd0aD86IG51bWJlclxuICByZWFkb25seSBtYXhTdHJpbmdMZW5ndGg/OiBudW1iZXJcbiAgcmVhZG9ubHkgbWF4SnNvbkJ5dGVzPzogbnVtYmVyXG4gIHJlYWRvbmx5IG92ZXJzaXplZFByZXZpZXdCeXRlcz86IG51bWJlclxufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8SnNvblZhbHVlUHJvamVjdE9wdGlvbnM+ID0ge1xuICBtYXhEZXB0aDogNixcbiAgbWF4T2JqZWN0S2V5czogMzIsXG4gIG1heEFycmF5TGVuZ3RoOiAzMixcbiAgbWF4U3RyaW5nTGVuZ3RoOiAyNTYsXG4gIG1heEpzb25CeXRlczogNCAqIDEwMjQsXG4gIG92ZXJzaXplZFByZXZpZXdCeXRlczogMjU2LFxufVxuXG5jb25zdCB0cnVuY2F0ZVN0cmluZyA9ICh2YWx1ZTogc3RyaW5nLCBtYXhMZW46IG51bWJlciwgc3RhdHM6IE11dGFibGVTdGF0cyk6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZS5sZW5ndGggPD0gbWF4TGVuKSByZXR1cm4gdmFsdWVcbiAgc3RhdHMub3ZlcnNpemVkICs9IDFcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIG1heExlbilcbn1cblxudHlwZSBNdXRhYmxlU3RhdHMgPSB7XG4gIGRyb3BwZWQ6IG51bWJlclxuICBvdmVyc2l6ZWQ6IG51bWJlclxuICBub25TZXJpYWxpemFibGU6IG51bWJlclxufVxuXG5jb25zdCBtZXJnZURvd25ncmFkZSA9IChjdXJyZW50OiBEb3duZ3JhZGVSZWFzb24gfCB1bmRlZmluZWQsIG5leHQ6IERvd25ncmFkZVJlYXNvbik6IERvd25ncmFkZVJlYXNvbiA9PiB7XG4gIGlmICghY3VycmVudCkgcmV0dXJuIG5leHRcbiAgaWYgKGN1cnJlbnQgPT09IFwibm9uX3NlcmlhbGl6YWJsZVwiIHx8IG5leHQgPT09IFwibm9uX3NlcmlhbGl6YWJsZVwiKSByZXR1cm4gXCJub25fc2VyaWFsaXphYmxlXCJcbiAgaWYgKGN1cnJlbnQgPT09IFwib3ZlcnNpemVkXCIgfHwgbmV4dCA9PT0gXCJvdmVyc2l6ZWRcIikgcmV0dXJuIFwib3ZlcnNpemVkXCJcbiAgcmV0dXJuIFwidW5rbm93blwiXG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5SZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZVxuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgcmV0dXJuIHByb3RvID09PSBPYmplY3QucHJvdG90eXBlIHx8IHByb3RvID09PSBudWxsXG59XG5cbmNvbnN0IGFzTnVtYmVyID0gKHZhbHVlOiBudW1iZXIsIHN0YXRzOiBNdXRhYmxlU3RhdHMpOiBKc29uVmFsdWUgPT4ge1xuICBpZiAoTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG4gIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gIHJldHVybiBTdHJpbmcodmFsdWUpXG59XG5cbmNvbnN0IHRvSnNvblZhbHVlSW50ZXJuYWwgPSAoXG4gIGlucHV0OiB1bmtub3duLFxuICBvcHRpb25zOiBSZXF1aXJlZDxKc29uVmFsdWVQcm9qZWN0T3B0aW9ucz4sXG4gIHN0YXRzOiBNdXRhYmxlU3RhdHMsXG4gIHNlZW46IFdlYWtTZXQ8b2JqZWN0PixcbiAgZGVwdGg6IG51bWJlcixcbik6IEpzb25WYWx1ZSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICBzd2l0Y2ggKHR5cGVvZiBpbnB1dCkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiB0cnVuY2F0ZVN0cmluZyhpbnB1dCwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBhc051bWJlcihpbnB1dCwgc3RhdHMpXG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgIHJldHVybiBpbnB1dFxuICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gdHJ1bmNhdGVTdHJpbmcoaW5wdXQudG9TdHJpbmcoKSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gdHJ1bmNhdGVTdHJpbmcoaW5wdXQudG9TdHJpbmcoKSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgc3RhdHMubm9uU2VyaWFsaXphYmxlICs9IDFcbiAgICAgIHJldHVybiBcIltGdW5jdGlvbl1cIlxuICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIG9iamVjdFxuICBpZiAoZGVwdGggPj0gb3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgcmV0dXJuIFwiW1RydW5jYXRlZF1cIlxuICB9XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBpbnB1dC50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRydW5jYXRlU3RyaW5nKGlucHV0Lm5hbWUsIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoLCBzdGF0cyksXG4gICAgICBtZXNzYWdlOiB0cnVuY2F0ZVN0cmluZyhpbnB1dC5tZXNzYWdlLCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpLFxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5wdXQgPT09IFwib2JqZWN0XCIpIHtcbiAgICBpZiAoc2Vlbi5oYXMoaW5wdXQpKSB7XG4gICAgICBzdGF0cy5ub25TZXJpYWxpemFibGUgKz0gMVxuICAgICAgcmV0dXJuIFwiW0NpcmN1bGFyXVwiXG4gICAgfVxuICAgIHNlZW4uYWRkKGlucHV0KVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgY29uc3Qgb3V0OiBBcnJheTxKc29uVmFsdWU+ID0gW11cbiAgICBjb25zdCBsaW1pdCA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgb3B0aW9ucy5tYXhBcnJheUxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgIG91dC5wdXNoKHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXRbaV0sIG9wdGlvbnMsIHN0YXRzLCBzZWVuLCBkZXB0aCArIDEpKVxuICAgIH1cbiAgICBpZiAoaW5wdXQubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgICBvdXQucHVzaChgWy4uLiR7aW5wdXQubGVuZ3RoIC0gbGltaXR9IG1vcmVdYClcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgaWYgKCFpc1BsYWluUmVjb3JkKGlucHV0KSkge1xuICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgcmV0dXJuIHRydW5jYXRlU3RyaW5nKFN0cmluZyhpbnB1dCksIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoLCBzdGF0cylcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhpbnB1dClcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihlbnRyaWVzLmxlbmd0aCwgb3B0aW9ucy5tYXhPYmplY3RLZXlzKVxuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gPSB7fVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgIGNvbnN0IFtyYXdLZXksIHJhd1ZhbHVlXSA9IGVudHJpZXNbaV0hXG4gICAgY29uc3Qga2V5ID0gdHJ1bmNhdGVTdHJpbmcocmF3S2V5LCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpXG4gICAgaWYgKHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgb3V0W2tleV0gPSB0b0pzb25WYWx1ZUludGVybmFsKHJhd1ZhbHVlLCBvcHRpb25zLCBzdGF0cywgc2VlbiwgZGVwdGggKyAxKVxuICB9XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID4gbGltaXQpIHtcbiAgICBzdGF0cy5vdmVyc2l6ZWQgKz0gMVxuICAgIG91dC5fX3RydW5jYXRlZEtleXMgPSBlbnRyaWVzLmxlbmd0aCAtIGxpbWl0XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0SnNvblZhbHVlID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSnNvblZhbHVlUHJvamVjdE9wdGlvbnMpOiBKc29uVmFsdWVQcm9qZWN0aW9uID0+IHtcbiAgY29uc3QgcmVzb2x2ZWQ6IFJlcXVpcmVkPEpzb25WYWx1ZVByb2plY3RPcHRpb25zPiA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLihvcHRpb25zID8/IHt9KSB9XG4gIGNvbnN0IHN0YXRzOiBNdXRhYmxlU3RhdHMgPSB7IGRyb3BwZWQ6IDAsIG92ZXJzaXplZDogMCwgbm9uU2VyaWFsaXphYmxlOiAwIH1cbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKVxuXG4gIGxldCBkb3duZ3JhZGU6IERvd25ncmFkZVJlYXNvbiB8IHVuZGVmaW5lZFxuICBjb25zdCB2YWx1ZSA9IHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXQsIHJlc29sdmVkLCBzdGF0cywgc2VlbiwgMClcblxuICBpZiAoc3RhdHMubm9uU2VyaWFsaXphYmxlID4gMCkge1xuICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgXCJub25fc2VyaWFsaXphYmxlXCIpXG4gIH1cbiAgaWYgKHN0YXRzLm92ZXJzaXplZCA+IDApIHtcbiAgICBkb3duZ3JhZGUgPSBtZXJnZURvd25ncmFkZShkb3duZ3JhZGUsIFwib3ZlcnNpemVkXCIpXG4gIH1cblxuICAvLyBIYXJkIGdhdGU6IGVuc3VyZSBKU09OLnN0cmluZ2lmeSBuZXZlciB0aHJvd3MgYW5kIHJlc3BlY3QgdGhlIG1heCBieXRlIGJ1ZGdldC5cbiAgdHJ5IHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gICAgaWYgKGpzb24ubGVuZ3RoID4gcmVzb2x2ZWQubWF4SnNvbkJ5dGVzKSB7XG4gICAgICBkb3duZ3JhZGUgPSBtZXJnZURvd25ncmFkZShkb3duZ3JhZGUsIFwib3ZlcnNpemVkXCIpXG4gICAgICBjb25zdCBwcmV2aWV3ID0ganNvbi5zbGljZSgwLCBNYXRoLm1pbihyZXNvbHZlZC5vdmVyc2l6ZWRQcmV2aWV3Qnl0ZXMsIHJlc29sdmVkLm1heEpzb25CeXRlcykpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIF90YWc6IFwib3ZlcnNpemVkXCIsXG4gICAgICAgICAgYnl0ZXM6IGpzb24ubGVuZ3RoLFxuICAgICAgICAgIHByZXZpZXcsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRzOiB7XG4gICAgICAgICAgZHJvcHBlZDogc3RhdHMuZHJvcHBlZCxcbiAgICAgICAgICBvdmVyc2l6ZWQ6IHN0YXRzLm92ZXJzaXplZCArIDEsXG4gICAgICAgICAgbm9uU2VyaWFsaXphYmxlOiBzdGF0cy5ub25TZXJpYWxpemFibGUsXG4gICAgICAgIH0sXG4gICAgICAgIGRvd25ncmFkZSxcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgXCJub25fc2VyaWFsaXphYmxlXCIpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBcIltVbnNlcmlhbGl6YWJsZV1cIixcbiAgICAgIHN0YXRzOiB7XG4gICAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICAgIG92ZXJzaXplZDogc3RhdHMub3ZlcnNpemVkLFxuICAgICAgICBub25TZXJpYWxpemFibGU6IHN0YXRzLm5vblNlcmlhbGl6YWJsZSArIDEsXG4gICAgICB9LFxuICAgICAgZG93bmdyYWRlLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgc3RhdHM6IHtcbiAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICBvdmVyc2l6ZWQ6IHN0YXRzLm92ZXJzaXplZCxcbiAgICAgIG5vblNlcmlhbGl6YWJsZTogc3RhdHMubm9uU2VyaWFsaXphYmxlLFxuICAgIH0sXG4gICAgZG93bmdyYWRlLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBVU8sSUFBTSxjQUFjLENBQUMsVUFBdUM7QUFDakUsUUFBTSxPQUFPLG9CQUFJLFFBQWdCO0FBRWpDLFFBQU0sT0FBTyxDQUFDLE9BQWdCLFVBQXNDO0FBQ2xFLFFBQUksUUFBUSxHQUFJLFFBQU87QUFDdkIsUUFBSSxVQUFVLEtBQU0sUUFBTztBQUUzQixZQUFRLE9BQU8sT0FBTztBQUFBLE1BQ3BCLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFDSCxlQUFPO0FBQUEsTUFDVCxLQUFLO0FBQ0gsZUFBTyxPQUFPLFNBQVMsS0FBSztBQUFBLE1BQzlCLEtBQUssVUFBVTtBQUNiLFlBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixjQUFJLEtBQUssSUFBSSxLQUFLLEVBQUcsUUFBTztBQUM1QixlQUFLLElBQUksS0FBSztBQUNkLHFCQUFXLFFBQVEsT0FBTztBQUN4QixnQkFBSSxDQUFDLEtBQUssTUFBTSxRQUFRLENBQUMsRUFBRyxRQUFPO0FB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O0FBRUEsU0FBTztBQUNUO0FBRU8sSUFBTSxtQkFBbUIsQ0FBQyxPQUFnQixZQUEyRDtBQUMxRyxRQUFNLFdBQThDLEVBQUUsR0FBRyxnQkFBZ0IsR0FBSSxXQUFXLENBQUMsRUFBRztBQUM1RixRQUFNLFFBQXNCLEVBQUUsU0FBUyxHQUFHLFdBQVcsR0FBRyxpQkFBaUIsRUFBRTtBQUMzRSxRQUFNLE9BQU8sb0JBQUksUUFBZ0I7QUFFakMsTUFBSTtBQUNKLFFBQU0sUUFBUSxvQkFBb0IsT0FBTyxVQUFVLE9BQU8sTUFBTSxDQUFDO0FBRWpFLE1BQUksTUFBTSxrQkFBa0IsR0FBRztBQUM3QixnQkFBWSxlQUFlLFdBQVcsa0JBQWtCO0FBQUEsRUFDMUQ7QUFDQSxNQUFJLE1BQU0sWUFBWSxHQUFHO0FBQ3ZCLGdCQUFZLGVBQWUsV0FBVyxXQUFXO0FBQUEsRUFDbkQ7QUFHQSxNQUFJO0FBQ0YsVUFBTSxPQUFPLEtBQUssVUFBVSxLQUFLO0FBQ2pDLFFBQUksS0FBSyxTQUFTLFNBQVMsY0FBYztBQUN2QyxrQkFBWSxlQUFlLFdBQVcsV0FBVztBQUNqRCxZQUFNLFVBQVUsS0FBSyxNQUFNLEdBQUcsS0FBSyxJQUFJLFNBQVMsdUJBQXVCLFNBQVMsWUFBWSxDQUFDO0FBQzdGLGFBQU87QUFBQSxRQUNMLE9BQU87QUFBQSxVQUNMLE1BQU07QUFBQSxVQUNOLE9BQU8sS0FBSztBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsUUFDQSxPQUFPO0FBQUEsVUFDTCxTQUFTLE1BQU07QUFBQSxVQUNmLFdBQVcsTUFBTSxZQUFZO0FBQUEsVUFDN0IsaUJBQWlCLE1BQU07QUFBQSxRQUN6QjtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsUUFBUTtBQUNOLGdCQUFZLGVBQWUsV0FBVyxrQkFBa0I7QUFDeEQsV0FBTztBQUFBLE1BQ0wsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLFFBQ0wsU0FBUyxNQUFNO0FBQUEsUUFDZixXQUFXLE1BQU07QUFBQSxRQUNqQixpQkFBaUIsTUFBTSxrQkFBa0I7QUFBQSxNQUMzQztBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxTQUFTLE1BQU07QUFBQSxNQUNmLFdBQVcsTUFBTTtBQUFBLE1BQ2pCLGlCQUFpQixNQUFNO0FBQUEsSUFDekI7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogWyJvdXQiLCAibGltaXQiXQp9Cg==
|