@walkeros/cli 4.0.1-next-1778230564486 → 4.0.1
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/CHANGELOG.md +5 -5
- package/dist/cli.js +208 -162
- package/dist/index.js +19 -13
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/cli.js
CHANGED
|
@@ -1418,14 +1418,14 @@ var init_sse = __esm({
|
|
|
1418
1418
|
|
|
1419
1419
|
// ../core/dist/dev.mjs
|
|
1420
1420
|
import { z as n3 } from "zod";
|
|
1421
|
-
import { z as
|
|
1421
|
+
import { z as Ni } from "zod";
|
|
1422
1422
|
function o(e3, t3, i2 = "draft-7") {
|
|
1423
1423
|
return n3.toJSONSchema(e3, { target: i2 });
|
|
1424
1424
|
}
|
|
1425
|
-
function
|
|
1425
|
+
function M2(e3, t3) {
|
|
1426
1426
|
return n3.object({ data: n3.union([e3, t3]).optional().describe("Data transformation rules") }).partial();
|
|
1427
1427
|
}
|
|
1428
|
-
function
|
|
1428
|
+
function R2(e3) {
|
|
1429
1429
|
return n3.object({ mapping: e3.optional().describe("Event mapping rules") }).partial();
|
|
1430
1430
|
}
|
|
1431
1431
|
function T2(e3) {
|
|
@@ -1446,7 +1446,7 @@ function Pi(e3) {
|
|
|
1446
1446
|
function Di(e3) {
|
|
1447
1447
|
return wi.safeParse(e3);
|
|
1448
1448
|
}
|
|
1449
|
-
function
|
|
1449
|
+
function qi(e3) {
|
|
1450
1450
|
let t3;
|
|
1451
1451
|
try {
|
|
1452
1452
|
t3 = JSON.parse(e3);
|
|
@@ -1455,7 +1455,7 @@ function Bi(e3) {
|
|
|
1455
1455
|
if (e4 instanceof SyntaxError) {
|
|
1456
1456
|
const i4 = e4.message.match(/position\s+(\d+)/);
|
|
1457
1457
|
if (i4) {
|
|
1458
|
-
return
|
|
1458
|
+
return Vi(t5, parseInt(i4[1], 10));
|
|
1459
1459
|
}
|
|
1460
1460
|
const n6 = e4.message.match(/line\s+(\d+)\s+column\s+(\d+)/);
|
|
1461
1461
|
if (n6) return { line: parseInt(n6[1], 10), column: parseInt(n6[2], 10) };
|
|
@@ -1466,123 +1466,159 @@ function Bi(e3) {
|
|
|
1466
1466
|
}
|
|
1467
1467
|
const i2 = [], n4 = [], o2 = ki.safeParse(t3);
|
|
1468
1468
|
if (!o2.success) for (const t4 of o2.error.issues) {
|
|
1469
|
-
const n5 = t4.path.join("."), o3 =
|
|
1469
|
+
const n5 = t4.path.join("."), o3 = Zi(e3, t4.path);
|
|
1470
1470
|
i2.push({ message: t4.message, severity: "error", path: n5 || "root", ...o3 });
|
|
1471
1471
|
}
|
|
1472
1472
|
const r3 = (function(e4) {
|
|
1473
|
-
if (!(
|
|
1474
|
-
const t4 = {}, i3 = [], n5 = [], o3 = [], r4 = [], a3 = [];
|
|
1475
|
-
let
|
|
1476
|
-
|
|
1477
|
-
|
|
1473
|
+
if (!(Gi(e4) && "version" in e4 && "flows" in e4 && Gi(e4.flows))) return;
|
|
1474
|
+
const t4 = {}, i3 = [], n5 = [], o3 = [], r4 = [], a3 = [], s5 = [];
|
|
1475
|
+
let c3;
|
|
1476
|
+
const l2 = Object.keys(e4.flows);
|
|
1477
|
+
Ki(t4, e4.variables), (function(e5, t5) {
|
|
1478
|
+
if (!Gi(t5)) return;
|
|
1478
1479
|
for (const [, i4] of Object.entries(t5)) {
|
|
1479
|
-
if (
|
|
1480
|
+
if (!Gi(i4)) continue;
|
|
1480
1481
|
const t6 = i4.events;
|
|
1481
|
-
if (
|
|
1482
|
-
if (
|
|
1482
|
+
if (Gi(t6)) for (const [i5, n6] of Object.entries(t6)) {
|
|
1483
|
+
if (!Gi(n6)) continue;
|
|
1483
1484
|
const t7 = e5.find((e6) => e6.entity === i5), o4 = Object.keys(n6);
|
|
1484
1485
|
if (t7) for (const e6 of o4) t7.actions.includes(e6) || t7.actions.push(e6);
|
|
1485
1486
|
else e5.push({ entity: i5, actions: o4 });
|
|
1486
1487
|
}
|
|
1487
1488
|
}
|
|
1488
|
-
})(
|
|
1489
|
-
for (const
|
|
1490
|
-
if (!
|
|
1491
|
-
const e5 =
|
|
1492
|
-
|
|
1489
|
+
})(s5, e4.contract);
|
|
1490
|
+
for (const s6 of Object.values(e4.flows)) if (Gi(s6)) {
|
|
1491
|
+
if (!c3) {
|
|
1492
|
+
const e5 = s6.config;
|
|
1493
|
+
!Gi(e5) || "web" !== e5.platform && "server" !== e5.platform || (c3 = e5.platform);
|
|
1493
1494
|
}
|
|
1494
|
-
|
|
1495
|
+
Ki(t4, s6.variables);
|
|
1495
1496
|
for (const e5 of ["sources", "destinations", "transformers"]) {
|
|
1496
|
-
const
|
|
1497
|
-
if (
|
|
1497
|
+
const r5 = "sources" === e5 ? "source" : "destinations" === e5 ? "destination" : "transformer", l3 = "sources" === e5 ? i3 : "destinations" === e5 ? n5 : o3;
|
|
1498
|
+
if (Gi(s6[e5])) for (const [i4, n6] of Object.entries(s6[e5])) l3.push(i4), Gi(n6) && (Ki(t4, n6.variables), "string" == typeof n6.package && a3.push({ package: n6.package, shortName: i4, type: r5, platform: c3 || "web" }));
|
|
1498
1499
|
}
|
|
1500
|
+
if (Gi(s6.stores)) for (const [e5, i4] of Object.entries(s6.stores)) r4.push(e5), Gi(i4) && Ki(t4, i4.variables);
|
|
1499
1501
|
}
|
|
1500
|
-
const
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
return
|
|
1502
|
+
const d2 = { variables: t4, stepNames: { sources: i3, destinations: n5, transformers: o3, stores: r4 }, flowNames: l2 };
|
|
1503
|
+
c3 && (d2.platform = c3);
|
|
1504
|
+
a3.length > 0 && (d2.packages = a3);
|
|
1505
|
+
s5.length > 0 && (d2.contract = s5);
|
|
1506
|
+
return d2;
|
|
1505
1507
|
})(t3);
|
|
1506
1508
|
if (r3) {
|
|
1507
1509
|
const t4 = (function(e4, t5) {
|
|
1508
1510
|
const i3 = [];
|
|
1509
|
-
|
|
1511
|
+
return (function(e5, t6, i4) {
|
|
1512
|
+
let n5;
|
|
1513
|
+
Hi.lastIndex = 0;
|
|
1514
|
+
for (; null !== (n5 = Hi.exec(e5)); ) {
|
|
1515
|
+
const t7 = n5[0], o3 = n5[1], r4 = n5[2], a3 = _i(e5, n5.index, t7.length);
|
|
1516
|
+
i4.push({ message: `Malformed reference "${t7}", use a dot, not a colon: "$${o3}.${r4}".`, severity: "warning", path: t7, ...a3 });
|
|
1517
|
+
}
|
|
1518
|
+
})(e4, 0, i3), (function(e5, t6, i4) {
|
|
1519
|
+
if (!t6.variables) return;
|
|
1510
1520
|
const n5 = /\$var\.(\w+)/g;
|
|
1511
1521
|
let o3;
|
|
1512
|
-
for (; null !== (o3 = n5.exec(
|
|
1513
|
-
const n6 =
|
|
1514
|
-
|
|
1522
|
+
for (; null !== (o3 = n5.exec(e5)); ) if (!(o3[1] in t6.variables)) {
|
|
1523
|
+
const n6 = _i(e5, o3.index, o3[0].length);
|
|
1524
|
+
i4.push({ message: `Unknown variable "$var.${o3[1]}". Defined: ${Object.keys(t6.variables).join(", ") || "none"}`, severity: "warning", path: `$var.${o3[1]}`, ...n6 });
|
|
1515
1525
|
}
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1526
|
+
})(e4, t5, i3), (function(e5, t6, i4) {
|
|
1527
|
+
const n5 = t6.stepNames?.stores ?? [];
|
|
1528
|
+
let o3;
|
|
1529
|
+
Ai.lastIndex = 0;
|
|
1530
|
+
for (; null !== (o3 = Ai.exec(e5)); ) if (!n5.includes(o3[1])) {
|
|
1531
|
+
const t7 = _i(e5, o3.index, o3[0].length);
|
|
1532
|
+
i4.push({ message: `Unknown store "$store.${o3[1]}". Defined: ${n5.join(", ") || "none"}`, severity: "warning", path: `$store.${o3[1]}`, ...t7 });
|
|
1533
|
+
}
|
|
1534
|
+
})(e4, t5, i3), (function(e5, t6, i4) {
|
|
1535
|
+
let n5;
|
|
1536
|
+
Bi.lastIndex = 0;
|
|
1537
|
+
for (; null !== (n5 = Bi.exec(e5)); ) {
|
|
1538
|
+
const t7 = n5[0], o3 = n5[1], r4 = n5[2], a3 = _i(e5, n5.index, t7.length);
|
|
1539
|
+
r4 ? i4.push({ message: `Malformed $env reference "${t7}". Use ":" for default values, not "=" (e.g., "$env.${o3}:fallback").`, severity: "warning", path: t7, ...a3 }) : /^[A-Z][A-Z0-9_]*$/.test(o3) || i4.push({ message: `$env.${o3} should use UPPER_SNAKE_CASE by convention (e.g., $env.${o3.toUpperCase()}).`, severity: "warning", path: t7, ...a3 });
|
|
1540
|
+
}
|
|
1541
|
+
})(e4, 0, i3), (function(e5, t6, i4) {
|
|
1542
|
+
const n5 = t6.flowNames ?? [];
|
|
1543
|
+
if (0 === n5.length) return;
|
|
1544
|
+
let o3;
|
|
1545
|
+
Ui.lastIndex = 0;
|
|
1546
|
+
for (; null !== (o3 = Ui.exec(e5)); ) {
|
|
1547
|
+
const t7 = o3[0], r4 = o3[1];
|
|
1548
|
+
if (!n5.includes(r4)) {
|
|
1549
|
+
const a3 = _i(e5, o3.index, t7.length);
|
|
1550
|
+
i4.push({ message: `Unknown flow "$flow.${r4}". Defined: ${n5.join(", ")}`, severity: "warning", path: t7, ...a3 });
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1553
|
+
})(e4, t5, i3), i3;
|
|
1518
1554
|
})(e3, r3);
|
|
1519
1555
|
n4.push(...t4);
|
|
1520
1556
|
}
|
|
1521
1557
|
return { valid: 0 === i2.length, errors: i2, warnings: n4, context: r3 };
|
|
1522
1558
|
}
|
|
1523
|
-
function
|
|
1559
|
+
function Vi(e3, t3) {
|
|
1524
1560
|
let i2 = 1, n4 = 1;
|
|
1525
1561
|
for (let o2 = 0; o2 < t3 && o2 < e3.length; o2++) "\n" === e3[o2] ? (i2++, n4 = 1) : n4++;
|
|
1526
1562
|
return { line: i2, column: n4 };
|
|
1527
1563
|
}
|
|
1528
|
-
function
|
|
1529
|
-
const n4 =
|
|
1564
|
+
function _i(e3, t3, i2) {
|
|
1565
|
+
const n4 = Vi(e3, t3), o2 = Vi(e3, t3 + i2);
|
|
1530
1566
|
return { line: n4.line, column: n4.column, endLine: o2.line, endColumn: o2.column };
|
|
1531
1567
|
}
|
|
1532
|
-
function
|
|
1568
|
+
function Zi(e3, t3) {
|
|
1533
1569
|
if (0 === t3.length) return { line: 1, column: 1 };
|
|
1534
1570
|
const i2 = t3[t3.length - 1];
|
|
1535
1571
|
if ("string" == typeof i2) {
|
|
1536
1572
|
const t4 = `"${i2}"`, n4 = e3.lastIndexOf(t4);
|
|
1537
|
-
if (-1 !== n4) return
|
|
1573
|
+
if (-1 !== n4) return Vi(e3, n4);
|
|
1538
1574
|
}
|
|
1539
1575
|
return { line: 1, column: 1 };
|
|
1540
1576
|
}
|
|
1541
|
-
function
|
|
1577
|
+
function Gi(e3) {
|
|
1542
1578
|
return "object" == typeof e3 && null !== e3 && !Array.isArray(e3);
|
|
1543
1579
|
}
|
|
1544
|
-
function
|
|
1545
|
-
if (
|
|
1580
|
+
function Ki(e3, t3) {
|
|
1581
|
+
if (Gi(t3)) for (const [i2, n4] of Object.entries(t3)) e3[i2] = n4;
|
|
1546
1582
|
}
|
|
1547
|
-
function
|
|
1583
|
+
function Qi(e3, t3) {
|
|
1548
1584
|
const i2 = [], n4 = {};
|
|
1549
1585
|
for (const [t4, o3] of Object.entries(e3)) {
|
|
1550
1586
|
o3.required && i2.push(t4);
|
|
1551
1587
|
const e4 = { type: o3.type };
|
|
1552
1588
|
if (o3.description && (e4.description = o3.description), o3.pattern && (e4.pattern = o3.pattern), void 0 !== o3.minLength && (e4.minLength = o3.minLength), void 0 !== o3.maxLength && (e4.maxLength = o3.maxLength), void 0 !== o3.minimum && (e4.minimum = o3.minimum), void 0 !== o3.maximum && (e4.maximum = o3.maximum), o3.enum && (e4.enum = [...o3.enum]), void 0 !== o3.default && (e4.default = o3.default), "object" === o3.type && o3.properties) {
|
|
1553
1589
|
const t5 = {};
|
|
1554
|
-
for (const [e5, i3] of Object.entries(o3.properties)) t5[e5] =
|
|
1590
|
+
for (const [e5, i3] of Object.entries(o3.properties)) t5[e5] = Xi(i3);
|
|
1555
1591
|
e4.properties = t5;
|
|
1556
1592
|
}
|
|
1557
|
-
"array" === o3.type && o3.items && (e4.items =
|
|
1593
|
+
"array" === o3.type && o3.items && (e4.items = Xi(o3.items)), n4[t4] = e4;
|
|
1558
1594
|
}
|
|
1559
1595
|
const o2 = { type: "object", properties: n4 };
|
|
1560
1596
|
return t3 && (o2.title = t3), i2.length > 0 && (o2.required = i2), o2;
|
|
1561
1597
|
}
|
|
1562
|
-
function
|
|
1598
|
+
function Xi(e3) {
|
|
1563
1599
|
const t3 = { type: e3.type };
|
|
1564
1600
|
if (e3.description && (t3.description = e3.description), e3.pattern && (t3.pattern = e3.pattern), void 0 !== e3.minLength && (t3.minLength = e3.minLength), void 0 !== e3.maxLength && (t3.maxLength = e3.maxLength), void 0 !== e3.minimum && (t3.minimum = e3.minimum), void 0 !== e3.maximum && (t3.maximum = e3.maximum), e3.enum && (t3.enum = [...e3.enum]), void 0 !== e3.default && (t3.default = e3.default), "object" === e3.type && e3.properties) {
|
|
1565
1601
|
const i2 = {};
|
|
1566
|
-
for (const [t4, n4] of Object.entries(e3.properties)) i2[t4] =
|
|
1602
|
+
for (const [t4, n4] of Object.entries(e3.properties)) i2[t4] = Xi(n4);
|
|
1567
1603
|
t3.properties = i2;
|
|
1568
1604
|
}
|
|
1569
|
-
return "array" === e3.type && e3.items && (t3.items =
|
|
1605
|
+
return "array" === e3.type && e3.items && (t3.items = Xi(e3.items)), t3;
|
|
1570
1606
|
}
|
|
1571
|
-
function
|
|
1572
|
-
const i2 = { type: "array", items:
|
|
1607
|
+
function Yi(e3, t3) {
|
|
1608
|
+
const i2 = { type: "array", items: Xi(e3) };
|
|
1573
1609
|
return void 0 !== t3?.minItems && (i2.minItems = t3.minItems), void 0 !== t3?.maxItems && (i2.maxItems = t3.maxItems), t3?.description && (i2.description = t3.description), t3?.title && (i2.title = t3.title), i2;
|
|
1574
1610
|
}
|
|
1575
|
-
function
|
|
1611
|
+
function en(e3, t3 = "string", i2) {
|
|
1576
1612
|
const n4 = { type: t3, enum: [...e3] };
|
|
1577
1613
|
return i2?.description && (n4.description = i2.description), i2?.title && (n4.title = i2.title), n4;
|
|
1578
1614
|
}
|
|
1579
|
-
function
|
|
1580
|
-
return
|
|
1615
|
+
function tn(e3, t3, i2) {
|
|
1616
|
+
return Yi({ type: "object" }, { minItems: 2, maxItems: 2, description: i2 || "Tuple with exactly 2 elements [source, transform]" });
|
|
1581
1617
|
}
|
|
1582
|
-
function
|
|
1618
|
+
function nn(e3) {
|
|
1583
1619
|
return n3.toJSONSchema(e3, { target: "draft-7" });
|
|
1584
1620
|
}
|
|
1585
|
-
var e2, t2, i, r2, a2, s4, c2, l, d, p, u2, m, f, g, b, h, S2, v, y, w, k, C2, x, P2, D2, E2, j, I, J2, O2,
|
|
1621
|
+
var e2, t2, i, r2, a2, s4, c2, l, d, p, u2, m, f, g, b, h, S2, v, y, w, k, C2, x, P2, D2, E2, j, I, J2, O2, N2, L2, z2, $2, W2, q2, A2, B2, U2, H, V2, _2, Z2, G, K2, Q2, X3, Y3, ee2, te3, ie3, ne2, oe3, re3, ae3, se3, ce3, le3, de2, pe3, ue3, me3, fe3, ge2, be3, he3, Se3, ve3, ye2, we3, ke3, Ce2, xe, Pe2, De2, Ee3, je, Ie2, Je2, Oe2, Me2, Re2, Te2, Fe2, Ne3, Le, ze2, $e2, We2, qe, Ae2, Be2, Ue2, He2, Ve2, _e2, Ze2, Ge, Ke, Qe, Xe, Ye, et, tt, it, nt, ot, rt, at2, st2, ct2, lt2, dt2, pt, ut, mt2, ft, gt2, bt2, ht2, St, vt2, yt2, wt2, kt, Ct, xt, Pt, Dt, Et, jt2, It, Jt, Ot, Mt, Rt, Tt, Ft, Nt, Lt, zt, $t, Wt, qt, At, Bt, Ut, Ht, Vt, _t, Zt, Gt, Kt, Qt, Xt, Yt, ei, ti, ii, ni, oi, ri, ai, si, ci, li, di, pi, ui, mi, fi, gi, bi, hi, Si, vi, yi, wi, ki, Ei, ji, Ii, Ji, Oi, Mi, Ri, Ti, Fi, Li, zi, $i, Wi, Ai, Bi, Ui, Hi, rn;
|
|
1586
1622
|
var init_dev = __esm({
|
|
1587
1623
|
"../core/dist/dev.mjs"() {
|
|
1588
1624
|
"use strict";
|
|
@@ -1591,7 +1627,7 @@ var init_dev = __esm({
|
|
|
1591
1627
|
for (var n4 in i2) e2(t3, n4, { get: i2[n4], enumerable: true });
|
|
1592
1628
|
};
|
|
1593
1629
|
i = {};
|
|
1594
|
-
t2(i, { BaseContextConfig: () =>
|
|
1630
|
+
t2(i, { BaseContextConfig: () => L2, BatchConfig: () => z2, CacheRuleSchema: () => qe, CacheSchema: () => Ae2, CacheSchemas: () => We2, ClickIdEntrySchema: () => Wi, CodeSchema: () => Li, CollectorSchemas: () => bt2, ConsentSchema: () => G, ContractActionsSchema: () => bi, ContractRuleSchema: () => Si, ContractSchema: () => vi, ContractSchemaEntry: () => gi, Counter: () => d, DeepPartialEventSchema: () => ie3, DestinationSchemas: () => Me2, DestinationsMapConfig: () => q2, EntitiesSchema: () => Y3, EntitySchema: () => X3, EventSchema: () => ee2, FlowBundlePackageSchema: () => ri, FlowBundleSchema: () => ai, FlowCodeSchema: () => si, FlowConfigSchema: () => yi, FlowDestinationSchema: () => mi, FlowJsonSchema: () => ki, FlowSchema: () => wi, FlowSchemas: () => ti, FlowSourceSchema: () => pi, FlowStoreSchema: () => fi, FlowTransformerSchema: () => ui, GenericEnvConfig: () => O2, GenericSettingsConfig: () => J2, HandlersConfig: () => x, HintSchema: () => zi, HintsSchema: () => $i, IdConfig: () => E2, Identifier: () => c2, InitConfig: () => j, LoggerConfigSchema: () => Ue2, LoggerHandlerSchema: () => Be2, LoopSchema: () => fe3, MapSchema: () => be3, MappingResultSchema: () => ke3, MappingSchemas: () => pe3, MatchExpressionSchema: () => Ne3, MatcherSchemas: () => Re2, NextRuleSchema: () => $e2, OptionalPrimitiveValue: () => u2, OrderedPropertiesSchema: () => _2, PartialEventSchema: () => te3, PolicySchema: () => Se3, PrimaryConfig: () => I, PrimitiveValue: () => p, ProcessingControlConfig: () => $2, PropertiesSchema: () => V2, PropertySchema: () => H, PropertyTypeSchema: () => U2, QueueConfig: () => D2, RequiredBoolean: () => s4, RequiredNumber: () => a2, RequiredString: () => r2, RoutableNextSchema: () => ze2, RuleSchema: () => ve3, RulesSchema: () => ye2, RuntimeInstanceConfig: () => N2, SetSchema: () => ge2, SourceSchema: () => Q2, SourceSchemas: () => Ot, SourceTypeSchema: () => Z2, SourcesMapConfig: () => W2, StoreSchemas: () => Kt, Timestamp: () => l, TransformerSchemas: () => Ht, UserSchema: () => K2, UtilitySchemas: () => m, ValueConfigSchema: () => he3, ValueSchema: () => ue3, ValuesSchema: () => me3, VerboseConfig: () => P2, WalkerOSSchemas: () => A2, configJsonSchema: () => Ei, consentJsonSchema: () => de2, contractJsonSchema: () => Fi, contractRuleJsonSchema: () => Ti, createArraySchema: () => Yi, createConsentConfig: () => F2, createDataTransformationConfig: () => M2, createEnumSchema: () => en, createMappingRulesConfig: () => R2, createObjectSchema: () => Qi, createPolicyConfig: () => T2, createTupleSchema: () => tn, destinationJsonSchema: () => Oi, entityJsonSchema: () => ce3, eventJsonSchema: () => ne2, flowConfigJsonSchema: () => Ii, flowJsonSchema: () => ji, loopJsonSchema: () => Pe2, mapJsonSchema: () => Ee3, orderedPropertiesJsonSchema: () => se3, parseConfig: () => Ci, parseFlow: () => Pi, partialEventJsonSchema: () => oe3, policyJsonSchema: () => je, propertiesJsonSchema: () => ae3, ruleJsonSchema: () => Ie2, rulesJsonSchema: () => Je2, safeParseConfig: () => xi, safeParseFlow: () => Di, setJsonSchema: () => De2, sourceJsonSchema: () => Ji, sourceTypeJsonSchema: () => le3, storeJsonSchema: () => Ri, transformerJsonSchema: () => Mi, userJsonSchema: () => re3, validateFlowConfig: () => qi, valueConfigJsonSchema: () => xe, valueJsonSchema: () => Ce2, z: () => n3, zodToSchema: () => nn });
|
|
1595
1631
|
r2 = n3.string();
|
|
1596
1632
|
a2 = n3.number();
|
|
1597
1633
|
s4 = n3.boolean();
|
|
@@ -1620,47 +1656,47 @@ var init_dev = __esm({
|
|
|
1620
1656
|
I = n3.object({ primary: n3.boolean().describe("Mark as primary (only one can be primary)").optional() }).partial();
|
|
1621
1657
|
J2 = n3.object({ settings: n3.any().optional().describe("Implementation-specific configuration") }).partial();
|
|
1622
1658
|
O2 = n3.object({ env: n3.any().optional().describe("Environment dependencies (platform-specific)") }).partial();
|
|
1623
|
-
|
|
1624
|
-
|
|
1659
|
+
N2 = n3.object({ type: n3.string().optional().describe("Instance type identifier"), config: n3.unknown().describe("Instance configuration") }).partial();
|
|
1660
|
+
L2 = n3.object({ collector: n3.unknown().describe("Collector instance (runtime object)"), config: n3.unknown().describe("Configuration"), env: n3.unknown().describe("Environment dependencies") }).partial();
|
|
1625
1661
|
z2 = n3.object({ batch: n3.number().optional().describe("Batch size: bundle N events for batch processing"), batched: n3.unknown().optional().describe("Batch of events to be processed") }).partial();
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
t2(
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
V2 = n3.record(n3.string(),
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
ee2 = n3.object({ name: n3.string().describe('Event name in "entity action" format (e.g., "page view", "product add")'), data: V2.describe("Event-specific properties"), context:
|
|
1662
|
+
$2 = n3.object({ ignore: n3.boolean().describe("Set to true to skip processing").optional(), condition: n3.string().optional().describe("Condition function: return true to process") }).partial();
|
|
1663
|
+
W2 = n3.object({ sources: n3.record(n3.string(), n3.unknown()).describe("Map of source instances") }).partial();
|
|
1664
|
+
q2 = n3.object({ destinations: n3.record(n3.string(), n3.unknown()).describe("Map of destination instances") }).partial();
|
|
1665
|
+
A2 = {};
|
|
1666
|
+
t2(A2, { ConsentSchema: () => G, DeepPartialEventSchema: () => ie3, EntitiesSchema: () => Y3, EntitySchema: () => X3, EventSchema: () => ee2, OrderedPropertiesSchema: () => _2, PartialEventSchema: () => te3, PropertiesSchema: () => V2, PropertySchema: () => H, PropertyTypeSchema: () => U2, SourceSchema: () => Q2, SourceTypeSchema: () => Z2, UserSchema: () => K2, consentJsonSchema: () => de2, entityJsonSchema: () => ce3, eventJsonSchema: () => ne2, orderedPropertiesJsonSchema: () => se3, partialEventJsonSchema: () => oe3, propertiesJsonSchema: () => ae3, sourceTypeJsonSchema: () => le3, userJsonSchema: () => re3 });
|
|
1667
|
+
U2 = n3.lazy(() => n3.union([n3.boolean(), n3.string(), n3.number(), n3.record(n3.string(), H)])).meta({ id: "WalkerOSPropertyType", title: "WalkerOS.PropertyType", description: "Base property value types (boolean, string, number, or nested Property record)." });
|
|
1668
|
+
H = n3.lazy(() => n3.union([U2, n3.array(U2)])).meta({ id: "WalkerOSProperty", title: "WalkerOS.Property", description: "PropertyType or an array of PropertyType. Recursive structure for nested objects and arrays." });
|
|
1669
|
+
V2 = n3.record(n3.string(), H.optional()).meta({ id: "WalkerOSProperties", title: "WalkerOS.Properties", description: "Flexible property collection with optional values." }).describe("Flexible property collection with optional values");
|
|
1670
|
+
_2 = n3.record(n3.string(), n3.tuple([H, n3.number()]).optional()).meta({ id: "WalkerOSOrderedProperties", title: "WalkerOS.OrderedProperties", description: "Ordered properties with [value, order] tuples for priority control." }).describe("Ordered properties with [value, order] tuples for priority control");
|
|
1671
|
+
Z2 = n3.union([n3.enum(["web", "server", "app", "other"]), n3.string()]).meta({ id: "WalkerOSSourceType", title: "WalkerOS.SourceType", description: "Source type identifier. Standard: web, server, app, other. Extensible to custom strings." }).describe("Source type: web, server, app, other, or custom");
|
|
1672
|
+
G = n3.record(n3.string(), n3.boolean()).meta({ id: "WalkerOSConsent", title: "WalkerOS.Consent", description: "Consent state mapping. Keys are consent groups (e.g. marketing, functional), values are booleans for granted/denied." }).describe("Consent requirement mapping (group name to state)");
|
|
1673
|
+
K2 = V2.and(n3.object({ id: n3.string().optional().describe("User identifier"), device: n3.string().optional().describe("Device identifier"), session: n3.string().optional().describe("Session identifier"), hash: n3.string().optional().describe("Hashed identifier"), address: n3.string().optional().describe("User address"), email: n3.string().email().optional().describe("User email address"), phone: n3.string().optional().describe("User phone number"), userAgent: n3.string().optional().describe("Browser user agent string"), browser: n3.string().optional().describe("Browser name"), browserVersion: n3.string().optional().describe("Browser version"), deviceType: n3.string().optional().describe("Device type (mobile, desktop, tablet)"), os: n3.string().optional().describe("Operating system"), osVersion: n3.string().optional().describe("Operating system version"), screenSize: n3.string().optional().describe("Screen dimensions"), language: n3.string().optional().describe("User language"), country: n3.string().optional().describe("User country"), region: n3.string().optional().describe("User region/state"), city: n3.string().optional().describe("User city"), zip: n3.string().optional().describe("User postal code"), timezone: n3.string().optional().describe("User timezone"), ip: n3.string().optional().describe("User IP address"), internal: n3.boolean().optional().describe("Internal user flag (employee, test user)") })).meta({ id: "WalkerOSUser", title: "WalkerOS.User", description: "User identification and attributes." }).describe("User identification and properties");
|
|
1674
|
+
Q2 = V2.and(n3.object({ type: n3.string().describe("Source kind (browser, dataLayer, gtag, ...)"), platform: n3.string().optional().describe("Runtime platform (web, server, app, ios, android, terminal, ...)"), version: n3.string().optional().describe("Deployment version of the source emitter"), schema: n3.string().optional().describe('Event model spec version (collector defaults to "4")'), count: n3.number().int().nonnegative().optional().describe("Emission sequence per run"), trace: n3.string().optional().describe("W3C traceparent full string"), url: n3.string().optional(), referrer: n3.string().optional(), tool: n3.string().optional(), command: n3.string().optional() })).meta({ id: "WalkerOSSource", title: "WalkerOS.Source", description: "Event source information (origin of the event)." }).describe("Event source information");
|
|
1675
|
+
X3 = n3.lazy(() => n3.object({ entity: n3.string().describe("Entity name"), data: V2.describe("Entity-specific properties"), nested: n3.array(X3).optional().describe("Nested child entities"), context: _2.optional().describe("Entity context data") })).meta({ id: "WalkerOSEntity", title: "WalkerOS.Entity", description: "Nested entity structure with recursive nesting support." }).describe("Nested entity structure with recursive nesting support");
|
|
1676
|
+
Y3 = n3.array(X3).meta({ id: "WalkerOSEntities", title: "WalkerOS.Entities", description: "Array of nested entities." }).describe("Array of nested entities");
|
|
1677
|
+
ee2 = n3.object({ name: n3.string().describe('Event name in "entity action" format (e.g., "page view", "product add")'), data: V2.describe("Event-specific properties"), context: _2.describe("Ordered context properties with priorities"), globals: V2.describe("Global properties shared across events"), custom: V2.describe("Custom implementation-specific properties"), user: K2.describe("User identification and attributes"), nested: Y3.describe("Related nested entities"), consent: G.describe("Consent states at event time"), id: c2.describe("W3C span_id, 16 lowercase hex characters"), trigger: r2.describe("Event trigger identifier"), entity: r2.describe("Parsed entity from event name"), action: r2.describe("Parsed action from event name"), timestamp: l.describe("Unix timestamp in milliseconds since epoch"), timing: a2.describe("Event processing timing information"), source: Q2.describe("Event source information") }).meta({ id: "WalkerOSEvent", title: "WalkerOS.Event", description: "Complete walkerOS event structure." }).describe("Complete walkerOS event structure");
|
|
1642
1678
|
te3 = ee2.partial().meta({ id: "WalkerOSPartialEvent", title: "WalkerOS.PartialEvent", description: "Partial event structure with all fields optional." }).describe("Partial event structure with all fields optional");
|
|
1643
1679
|
ie3 = ee2.partial().meta({ id: "WalkerOSDeepPartialEvent", title: "WalkerOS.DeepPartialEvent", description: "Partial event structure with all top-level fields optional." }).describe("Partial event structure with all top-level fields optional");
|
|
1644
1680
|
ne2 = o(ee2);
|
|
1645
1681
|
oe3 = o(te3);
|
|
1646
|
-
re3 = o(
|
|
1682
|
+
re3 = o(K2);
|
|
1647
1683
|
ae3 = o(V2);
|
|
1648
|
-
se3 = o(
|
|
1649
|
-
ce3 = o(
|
|
1650
|
-
le3 = o(
|
|
1651
|
-
de2 = o(
|
|
1684
|
+
se3 = o(_2);
|
|
1685
|
+
ce3 = o(X3);
|
|
1686
|
+
le3 = o(Z2);
|
|
1687
|
+
de2 = o(G);
|
|
1652
1688
|
pe3 = {};
|
|
1653
1689
|
t2(pe3, { ConfigSchema: () => we3, LoopSchema: () => fe3, MapSchema: () => be3, PolicySchema: () => Se3, ResultSchema: () => ke3, RuleSchema: () => ve3, RulesSchema: () => ye2, SetSchema: () => ge2, ValueConfigSchema: () => he3, ValueSchema: () => ue3, ValuesSchema: () => me3, configJsonSchema: () => Oe2, loopJsonSchema: () => Pe2, mapJsonSchema: () => Ee3, policyJsonSchema: () => je, ruleJsonSchema: () => Ie2, rulesJsonSchema: () => Je2, setJsonSchema: () => De2, valueConfigJsonSchema: () => xe, valueJsonSchema: () => Ce2 });
|
|
1654
|
-
ue3 = n3.lazy(() => n3.union([n3.string().describe('String value or property path (e.g., "data.id")'), n3.number().describe("Numeric value"), n3.boolean().describe("Boolean value"), n3.lazy(() =>
|
|
1690
|
+
ue3 = n3.lazy(() => n3.union([n3.string().describe('String value or property path (e.g., "data.id")'), n3.number().describe("Numeric value"), n3.boolean().describe("Boolean value"), n3.lazy(() => B2), n3.array(ue3).describe("Array of values")])).meta({ id: "MappingValue", title: "Mapping.Value", description: "Polymorphic transform primitive used in every mapping field. A string path, constant, operator object (map/loop/set/condition/consent), or array of values." });
|
|
1655
1691
|
me3 = n3.array(ue3).meta({ id: "MappingValues", title: "Mapping.Values", description: "Array of transformation values." }).describe("Array of transformation values");
|
|
1656
1692
|
fe3 = n3.lazy(() => n3.tuple([ue3, ue3]).describe("Loop transformation: [source, transform] tuple for array processing")).meta({ id: "MappingLoop", title: "Mapping.Loop", description: "Loop tuple [source, transform] for iterating and transforming arrays." });
|
|
1657
1693
|
ge2 = n3.lazy(() => n3.array(ue3).describe("Set: Array of values for selection or combination")).meta({ id: "MappingSet", title: "Mapping.Set", description: "Set: array of values for selection or combination." });
|
|
1658
1694
|
be3 = n3.lazy(() => n3.record(n3.string(), ue3).describe("Map: Object mapping keys to transformation values")).meta({ id: "MappingMap", title: "Mapping.Map", description: "Map: object mapping keys to transformation values." });
|
|
1659
|
-
he3 =
|
|
1695
|
+
he3 = B2 = n3.object({ key: n3.string().optional().describe('Property path to extract from event (e.g., "data.id", "user.email")'), value: n3.union([n3.string(), n3.number(), n3.boolean()]).optional().describe("Static primitive value"), fn: n3.string().optional().describe("Custom transformation function as string (serialized)"), map: be3.optional().describe("Object mapping: transform event data to structured output"), loop: fe3.optional().describe("Loop transformation: [source, transform] for array processing"), set: ge2.optional().describe("Set of values: combine or select from multiple values"), consent: G.optional().describe("Required consent states to include this value"), condition: n3.string().optional().describe("Condition function as string: return true to include value"), validate: n3.string().optional().describe("Validation function as string: return true if value is valid") }).refine((e3) => Object.keys(e3).length > 0, { message: "ValueConfig must have at least one property" }).meta({ id: "MappingValueConfig", title: "Mapping.ValueConfig", description: "Object-form value transformation with map/loop/set/condition/consent etc." }).describe("Value transformation configuration with multiple strategies");
|
|
1660
1696
|
Se3 = n3.record(n3.string(), ue3).meta({ id: "MappingPolicy", title: "Mapping.Policy", description: "Policy rules for event pre-processing (key \u2192 value transformation)." }).describe("Policy rules for event pre-processing (key \u2192 value mapping)");
|
|
1661
|
-
ve3 = n3.object({ name: n3.string().optional().describe('Custom event name override (e.g., "view_item" for "product view")'), data: n3.union([ue3, me3]).optional().describe("Data transformation rules for event"), settings: n3.any().optional().describe("Destination-specific settings for this event mapping"), condition: n3.string().optional().describe("Condition function as string: return true to process event"), consent:
|
|
1697
|
+
ve3 = n3.object({ name: n3.string().optional().describe('Custom event name override (e.g., "view_item" for "product view")'), data: n3.union([ue3, me3]).optional().describe("Data transformation rules for event"), settings: n3.any().optional().describe("Destination-specific settings for this event mapping"), condition: n3.string().optional().describe("Condition function as string: return true to process event"), consent: G.optional().describe("Required consent states to process this event"), policy: Se3.optional().describe("Event-level policy overrides (applied after config-level policy)"), batch: n3.number().optional().describe("Batch size: bundle N events for batch processing"), include: n3.array(n3.string()).optional().describe('Event sections (e.g. ["context", "globals"]) flattened into context.data'), ignore: n3.boolean().optional().describe("Skip the event entirely. No push, no side effects. Use for suppression."), silent: n3.boolean().optional().describe("Run side effects (settings.identify, ...) but suppress the destination default push call.") }).meta({ id: "MappingRule", title: "Mapping.Rule", description: "Configuration for transforming a single event at one stage of the flow (source or destination)." }).describe("Mapping rule for specific entity-action combination");
|
|
1662
1698
|
ye2 = n3.record(n3.string(), n3.record(n3.string(), n3.union([ve3, n3.array(ve3)])).optional()).meta({ id: "MappingRules", title: "Mapping.Rules", description: 'Event mapping rules tree: entity \u2192 action \u2192 Rule (or Rule[]). Use "*" as wildcard for entity or action.' }).describe('Event mapping rules: entity \u2192 action \u2192 Rule. Keys match event name split by space. Use "*" as wildcard for entity or action. Priority: exact > entity wildcard > action wildcard > global wildcard (*\u2192*).');
|
|
1663
|
-
we3 = n3.object({ consent:
|
|
1699
|
+
we3 = n3.object({ consent: G.optional().describe("Required consent states to process any events"), data: n3.union([ue3, me3]).optional().describe("Global data transformation applied to all events"), include: n3.array(n3.string()).optional().describe("Event sections to flatten into context.data"), mapping: ye2.optional().describe("Entity-action specific mapping rules"), policy: Se3.optional().describe("Pre-processing policy rules applied before mapping") }).meta({ id: "MappingConfig", title: "Mapping.Config", description: "Shared mapping configuration (consent, data, include, mapping, policy)." }).describe("Shared mapping configuration for sources and destinations");
|
|
1664
1700
|
ke3 = n3.object({ eventMapping: ve3.optional().describe("Resolved mapping rule for event"), mappingKey: n3.string().optional().describe('Mapping key used (e.g., "product.view")') }).meta({ id: "MappingResult", title: "Mapping.Result", description: "Mapping resolution result (matched rule + key)." }).describe("Mapping resolution result");
|
|
1665
1701
|
Ce2 = o(ue3);
|
|
1666
1702
|
xe = o(he3);
|
|
@@ -1671,33 +1707,33 @@ var init_dev = __esm({
|
|
|
1671
1707
|
Ie2 = o(ve3);
|
|
1672
1708
|
Je2 = o(ye2);
|
|
1673
1709
|
Oe2 = o(we3);
|
|
1674
|
-
Re2 = {};
|
|
1675
|
-
t2(Re2, { BatchSchema: () => Ze2, ConfigSchema: () => $e2, ContextSchema: () => Ke, DLQSchema: () => ct2, DataSchema: () => et, DestinationPolicySchema: () => Ge, DestinationsSchema: () => ot, InitDestinationsSchema: () => nt, InitSchema: () => it, InstanceSchema: () => tt, PartialConfigSchema: () => Ve2, PushBatchContextSchema: () => _e2, PushContextSchema: () => Qe, PushEventSchema: () => Xe, PushEventsSchema: () => Ye, PushResultSchema: () => at2, RefSchema: () => rt, ResultSchema: () => st2, batchJsonSchema: () => mt2, configJsonSchema: () => lt2, contextJsonSchema: () => pt, instanceJsonSchema: () => ft, partialConfigJsonSchema: () => dt2, pushContextJsonSchema: () => ut, resultJsonSchema: () => gt2 });
|
|
1676
1710
|
Me2 = {};
|
|
1677
|
-
t2(Me2, {
|
|
1711
|
+
t2(Me2, { BatchSchema: () => Ye, ConfigSchema: () => He2, ContextSchema: () => Ze2, DLQSchema: () => ct2, DataSchema: () => et, DestinationPolicySchema: () => _e2, DestinationsSchema: () => ot, InitDestinationsSchema: () => nt, InitSchema: () => it, InstanceSchema: () => tt, PartialConfigSchema: () => Ve2, PushBatchContextSchema: () => Ke, PushContextSchema: () => Ge, PushEventSchema: () => Qe, PushEventsSchema: () => Xe, PushResultSchema: () => at2, RefSchema: () => rt, ResultSchema: () => st2, batchJsonSchema: () => mt2, configJsonSchema: () => lt2, contextJsonSchema: () => pt, instanceJsonSchema: () => ft, partialConfigJsonSchema: () => dt2, pushContextJsonSchema: () => ut, resultJsonSchema: () => gt2 });
|
|
1712
|
+
Re2 = {};
|
|
1713
|
+
t2(Re2, { MatchExpressionSchema: () => Ne3, NextRuleSchema: () => $e2, RoutableNextSchema: () => ze2 });
|
|
1678
1714
|
Te2 = n3.enum(["eq", "contains", "prefix", "suffix", "regex", "gt", "lt", "exists"]).meta({ id: "MatcherOperator", title: "Matcher.Operator", description: "Supported operators for a match condition." });
|
|
1679
1715
|
Fe2 = n3.object({ key: n3.string(), operator: Te2, value: n3.string(), not: n3.boolean().optional() }).meta({ id: "MatcherCondition", title: "Matcher.Condition", description: "Single match condition (key, operator, value, optional not)." });
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
ze2 = n3.union([n3.string(), n3.array(n3.string()), n3.array(n3.object({ match:
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
t2(
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
Ve2 =
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1716
|
+
Ne3 = n3.union([Fe2, n3.object({ and: n3.array(n3.lazy(() => Ne3)) }), n3.object({ or: n3.array(n3.lazy(() => Ne3)) })]).meta({ id: "MatcherExpression", title: "Matcher.Expression", description: "Boolean expression tree of match conditions (leaf, and, or)." });
|
|
1717
|
+
Le = n3.union([Ne3, n3.literal("*")]);
|
|
1718
|
+
ze2 = n3.union([n3.string(), n3.array(n3.string()), n3.array(n3.object({ match: Le, next: n3.lazy(() => ze2) }))]).meta({ id: "MatcherNext", title: "Matcher.Next", description: "Routable next target: ID, ID list, or list of {match, next} rules." });
|
|
1719
|
+
$e2 = n3.object({ match: Le, next: n3.lazy(() => ze2) }).meta({ id: "MatcherNextRule", title: "Matcher.NextRule", description: "Single routing rule pairing a match expression with a next target." });
|
|
1720
|
+
We2 = {};
|
|
1721
|
+
t2(We2, { CacheRuleSchema: () => qe, CacheSchema: () => Ae2 });
|
|
1722
|
+
qe = n3.object({ match: n3.union([Ne3, n3.literal("*")]).describe("Match expression or wildcard to determine when this rule applies"), key: n3.array(n3.string()).min(1).describe("Dot-path fields used to build the cache key"), ttl: n3.number().positive().describe("Time-to-live in seconds for cached entries"), update: n3.record(n3.string(), ue3).optional().describe("Response mutations applied on cache hit (key \u2192 Value mapping)") }).meta({ id: "CacheRule", title: "Cache.Rule", description: "Single caching rule: when it applies (match), what keys it keys off, TTL, and optional response mutations on hit." });
|
|
1723
|
+
Ae2 = n3.object({ full: n3.boolean().optional().describe("Stop flow on cache HIT (default: false). When true, skip remaining steps and return cached value."), store: n3.string().optional().describe("Store ID for persistent caching (references a configured store)"), rules: n3.array(qe).min(1).describe("Cache rules \u2014 at least one required") }).meta({ id: "CacheConfig", title: "Cache.Config", description: "Top-level cache configuration for a pipeline step (destination / transformer / source ref)." });
|
|
1724
|
+
Be2 = n3.any().meta({ id: "LoggerHandler", title: "Logger.Handler", description: "Custom log handler function (level, ...args) => void" });
|
|
1725
|
+
Ue2 = n3.object({ level: n3.union([n3.number(), n3.enum(["ERROR", "WARN", "INFO", "DEBUG"])]).optional().describe("Minimum log level (default: ERROR)"), handler: Be2.optional().describe("Custom log handler function") }).meta({ id: "LoggerConfig", title: "Logger.Config", description: "Logger configuration (level, handler) to override the collector defaults" });
|
|
1726
|
+
He2 = n3.object({ consent: G.optional().describe("Required consent states to send events to this destination"), settings: n3.any().meta({ id: "DestinationSettings", title: "Destination.Settings", description: "Implementation-specific configuration (destination-defined shape)." }).describe("Implementation-specific configuration").optional(), data: n3.union([ue3, me3]).optional().describe("Global data transformation applied to all events for this destination"), include: n3.array(n3.string()).optional().describe("Event sections to flatten into context.data"), env: n3.any().meta({ id: "DestinationEnv", title: "Destination.Env", description: "Environment dependencies (destination-defined shape) \u2014 platform, SDK, or mock hook." }).describe("Environment dependencies (platform-specific)").optional(), id: c2.describe("Destination instance identifier (defaults to destination key)").optional(), init: n3.boolean().describe("Whether to initialize immediately").optional(), loadScript: n3.boolean().describe("Whether to load external script (for web destinations)").optional(), mapping: ye2.optional().describe("Entity-action specific mapping rules for this destination"), policy: Se3.optional().describe("Pre-processing policy rules applied before event mapping"), queue: n3.boolean().describe("Whether to queue events when consent is not granted").optional(), require: n3.array(n3.string()).optional().describe('Defer destination initialization until these collector events fire (e.g., ["consent"])'), logger: Ue2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)"), before: ze2.optional().describe("Post-collector transformer chain applied before this destination receives the event"), next: ze2.optional().describe("Post-push transformer chain. Runs after destination push completes; push response is available at ingest._response"), cache: Ae2.optional().describe("Cache configuration for deduplication; skip push on cache HIT"), disabled: n3.boolean().describe("Completely skip this destination (no init, no push, no queue)").optional(), mock: n3.unknown().meta({ id: "DestinationMock", title: "Destination.Mock", description: "Return this value instead of calling push(). Dev/testing only." }).optional().describe("Return this value instead of calling push(). Dev/testing only.") }).meta({ id: "DestinationConfig", title: "Destination.Config", description: "Destination configuration: consent, settings, data, env, mapping rules, policy, queue, logger, before/next chains, cache." }).describe("Destination configuration");
|
|
1727
|
+
Ve2 = He2.partial().meta({ id: "DestinationPartialConfig", title: "Destination.PartialConfig", description: "Partial destination configuration with all fields optional." }).describe("Partial destination configuration with all fields optional");
|
|
1728
|
+
_e2 = Se3.describe("Destination policy rules for event pre-processing");
|
|
1729
|
+
Ze2 = n3.object({ collector: n3.unknown().meta({ id: "DestinationContextCollector", title: "Collector.Instance", description: "Collector instance handed to the destination (runtime object)." }).describe("Collector instance (runtime object)"), config: He2.describe("Destination configuration"), data: n3.union([n3.unknown(), n3.array(n3.unknown())]).optional().describe("Transformed event data"), env: n3.unknown().meta({ id: "DestinationContextEnv", title: "Destination.Env", description: "Environment dependencies (destination-defined shape)." }).describe("Environment dependencies") }).meta({ id: "DestinationContext", title: "Destination.Context", description: "Destination context passed to init and push functions." }).describe("Destination context for init and push functions");
|
|
1730
|
+
Ge = Ze2.extend({ mapping: ve3.optional().describe("Resolved mapping rule for this specific event") }).meta({ id: "DestinationPushContext", title: "Destination.PushContext", description: "Destination context for push() with the resolved event mapping rule." }).describe("Push context with event-specific mapping");
|
|
1731
|
+
Ke = Ge.describe("Batch push context with event-specific mapping");
|
|
1732
|
+
Qe = n3.object({ event: ee2.describe("The event to process"), mapping: ve3.optional().describe("Mapping rule for this event") }).meta({ id: "DestinationPushEvent", title: "Destination.PushEvent", description: "Single event paired with its resolved mapping rule (batch element)." }).describe("Event with optional mapping for batch processing");
|
|
1733
|
+
Xe = n3.array(Qe).meta({ id: "DestinationPushEvents", title: "Destination.PushEvents", description: "Array of events with mappings (batch input)." }).describe("Array of events with mappings");
|
|
1734
|
+
Ye = n3.object({ key: n3.string().describe('Batch key (usually mapping key like "product.view")'), events: n3.array(ee2).describe("Array of events in batch"), data: n3.array(n3.union([n3.unknown(), n3.array(n3.unknown())]).optional()).describe("Transformed data for each event"), mapping: ve3.optional().describe("Shared mapping rule for batch") }).meta({ id: "DestinationBatch", title: "Destination.Batch", description: "Batch of events grouped by mapping key for batch delivery." }).describe("Batch of events grouped by mapping key");
|
|
1699
1735
|
et = n3.union([n3.unknown(), n3.array(n3.unknown())]).meta({ id: "DestinationData", title: "Destination.Data", description: "Transformed event data delivered to the destination (Property, undefined, or array)." }).optional().describe("Transformed event data (Property, undefined, or array)");
|
|
1700
|
-
tt = n3.object({ config:
|
|
1736
|
+
tt = n3.object({ config: He2.describe("Destination configuration"), queue: n3.array(ee2).optional().describe("Queued events awaiting consent"), dlq: n3.array(n3.tuple([ee2, n3.unknown()])).optional().describe("Dead letter queue (failed events with errors)"), type: n3.string().optional().describe("Destination type identifier"), env: n3.unknown().optional().describe("Environment dependencies"), init: n3.unknown().optional().describe("Initialization function"), push: n3.unknown().describe("Push function for single events"), pushBatch: n3.unknown().optional().describe("Batch push function"), on: n3.unknown().optional().describe("Event lifecycle hook function") }).meta({ id: "DestinationInstance", title: "Destination.Instance", description: "Destination instance (runtime object with init/push/pushBatch/on)." }).describe("Destination instance (runtime object with functions)");
|
|
1701
1737
|
it = n3.object({ code: tt.describe("Destination instance with implementation"), config: Ve2.optional().describe("Partial configuration overrides"), env: n3.unknown().optional().describe("Partial environment overrides") }).meta({ id: "DestinationInit", title: "Destination.Init", description: "Destination initialization bundle (instance code + config + env)." }).describe("Destination initialization configuration");
|
|
1702
1738
|
nt = n3.record(n3.string(), it).meta({ id: "DestinationInitDestinations", title: "Destination.InitDestinations", description: "Map of destination IDs to initialization configurations." }).describe("Map of destination IDs to initialization configurations");
|
|
1703
1739
|
ot = n3.record(n3.string(), tt).meta({ id: "DestinationDestinations", title: "Destination.Destinations", description: "Map of destination IDs to runtime destination instances." }).describe("Map of destination IDs to runtime instances");
|
|
@@ -1705,23 +1741,23 @@ var init_dev = __esm({
|
|
|
1705
1741
|
at2 = n3.object({ queue: n3.array(ee2).optional().describe("Events queued (awaiting consent)"), error: n3.unknown().optional().describe("Error if push failed") }).meta({ id: "DestinationPushResult", title: "Destination.PushResult", description: "Result of a single destination push (queued events, optional error)." }).describe("Push operation result");
|
|
1706
1742
|
st2 = n3.object({ ok: n3.boolean().describe("True if nothing failed"), event: n3.unknown().optional().describe("The processed event"), done: n3.record(n3.string(), rt).optional().describe("Destinations that processed successfully"), queued: n3.record(n3.string(), rt).optional().describe("Destinations that queued events"), failed: n3.record(n3.string(), rt).optional().describe("Destinations that failed to process") }).meta({ id: "DestinationResult", title: "Destination.Result", description: "Overall push result aggregated across all destinations (done/queued/failed maps)." }).describe("Push result with destination outcomes");
|
|
1707
1743
|
ct2 = n3.array(n3.tuple([ee2, n3.unknown()])).meta({ id: "DestinationDLQ", title: "Destination.DLQ", description: "Dead-letter queue: list of [event, error] tuples." }).describe("Dead letter queue: [(event, error), ...]");
|
|
1708
|
-
lt2 = o(
|
|
1744
|
+
lt2 = o(He2);
|
|
1709
1745
|
dt2 = o(Ve2);
|
|
1710
|
-
pt = o(
|
|
1711
|
-
ut = o(
|
|
1712
|
-
mt2 = o(
|
|
1746
|
+
pt = o(Ze2);
|
|
1747
|
+
ut = o(Ge);
|
|
1748
|
+
mt2 = o(Ye);
|
|
1713
1749
|
ft = o(tt);
|
|
1714
1750
|
gt2 = o(st2);
|
|
1715
1751
|
bt2 = {};
|
|
1716
1752
|
t2(bt2, { CommandTypeSchema: () => ht2, ConfigSchema: () => St, DestinationsSchema: () => Ct, InitConfigSchema: () => yt2, InstanceSchema: () => xt, PushContextSchema: () => wt2, SessionDataSchema: () => vt2, SourcesSchema: () => kt, commandTypeJsonSchema: () => Pt, configJsonSchema: () => Dt, initConfigJsonSchema: () => jt2, instanceJsonSchema: () => Jt, pushContextJsonSchema: () => It, sessionDataJsonSchema: () => Et });
|
|
1717
1753
|
ht2 = n3.union([n3.enum(["action", "config", "consent", "context", "destination", "elb", "globals", "hook", "init", "link", "run", "user", "walker"]), n3.string()]).meta({ id: "CollectorCommandType", title: "Collector.CommandType", description: "Collector command type identifier (standard or extension string)." }).describe("Collector command type: standard commands or custom string for extensions");
|
|
1718
|
-
St = n3.object({ run: n3.boolean().describe("Whether to run collector automatically on initialization").optional(), globalsStatic: V2.describe("Static global properties that persist across collector runs"), sessionStatic: n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorSessionStatic", title: "Collector.SessionStatic", description: "Static session data that persists across collector runs." }).describe("Static session data that persists across collector runs"), logger:
|
|
1754
|
+
St = n3.object({ run: n3.boolean().describe("Whether to run collector automatically on initialization").optional(), globalsStatic: V2.describe("Static global properties that persist across collector runs"), sessionStatic: n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorSessionStatic", title: "Collector.SessionStatic", description: "Static session data that persists across collector runs." }).describe("Static session data that persists across collector runs"), logger: Ue2.optional().describe("Logger configuration (level, handler)") }).meta({ id: "CollectorConfig", title: "Collector.Config", description: "Core collector configuration (globals/session statics, logger)." }).describe("Core collector configuration");
|
|
1719
1755
|
vt2 = V2.and(n3.object({ isStart: n3.boolean().describe("Whether this is a new session start"), storage: n3.boolean().describe("Whether storage is available"), id: c2.describe("Session identifier").optional(), start: l.describe("Session start timestamp").optional(), marketing: n3.literal(true).optional().describe("Marketing attribution flag"), updated: l.describe("Last update timestamp").optional(), isNew: n3.boolean().describe("Whether this is a new session").optional(), device: c2.describe("Device identifier").optional(), count: d.describe("Event count in session").optional(), runs: d.describe("Number of runs").optional() })).meta({ id: "CollectorSessionData", title: "Collector.SessionData", description: "Session state and tracking data." }).describe("Session state and tracking data");
|
|
1720
|
-
yt2 = St.partial().extend({ consent:
|
|
1756
|
+
yt2 = St.partial().extend({ consent: G.optional().describe("Initial consent state"), user: K2.optional().describe("Initial user data"), globals: V2.optional().describe("Initial global properties"), sources: n3.unknown().meta({ id: "CollectorInitSources", title: "Source.InitSources", description: "Source configurations map (id \u2192 InitSource)." }).optional().describe("Source configurations"), destinations: n3.unknown().meta({ id: "CollectorInitDestinations", title: "Destination.InitDestinations", description: "Destination configurations map (id \u2192 Init)." }).optional().describe("Destination configurations"), transformers: n3.unknown().meta({ id: "CollectorInitTransformers", title: "Transformer.Configs", description: "Transformer configurations map (id \u2192 Config)." }).optional().describe("Transformer configurations"), stores: n3.unknown().meta({ id: "CollectorInitStores", title: "Store.Configs", description: "Store configurations map (id \u2192 Config)." }).optional().describe("Store configurations"), custom: V2.optional().describe("Initial custom implementation-specific properties"), hooks: n3.unknown().meta({ id: "CollectorHooks", title: "Collector.Hooks", description: "Pipeline observation hooks." }).optional().describe("Pipeline observation hooks") }).meta({ id: "CollectorInitConfig", title: "Collector.InitConfig", description: "Collector initialization configuration with initial state (consent, user, globals, components, hooks)." }).describe("Collector initialization configuration with initial state");
|
|
1721
1757
|
wt2 = n3.object({ mapping: we3.optional().describe("Source-level mapping configuration") }).meta({ id: "CollectorPushContext", title: "Collector.PushContext", description: "Push context with optional source-level mapping." }).describe("Push context with optional source mapping");
|
|
1722
1758
|
kt = n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorSources", title: "Collector.Sources", description: "Map of source IDs to runtime source instances." }).describe("Map of source IDs to source instances");
|
|
1723
1759
|
Ct = n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorDestinations", title: "Collector.Destinations", description: "Map of destination IDs to runtime destination instances." }).describe("Map of destination IDs to destination instances");
|
|
1724
|
-
xt = n3.object({ push: n3.unknown().describe("Push function for processing events"), command: n3.unknown().describe("Command function for walker commands"), allowed: n3.boolean().describe("Whether event processing is allowed"), config: St.describe("Current collector configuration"), consent:
|
|
1760
|
+
xt = n3.object({ push: n3.unknown().describe("Push function for processing events"), command: n3.unknown().describe("Command function for walker commands"), allowed: n3.boolean().describe("Whether event processing is allowed"), config: St.describe("Current collector configuration"), consent: G.describe("Current consent state"), custom: V2.describe("Custom implementation-specific properties"), sources: kt.describe("Registered source instances"), destinations: Ct.describe("Registered destination instances"), globals: V2.describe("Current global properties"), hooks: n3.unknown().describe("Lifecycle hook functions"), on: n3.unknown().describe("Event lifecycle configuration"), queue: n3.array(ee2).describe("Queued events awaiting processing"), round: n3.number().describe("Collector run count (increments with each run)"), session: n3.union([vt2]).describe("Current session state"), timing: n3.number().describe("Event processing timing information"), user: K2.describe("Current user data") }).meta({ id: "CollectorInstance", title: "Collector.Instance", description: "Collector instance (runtime object with push/command + full state and component maps)." }).describe("Collector instance with state and methods");
|
|
1725
1761
|
Pt = o(ht2);
|
|
1726
1762
|
Dt = o(St);
|
|
1727
1763
|
Et = o(vt2);
|
|
@@ -1729,34 +1765,34 @@ var init_dev = __esm({
|
|
|
1729
1765
|
It = o(wt2);
|
|
1730
1766
|
Jt = o(xt);
|
|
1731
1767
|
Ot = {};
|
|
1732
|
-
t2(Ot, { BaseEnvSchema: () =>
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
Tt =
|
|
1736
|
-
Ft = n3.object({ type: n3.string().describe('Source type identifier (e.g., "browser", "dataLayer")'), config:
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
zt = n3.record(n3.string(),
|
|
1768
|
+
t2(Ot, { BaseEnvSchema: () => Mt, ConfigSchema: () => Rt, InitSchema: () => Nt, InitSourceSchema: () => Lt, InitSourcesSchema: () => zt, InstanceSchema: () => Ft, PartialConfigSchema: () => Tt, baseEnvJsonSchema: () => $t, configJsonSchema: () => Wt, initSourceJsonSchema: () => Bt, initSourcesJsonSchema: () => Ut, instanceJsonSchema: () => At, partialConfigJsonSchema: () => qt });
|
|
1769
|
+
Mt = n3.object({ push: n3.unknown().meta({ id: "SourcePushFn", title: "Source.PushFn", description: "Collector push function passed to the source via dependency injection." }).describe("Collector push function"), command: n3.unknown().meta({ id: "SourceCommandFn", title: "Source.CommandFn", description: "Collector command function passed to the source." }).describe("Collector command function"), sources: n3.unknown().optional().describe("Map of registered source instances"), elb: n3.unknown().meta({ id: "ElbFn", title: "Elb.Fn", description: "Public `elb(...)` API function alias for collector.push." }).describe("Public API function (alias for collector.push)") }).catchall(n3.unknown()).meta({ id: "SourceBaseEnv", title: "Source.BaseEnv", description: "Base environment for source dependency injection; platform-specific sources extend this." }).describe("Base environment for dependency injection - platform-specific sources extend this");
|
|
1770
|
+
Rt = we3.extend({ settings: n3.any().meta({ id: "SourceSettings", title: "Source.Settings", description: "Implementation-specific configuration (source-defined shape)." }).describe("Implementation-specific configuration").optional(), env: Mt.optional().describe("Environment dependencies (platform-specific)"), id: c2.describe("Source identifier (defaults to source key)").optional(), primary: n3.boolean().describe("Mark as primary (only one can be primary)").optional(), require: n3.array(n3.string()).optional().describe('Defer source initialization until these collector events fire (e.g., ["consent"])'), logger: Ue2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during source registration (boolean enables defaults, object configures specifics)"), ingest: n3.union([ue3, me3]).optional().describe("Ingest metadata extraction mapping. Extracts values from raw request objects (Express req, Lambda event) using mapping syntax."), disabled: n3.boolean().describe("Completely skip this source (no init, no event capture)").optional(), init: n3.boolean().optional().describe("Init lifecycle flag set by collector to true after Instance.init() runs") }).meta({ id: "SourceConfig", title: "Source.Config", description: "Source configuration with mapping, environment, and lifecycle hooks." }).describe("Source configuration with mapping and environment");
|
|
1771
|
+
Tt = Rt.partial().meta({ id: "SourcePartialConfig", title: "Source.PartialConfig", description: "Partial source configuration with all fields optional." }).describe("Partial source configuration with all fields optional");
|
|
1772
|
+
Ft = n3.object({ type: n3.string().describe('Source type identifier (e.g., "browser", "dataLayer")'), config: Rt.describe("Current source configuration"), push: n3.any().meta({ id: "SourceInstancePushFn", title: "Source.PushFn", description: "Push function \u2014 THE HANDLER (flexible signature for platform compatibility)." }).describe("Push function - THE HANDLER (flexible signature for platform compatibility)"), destroy: n3.any().meta({ id: "SourceDestroyFn", title: "Source.DestroyFn", description: "Cleanup function called when the source is removed." }).optional().describe("Cleanup function called when source is removed"), on: n3.unknown().optional().describe("Lifecycle hook function for event types") }).meta({ id: "SourceInstance", title: "Source.Instance", description: "Source instance (runtime object with push handler and lifecycle methods)." }).describe("Source instance with push handler and lifecycle methods");
|
|
1773
|
+
Nt = n3.any().meta({ id: "SourceInit", title: "Source.Init", description: "Source initialization function: (config, env) => Instance | Promise<Instance>." }).describe("Source initialization function: (config, env) => Instance | Promise<Instance>");
|
|
1774
|
+
Lt = n3.object({ code: Nt.describe("Source initialization function"), config: Tt.optional().describe("Partial configuration overrides"), env: Mt.partial().optional().describe("Partial environment overrides"), primary: n3.boolean().optional().describe("Mark as primary source (only one can be primary)") }).meta({ id: "SourceInitSource", title: "Source.InitSource", description: "Source initialization bundle (init function + config + env + primary flag)." }).describe("Source initialization configuration");
|
|
1775
|
+
zt = n3.record(n3.string(), Lt).meta({ id: "SourceInitSources", title: "Source.InitSources", description: "Map of source IDs to initialization configurations." }).describe("Map of source IDs to initialization configurations");
|
|
1776
|
+
$t = o(Mt);
|
|
1740
1777
|
Wt = o(Rt);
|
|
1741
|
-
qt = o(
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
Ut = o(
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
Xt =
|
|
1755
|
-
Yt =
|
|
1756
|
-
|
|
1757
|
-
ei = o(Yt);
|
|
1778
|
+
qt = o(Tt);
|
|
1779
|
+
At = o(Ft);
|
|
1780
|
+
Bt = o(Lt);
|
|
1781
|
+
Ut = o(zt);
|
|
1782
|
+
Ht = {};
|
|
1783
|
+
t2(Ht, { ConfigSchema: () => Vt, PartialConfigSchema: () => _t, configJsonSchema: () => Zt, partialConfigJsonSchema: () => Gt });
|
|
1784
|
+
Vt = n3.object({ settings: n3.any().meta({ id: "TransformerSettings", title: "Transformer.Settings", description: "Implementation-specific configuration (transformer-defined shape)." }).describe("Implementation-specific configuration").optional(), env: n3.any().meta({ id: "TransformerEnv", title: "Transformer.Env", description: "Environment dependencies (transformer-defined shape)." }).describe("Environment dependencies (platform-specific)").optional(), id: c2.describe("Transformer instance identifier (defaults to transformer key)").optional(), logger: Ue2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), before: ze2.optional().describe("Pre-transformer chain that runs before this transformer pushes"), next: ze2.optional().describe("Graph wiring to the next transformer in the chain"), cache: Ae2.optional().describe("Step-level cache configuration for this transformer"), init: n3.boolean().describe("Whether to initialize immediately").optional(), disabled: n3.boolean().describe("Completely skip this transformer in chains").optional(), mock: n3.unknown().meta({ id: "TransformerMock", title: "Transformer.Mock", description: "Return this value instead of calling push(). Dev/testing only." }).optional().describe("Return this value instead of calling push(). Global mock for all chains. Dev/testing only."), chainMocks: n3.record(n3.string(), n3.unknown().meta({ id: "TransformerChainMock", title: "Transformer.ChainMock", description: "Chain-path-specific mock value. Dev/testing only." })).optional().describe("Path-specific mock values keyed by chain path. Takes precedence over global mock. Dev/testing only.") }).meta({ id: "TransformerConfig", title: "Transformer.Config", description: "Transformer configuration (settings, env, chain wiring, cache, mocks)." }).describe("Transformer configuration");
|
|
1785
|
+
_t = Vt.partial().meta({ id: "TransformerPartialConfig", title: "Transformer.PartialConfig", description: "Partial transformer configuration with all fields optional." }).describe("Partial transformer configuration with all fields optional");
|
|
1786
|
+
Zt = o(Vt);
|
|
1787
|
+
Gt = o(_t);
|
|
1788
|
+
Kt = {};
|
|
1789
|
+
t2(Kt, { ConfigSchema: () => Qt, PartialConfigSchema: () => Xt, configJsonSchema: () => Yt, partialConfigJsonSchema: () => ei });
|
|
1790
|
+
Qt = n3.object({ settings: n3.unknown().meta({ id: "StoreSettings", title: "Store.Settings", description: "Implementation-specific configuration (store-defined shape)." }).describe("Implementation-specific configuration").optional(), env: n3.unknown().meta({ id: "StoreEnv", title: "Store.Env", description: "Environment dependencies (store-defined shape)." }).describe("Environment dependencies (platform-specific)").optional(), id: c2.describe("Store instance identifier (defaults to store key)").optional(), logger: Ue2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during store registration (boolean enables defaults, object configures specifics)") }).meta({ id: "StoreConfig", title: "Store.Config", description: "Store configuration (settings, env, logger) \u2014 key-value infrastructure component." }).describe("Store configuration");
|
|
1791
|
+
Xt = Qt.partial().meta({ id: "StorePartialConfig", title: "Store.PartialConfig", description: "Partial store configuration with all fields optional." }).describe("Partial store configuration with all fields optional");
|
|
1792
|
+
Yt = o(Qt);
|
|
1793
|
+
ei = o(Xt);
|
|
1758
1794
|
ti = {};
|
|
1759
|
-
t2(ti, { BundlePackageSchema: () => ri, BundleSchema: () => ai, CodeSchema: () => si, ConfigSchema: () => yi, ContractActionsSchema: () => bi, ContractEventsSchema: () => hi, ContractRuleSchema: () => Si, ContractSchema: () => vi, ContractSchemaEntry: () => gi, DestinationSchema: () => mi, FlowSchema: () => wi, JsonSchema: () => ki, SettingsSchema: () => ni, SourceSchema: () => pi, StepExampleSchema: () => li, StepExamplesSchema: () => di, StoreSchema: () => fi, TransformerSchema: () => ui, TriggerDescriptorSchema: () => ci, VariablesSchema: () => ii, configJsonSchema: () => Ei, contractJsonSchema: () => Fi, contractRuleJsonSchema: () => Ti, destinationJsonSchema: () => Oi, flowConfigJsonSchema: () => Ii, flowJsonSchema: () => ji, parseConfig: () => Ci, parseFlow: () => Pi, safeParseConfig: () => xi, safeParseFlow: () => Di, sourceJsonSchema: () => Ji, storeJsonSchema: () =>
|
|
1795
|
+
t2(ti, { BundlePackageSchema: () => ri, BundleSchema: () => ai, CodeSchema: () => si, ConfigSchema: () => yi, ContractActionsSchema: () => bi, ContractEventsSchema: () => hi, ContractRuleSchema: () => Si, ContractSchema: () => vi, ContractSchemaEntry: () => gi, DestinationSchema: () => mi, FlowSchema: () => wi, JsonSchema: () => ki, SettingsSchema: () => ni, SourceSchema: () => pi, StepExampleSchema: () => li, StepExamplesSchema: () => di, StoreSchema: () => fi, TransformerSchema: () => ui, TriggerDescriptorSchema: () => ci, VariablesSchema: () => ii, configJsonSchema: () => Ei, contractJsonSchema: () => Fi, contractRuleJsonSchema: () => Ti, destinationJsonSchema: () => Oi, flowConfigJsonSchema: () => Ii, flowJsonSchema: () => ji, parseConfig: () => Ci, parseFlow: () => Pi, safeParseConfig: () => xi, safeParseFlow: () => Di, sourceJsonSchema: () => Ji, storeJsonSchema: () => Ri, transformerJsonSchema: () => Mi });
|
|
1760
1796
|
ii = n3.record(n3.string(), n3.unknown()).meta({ id: "FlowVariables", title: "Flow.Variables", description: "Reusable values referenced via $var.name (with optional deep paths). Whole-string refs preserve native type; inline interpolation requires scalars." });
|
|
1761
1797
|
ni = n3.record(n3.string(), n3.unknown()).meta({ id: "FlowSettings", title: "Flow.Settings", description: "Free-form key-value settings consumed by the platform runtime." }).describe("Free-form platform settings bag");
|
|
1762
1798
|
oi = /^(@[a-z0-9\-~][a-z0-9\-._~]*\/)?[a-z0-9\-~][a-z0-9\-._~]*$/;
|
|
@@ -1766,9 +1802,9 @@ var init_dev = __esm({
|
|
|
1766
1802
|
ci = n3.object({ type: n3.string().optional().describe("Trigger mechanism (e.g., click, POST, load)"), options: n3.unknown().optional().describe("Mechanism-specific options") }).meta({ id: "TriggerDescriptor", title: "Trigger.Descriptor", description: "Source trigger metadata (mechanism + options) used by step examples." });
|
|
1767
1803
|
li = n3.object({ title: n3.string().optional().describe("Human-readable title (overrides default heading)"), description: n3.string().optional().describe("Human-readable description"), public: n3.boolean().optional().describe("Whether this example is shown in docs/UI/MCP default output (default: true). Set false for test-only fixtures."), in: n3.unknown().optional().describe("Input to the step"), trigger: ci.optional().describe("Source trigger metadata"), mapping: n3.unknown().optional().describe("Mapping configuration"), out: n3.unknown().optional().describe("Expected output from the step"), command: n3.enum(["config", "consent", "user", "run"]).optional().describe("Invoke elb('walker <command>', in) instead of pushing in as an event") }).meta({ id: "FlowStepExample", title: "Flow.StepExample", description: "Named example with input/output pair used for step testing." }).describe("Named example with input/output pair");
|
|
1768
1804
|
di = n3.record(n3.string(), li).meta({ id: "FlowStepExamples", title: "Flow.StepExamples", description: "Named step examples keyed by scenario name." }).describe("Named step examples for testing and documentation");
|
|
1769
|
-
pi = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/web-source-browser@2.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "sourceExpress") or an inline code object with push function'), config: n3.looseObject({ setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during source registration (boolean enables defaults, object configures specifics)") }).meta({ id: "FlowSourceConfig", title: "Source.Config", description: "Source-specific configuration object (Source.Config)." }).optional().describe("Source-specific configuration object"), env: n3.unknown().meta({ id: "FlowSourceEnv", title: "Source.BaseEnv", description: "Source environment configuration (Source.BaseEnv overrides)." }).optional().describe("Source environment configuration"), primary: n3.boolean().optional().describe("Mark as primary source (provides main elb). Only one source should be primary."), variables: ii.optional().describe("Source-level variables (highest priority in cascade)"), next: ze2.optional().describe("Pre-collector transformer chain. String, string[], or NextRule[] for conditional routing based on ingest data."), before: ze2.optional().describe("Pre-source transformer chain (consent-exempt). Handles transport-level preprocessing."), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache:
|
|
1770
|
-
ui = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/transformer-enricher@1.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "transformerEnricher") or an inline code object with push function'), config: n3.unknown().meta({ id: "FlowTransformerConfig", title: "Transformer.Config", description: "Transformer-specific configuration object." }).optional().describe("Transformer-specific configuration object"), env: n3.unknown().meta({ id: "FlowTransformerEnv", title: "Transformer.Env", description: "Transformer environment configuration." }).optional().describe("Transformer environment configuration"), before: ze2.optional().describe("Pre-transformer chain. Runs before this transformer push function."), next: ze2.optional().describe("Next transformer in chain. String, string[], or NextRule[] for conditional routing."), variables: ii.optional().describe("Transformer-level variables (highest priority in cascade)"), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache:
|
|
1771
|
-
mi = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/web-destination-gtag@2.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "destinationAnalytics") or an inline code object with push function'), config: n3.looseObject({ setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)") }).meta({ id: "FlowDestinationConfig", title: "Destination.Config", description: "Destination-specific configuration object." }).optional().describe("Destination-specific configuration object"), env: n3.unknown().meta({ id: "FlowDestinationEnv", title: "Destination.Env", description: "Destination environment configuration." }).optional().describe("Destination environment configuration"), variables: ii.optional().describe("Destination-level variables (highest priority in cascade)"), before: ze2.optional().describe("Post-collector transformer chain. String, string[], or NextRule[] for conditional routing."), next: ze2.optional().describe("Post-push transformer chain. Push response available at context.ingest._response."), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache:
|
|
1805
|
+
pi = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/web-source-browser@2.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "sourceExpress") or an inline code object with push function'), config: n3.looseObject({ setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during source registration (boolean enables defaults, object configures specifics)") }).meta({ id: "FlowSourceConfig", title: "Source.Config", description: "Source-specific configuration object (Source.Config)." }).optional().describe("Source-specific configuration object"), env: n3.unknown().meta({ id: "FlowSourceEnv", title: "Source.BaseEnv", description: "Source environment configuration (Source.BaseEnv overrides)." }).optional().describe("Source environment configuration"), primary: n3.boolean().optional().describe("Mark as primary source (provides main elb). Only one source should be primary."), variables: ii.optional().describe("Source-level variables (highest priority in cascade)"), next: ze2.optional().describe("Pre-collector transformer chain. String, string[], or NextRule[] for conditional routing based on ingest data."), before: ze2.optional().describe("Pre-source transformer chain (consent-exempt). Handles transport-level preprocessing."), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache: Ae2.optional().describe("Cache configuration for this source (match \u2192 key \u2192 ttl rules)") }).meta({ id: "FlowSource", title: "Flow.Source", description: "Source package reference with configuration, env, chains, and examples." }).describe("Source package reference with configuration");
|
|
1806
|
+
ui = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/transformer-enricher@1.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "transformerEnricher") or an inline code object with push function'), config: n3.unknown().meta({ id: "FlowTransformerConfig", title: "Transformer.Config", description: "Transformer-specific configuration object." }).optional().describe("Transformer-specific configuration object"), env: n3.unknown().meta({ id: "FlowTransformerEnv", title: "Transformer.Env", description: "Transformer environment configuration." }).optional().describe("Transformer environment configuration"), before: ze2.optional().describe("Pre-transformer chain. Runs before this transformer push function."), next: ze2.optional().describe("Next transformer in chain. String, string[], or NextRule[] for conditional routing."), variables: ii.optional().describe("Transformer-level variables (highest priority in cascade)"), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache: Ae2.optional().describe("Cache configuration for this transformer (match \u2192 key \u2192 ttl rules)") }).meta({ id: "FlowTransformer", title: "Flow.Transformer", description: "Transformer package reference with configuration, env, chains, and cache." }).describe("Transformer package reference with configuration");
|
|
1807
|
+
mi = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe('Package specifier with optional version (e.g., "@walkeros/web-destination-gtag@2.0.0")'), code: n3.union([n3.string(), si]).optional().describe('Either a named export string (e.g., "destinationAnalytics") or an inline code object with push function'), config: n3.looseObject({ setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)") }).meta({ id: "FlowDestinationConfig", title: "Destination.Config", description: "Destination-specific configuration object." }).optional().describe("Destination-specific configuration object"), env: n3.unknown().meta({ id: "FlowDestinationEnv", title: "Destination.Env", description: "Destination environment configuration." }).optional().describe("Destination environment configuration"), variables: ii.optional().describe("Destination-level variables (highest priority in cascade)"), before: ze2.optional().describe("Post-collector transformer chain. String, string[], or NextRule[] for conditional routing."), next: ze2.optional().describe("Post-push transformer chain. Push response available at context.ingest._response."), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)"), cache: Ae2.optional().describe("Cache configuration for this destination (match \u2192 key \u2192 ttl rules)") }).meta({ id: "FlowDestination", title: "Flow.Destination", description: "Destination package reference with configuration, env, chains, and cache." }).describe("Destination package reference with configuration");
|
|
1772
1808
|
fi = n3.object({ package: n3.string().min(1, "Package name cannot be empty").optional().describe("Store package specifier with optional version"), code: n3.union([n3.string(), si]).optional().describe("Named export string or inline code definition"), config: n3.looseObject({ setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during store registration (boolean enables defaults, object configures specifics)") }).meta({ id: "FlowStoreConfig", title: "Store.Config", description: "Store-specific configuration object." }).optional().describe("Store-specific configuration object"), env: n3.unknown().meta({ id: "FlowStoreEnv", title: "Store.Env", description: "Store environment configuration." }).optional().describe("Store environment configuration"), variables: ii.optional().describe("Store-level variables (highest priority in cascade)"), examples: di.optional().describe("Named step examples for testing and documentation (stripped during bundling)") }).meta({ id: "FlowStore", title: "Flow.Store", description: "Store package reference with configuration, env, and examples." }).describe("Store package reference with configuration");
|
|
1773
1809
|
gi = n3.record(n3.string(), n3.unknown()).meta({ id: "FlowContractSchemaEntry", title: "Flow.ContractSchemaEntry", description: "JSON Schema object for event validation with description/examples annotations." }).describe("JSON Schema object for event validation with description/examples annotations");
|
|
1774
1810
|
bi = n3.record(n3.string(), gi).meta({ id: "FlowContractActions", title: "Flow.ContractActions", description: "Action-level contract entries keyed by action name." }).describe("Action-level contract entries");
|
|
@@ -1783,15 +1819,19 @@ var init_dev = __esm({
|
|
|
1783
1819
|
Ii = o(yi);
|
|
1784
1820
|
Ji = o(pi);
|
|
1785
1821
|
Oi = o(mi);
|
|
1786
|
-
|
|
1787
|
-
|
|
1822
|
+
Mi = o(ui);
|
|
1823
|
+
Ri = o(fi);
|
|
1788
1824
|
Ti = o(Si);
|
|
1789
1825
|
Fi = o(vi);
|
|
1790
|
-
|
|
1791
|
-
zi =
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1826
|
+
Li = Ni.object({ lang: Ni.string().optional().describe("Language identifier (e.g. json, sql, bash, typescript)"), code: Ni.string().describe("Code snippet") });
|
|
1827
|
+
zi = Ni.object({ text: Ni.string().describe("Short actionable hint text focused on walkerOS usage"), code: Ni.array(Li).optional().describe("Optional code snippets") });
|
|
1828
|
+
$i = Ni.record(Ni.string(), zi).describe("Keyed hints for AI consumption \u2014 lightweight context beyond schemas and examples");
|
|
1829
|
+
Wi = n3.object({ param: n3.string().describe("Lowercase URL parameter name. Match is case-insensitive on lookup."), platform: n3.string().describe("Canonical platform identifier (lowercase, kebab-case).") });
|
|
1830
|
+
Ai = /\$store\.([a-zA-Z_][a-zA-Z0-9_]*)/g;
|
|
1831
|
+
Bi = /\$env\.([A-Za-z_]\w*)(=[^"}\s]*)?/g;
|
|
1832
|
+
Ui = /\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?/g;
|
|
1833
|
+
Hi = /\$(var|store|flow|secret):([a-zA-Z_][a-zA-Z0-9_]*)/g;
|
|
1834
|
+
rn = { source: Ot.configJsonSchema, destination: Me2.configJsonSchema };
|
|
1795
1835
|
}
|
|
1796
1836
|
});
|
|
1797
1837
|
|
|
@@ -3075,22 +3115,29 @@ function validateReference(type, name, ref) {
|
|
|
3075
3115
|
throw new Error(`${type} "${name}": Must specify either package or code.`);
|
|
3076
3116
|
}
|
|
3077
3117
|
}
|
|
3078
|
-
function generateInlineCode(inline, config, env,
|
|
3118
|
+
function generateInlineCode(inline, config, env, chains, isDestination) {
|
|
3079
3119
|
const pushFn = inline.push.replace("$code:", "");
|
|
3080
3120
|
const initFn = inline.init ? inline.init.replace("$code:", "") : void 0;
|
|
3081
3121
|
const typeLine = inline.type ? `type: '${inline.type}',` : "";
|
|
3082
|
-
const
|
|
3122
|
+
const chainLines = [];
|
|
3123
|
+
if (chains?.before !== void 0) {
|
|
3124
|
+
chainLines.push(`before: ${JSON.stringify(chains.before)}`);
|
|
3125
|
+
}
|
|
3126
|
+
if (chains?.next !== void 0) {
|
|
3127
|
+
chainLines.push(`next: ${JSON.stringify(chains.next)}`);
|
|
3128
|
+
}
|
|
3129
|
+
const chainBlock = chainLines.length ? `,
|
|
3130
|
+
${chainLines.join(",\n ")}` : "";
|
|
3083
3131
|
if (isDestination) {
|
|
3084
3132
|
return `{
|
|
3085
3133
|
code: {
|
|
3086
3134
|
${typeLine}
|
|
3087
|
-
config: ${
|
|
3135
|
+
config: ${processConfigValue(config || {})},
|
|
3088
3136
|
${initFn ? `init: ${initFn},` : ""}
|
|
3089
3137
|
push: ${pushFn}
|
|
3090
3138
|
},
|
|
3091
|
-
config: ${
|
|
3092
|
-
env: ${
|
|
3093
|
-
${chainLine.slice(0, -1)}` : ""}
|
|
3139
|
+
config: ${processConfigValue(config || {})},
|
|
3140
|
+
env: ${processConfigValue(env || {})}${chainBlock}
|
|
3094
3141
|
}`;
|
|
3095
3142
|
}
|
|
3096
3143
|
return `{
|
|
@@ -3100,9 +3147,8 @@ function generateInlineCode(inline, config, env, chain, chainPropertyName, isDes
|
|
|
3100
3147
|
${initFn ? `init: ${initFn},` : ""}
|
|
3101
3148
|
push: ${pushFn}
|
|
3102
3149
|
}),
|
|
3103
|
-
config: ${
|
|
3104
|
-
env: ${
|
|
3105
|
-
${chainLine.slice(0, -1)}` : ""}
|
|
3150
|
+
config: ${processConfigValue(config || {})},
|
|
3151
|
+
env: ${processConfigValue(env || {})}${chainBlock}
|
|
3106
3152
|
}`;
|
|
3107
3153
|
}
|
|
3108
3154
|
async function copyIncludes(includes, sourceDir, outputDir, logger) {
|
|
@@ -3938,13 +3984,13 @@ function buildSplitConfigObject(flowSettings, explicitCodeImports) {
|
|
|
3938
3984
|
});
|
|
3939
3985
|
const sourcesEntries = Object.entries(sources).filter(([, source]) => source.package || hasCodeReference(source.code)).map(([key, source]) => {
|
|
3940
3986
|
if (isInlineCode(source.code)) {
|
|
3941
|
-
return ` ${key}: ${generateInlineCode(source.code, source.config || {}, source.env, source.next
|
|
3987
|
+
return ` ${key}: ${generateInlineCode(source.code, source.config || {}, source.env, { next: source.next })}`;
|
|
3942
3988
|
}
|
|
3943
3989
|
return buildSplitStepEntry("sources", key, source);
|
|
3944
3990
|
});
|
|
3945
3991
|
const destinationsEntries = Object.entries(destinations).filter(([, dest]) => dest.package || hasCodeReference(dest.code)).map(([key, dest]) => {
|
|
3946
3992
|
if (isInlineCode(dest.code)) {
|
|
3947
|
-
return ` ${key}: ${generateInlineCode(dest.code, dest.config || {}, dest.env, dest.before,
|
|
3993
|
+
return ` ${key}: ${generateInlineCode(dest.code, dest.config || {}, dest.env, { before: dest.before, next: dest.next }, true)}`;
|
|
3948
3994
|
}
|
|
3949
3995
|
return buildSplitStepEntry("destinations", key, dest);
|
|
3950
3996
|
});
|
|
@@ -3952,7 +3998,7 @@ function buildSplitConfigObject(flowSettings, explicitCodeImports) {
|
|
|
3952
3998
|
([, transformer]) => transformer.package || hasCodeReference(transformer.code)
|
|
3953
3999
|
).map(([key, transformer]) => {
|
|
3954
4000
|
if (isInlineCode(transformer.code)) {
|
|
3955
|
-
return ` ${key}: ${generateInlineCode(transformer.code, transformer.config || {}, transformer.env, transformer.
|
|
4001
|
+
return ` ${key}: ${generateInlineCode(transformer.code, transformer.config || {}, transformer.env, { before: transformer.before, next: transformer.next })}`;
|
|
3956
4002
|
}
|
|
3957
4003
|
return buildSplitStepEntry("transformers", key, transformer);
|
|
3958
4004
|
});
|
|
@@ -5707,7 +5753,7 @@ function He(e3, n4) {
|
|
|
5707
5753
|
}
|
|
5708
5754
|
async function Ne2(e3) {
|
|
5709
5755
|
const n4 = X({ globalsStatic: {}, sessionStatic: {}, run: true }, e3, { merge: false, extend: false }), t3 = { level: e3.logger?.level, handler: e3.logger?.handler }, o2 = _e(t3), s5 = { ...n4.globalsStatic, ...e3.globals }, a3 = { allowed: false, config: n4, consent: e3.consent || {}, custom: e3.custom || {}, destinations: {}, transformers: {}, stores: {}, globals: s5, hooks: e3.hooks || {}, logger: o2, on: {}, queue: [], round: 0, session: void 0, status: { startedAt: Date.now(), in: 0, out: 0, failed: 0, sources: {}, destinations: {} }, timing: Date.now(), user: e3.user || {}, sources: {}, pending: { destinations: {} }, push: void 0, command: void 0 };
|
|
5710
|
-
a3.push = He(a3, (e4) => ({ timing: Math.round((Date.now() - a3.timing) / 10) / 100, source: { type: "collector", schema: "4", version: "4.0.1
|
|
5756
|
+
a3.push = He(a3, (e4) => ({ timing: Math.round((Date.now() - a3.timing) / 10) / 100, source: { type: "collector", schema: "4", version: "4.0.1" }, ...e4 })), a3.command = (function(e4, n5) {
|
|
5711
5757
|
return Je(async (t4, o3, s6) => await Me(async () => await n5(e4, t4, o3, s6), () => ve2({ ok: false }))(), "Command", e4.hooks, e4.logger);
|
|
5712
5758
|
})(a3, De);
|
|
5713
5759
|
const c3 = e3.stores || {};
|
|
@@ -9017,7 +9063,7 @@ function validateMapping(input) {
|
|
|
9017
9063
|
// src/commands/validate/validators/entry.ts
|
|
9018
9064
|
init_dist();
|
|
9019
9065
|
import Ajv from "ajv";
|
|
9020
|
-
var CLIENT_HEADER = "walkeros-cli/4.0.1
|
|
9066
|
+
var CLIENT_HEADER = "walkeros-cli/4.0.1";
|
|
9021
9067
|
var SECTIONS = ["destinations", "sources", "transformers"];
|
|
9022
9068
|
function resolveEntry(path19, flowConfig) {
|
|
9023
9069
|
const flows = flowConfig.flows;
|