@walkeros/cli 4.8.1 → 4.8.3-next-1793115089237
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 +115 -3
- package/README.md +2 -2
- package/dist/cli.js +4149 -4149
- package/dist/dev.d.ts +51 -3
- package/dist/dev.js +186 -0
- package/dist/dev.js.map +1 -1
- package/dist/examples/README.md +12 -1
- package/dist/examples/contracts/app.json +261 -0
- package/dist/examples/contracts/base.json +708 -0
- package/dist/examples/contracts/ecommerce.json +963 -0
- package/dist/examples/contracts/leadgen.json +240 -0
- package/dist/examples/contracts/publisher.json +372 -0
- package/dist/examples/contracts/saas.json +229 -0
- package/dist/examples/contracts/travel.json +234 -0
- package/dist/examples/customers/README.md +4 -1
- package/dist/examples/event.json +1 -1
- package/dist/examples/flow-complete.json +107 -130
- package/dist/examples/flow-complete.md +12 -10
- package/dist/examples/flow-order-complete.json +1 -1
- package/dist/examples/flow.json +1 -1
- package/dist/examples/index.d.ts +34 -4
- package/dist/examples/index.js +128 -139
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/shared/README.md +4 -0
- package/dist/index.d.ts +63 -223
- package/dist/index.js +572 -992
- package/dist/index.js.map +1 -1
- package/dist/validate.d.ts +1 -1
- package/dist/validate.js +337 -204
- package/dist/validate.js.map +1 -1
- package/examples/README.md +12 -1
- package/examples/contracts/app.json +261 -0
- package/examples/contracts/base.json +708 -0
- package/examples/contracts/ecommerce.json +963 -0
- package/examples/contracts/leadgen.json +240 -0
- package/examples/contracts/publisher.json +372 -0
- package/examples/contracts/saas.json +229 -0
- package/examples/contracts/travel.json +234 -0
- package/examples/customers/README.md +4 -1
- package/examples/event.json +1 -1
- package/examples/flow-complete.json +107 -130
- package/examples/flow-complete.md +12 -10
- package/examples/flow-order-complete.json +1 -1
- package/examples/flow.json +1 -1
- package/examples/shared/README.md +4 -0
- package/package.json +30 -30
- package/src/telemetry/flow.json +42 -34
- package/dist/examples/test.html +0 -43
- package/dist/examples/web-serve.js +0 -25503
- package/examples/test.html +0 -43
- package/examples/web-serve.js +0 -25503
|
@@ -256,7 +256,7 @@ curl -I http://localhost:8080/walker.js
|
|
|
256
256
|
|
|
257
257
|
```bash
|
|
258
258
|
walkeros validate packages/cli/examples/flow-complete.json -f web --path destinations.collect
|
|
259
|
-
walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","
|
|
259
|
+
walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"}}' --simulate destination.ga4
|
|
260
260
|
```
|
|
261
261
|
|
|
262
262
|
- The second line prints `mapping: none (skipped before mapping)`: the event has
|
|
@@ -294,8 +294,8 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
|
|
|
294
294
|
key reads a path from the event.
|
|
295
295
|
- `value-fn` at
|
|
296
296
|
`/flows/web/destinations/ga4/config/mapping/order/complete/data/map/value/fn`:
|
|
297
|
-
fn computes a value from the event, here the
|
|
298
|
-
key are alternatives: next to a key, fn never runs.
|
|
297
|
+
fn computes a value from the event, here the order value rounded to cents.
|
|
298
|
+
fn and key are alternatives: next to a key, fn never runs.
|
|
299
299
|
- `value-loop` at
|
|
300
300
|
`/flows/web/destinations/ga4/config/mapping/order/complete/data/map/items/loop`:
|
|
301
301
|
loop turns nested products into GA4 items.
|
|
@@ -314,7 +314,7 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
|
|
|
314
314
|
value is a constant.
|
|
315
315
|
- `rule-condition` at
|
|
316
316
|
`/flows/web/destinations/ga4/config/mapping/order/complete/condition`: A
|
|
317
|
-
rule condition skips the rule, here for orders without a
|
|
317
|
+
rule condition skips the rule, here for orders without a value.
|
|
318
318
|
- `rule-settings` at
|
|
319
319
|
`/flows/server/destinations/piwikpro/config/mapping/order/complete/settings`:
|
|
320
320
|
Rule settings are per-event package options: the Piwik PRO goal for orders.
|
|
@@ -332,7 +332,7 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
|
|
|
332
332
|
- **CLI:** the GA4 purchase, with consent and one product:
|
|
333
333
|
|
|
334
334
|
```bash
|
|
335
|
-
walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","
|
|
335
|
+
walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"nested":[{"entity":"product","data":{"id":"SKU-1","name":"Linen shirt","price":74.9,"quantity":2}}],"consent":{"functional":true}}' --simulate destination.ga4
|
|
336
336
|
```
|
|
337
337
|
|
|
338
338
|
- Output:
|
|
@@ -349,7 +349,8 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
|
|
|
349
349
|
- **Features:**
|
|
350
350
|
- `cmp-category-map` at
|
|
351
351
|
`/flows/web/sources/usercentrics/config/settings/categoryMap`: categoryMap
|
|
352
|
-
maps CMP categories onto exactly the consent keys the contract names
|
|
352
|
+
maps CMP categories onto exactly the consent keys the contract names; folded
|
|
353
|
+
in, essential never grants functional alone.
|
|
353
354
|
- `cmp-explicit-only` at
|
|
354
355
|
`/flows/web/sources/usercentrics/config/settings/explicitOnly`: explicitOnly
|
|
355
356
|
publishes consent only after a real decision, so consent.functional present
|
|
@@ -389,8 +390,9 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
|
|
|
389
390
|
- `pubsub-before` at `/flows/server/destinations/pubsub/before`: A conditional
|
|
390
391
|
next on Pub/Sub runs pseudonymize only when an email exists; other events
|
|
391
392
|
pass untouched.
|
|
392
|
-
- `ga4-como` at `/flows/web/destinations/ga4/config/settings/como`: como
|
|
393
|
-
|
|
393
|
+
- `ga4-como` at `/flows/web/destinations/ga4/config/settings/como`: como maps
|
|
394
|
+
this flow's consent keys to Google Consent Mode: functional to
|
|
395
|
+
analytics_storage, marketing to the ad parameters.
|
|
394
396
|
- **Consent keys:** there are no collector consent defaults, only granted keys
|
|
395
397
|
travel. `consent.functional` is set only by Usercentrics with `explicitOnly`,
|
|
396
398
|
so its presence means the user decided.
|
|
@@ -636,7 +638,7 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pr
|
|
|
636
638
|
|
|
637
639
|
```bash
|
|
638
640
|
walkeros validate packages/cli/examples/flow-complete.json -t contract
|
|
639
|
-
walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","
|
|
641
|
+
walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"globals":{"language":"en"},"consent":{"functional":true}}' --simulate transformer.validate
|
|
640
642
|
```
|
|
641
643
|
|
|
642
644
|
- **MCP:** `flow_validate`, `flow_simulate`.
|
|
@@ -760,7 +762,7 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
|
|
|
760
762
|
(`user.ltv: 420`, `user.segment: "loyal"`):
|
|
761
763
|
|
|
762
764
|
```bash
|
|
763
|
-
walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","
|
|
765
|
+
walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"user":{"id":"cust-42"}}' --simulate transformer.loadUser
|
|
764
766
|
```
|
|
765
767
|
|
|
766
768
|
- Build the web bundle straight into the shared folder (web builds ignore root
|
package/examples/flow.json
CHANGED
|
@@ -20,3 +20,7 @@ walkeros bundle packages/cli/examples/flow-complete.json -f web -o packages/cli/
|
|
|
20
20
|
walkeros bundle packages/cli/examples/flow-complete.json -f server -o dist/server.mjs
|
|
21
21
|
runneros start dist/server.mjs -p 8080 --env-file .env
|
|
22
22
|
```
|
|
23
|
+
|
|
24
|
+
- `runneros` refuses an `.env` that group or other can read
|
|
25
|
+
(`Refusing to load env file ".env": it is readable by group or other`);
|
|
26
|
+
restrict it with `chmod 600 .env`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/cli",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.3-next-1793115089237",
|
|
4
4
|
"description": "walkerOS CLI - Bundle and deploy walkerOS components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -53,11 +53,12 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@vercel/nft": "^1.10.2",
|
|
56
|
-
"@walkeros/collector": "4.8.
|
|
57
|
-
"@walkeros/core": "4.8.
|
|
58
|
-
"@walkeros/server-core": "4.8.
|
|
59
|
-
"@walkeros/server-destination-api": "4.8.
|
|
60
|
-
"@walkeros/transformer-validate": "4.8.
|
|
56
|
+
"@walkeros/collector": "4.8.3-next-1793115089237",
|
|
57
|
+
"@walkeros/core": "4.8.3-next-1793115089237",
|
|
58
|
+
"@walkeros/server-core": "4.8.3-next-1793115089237",
|
|
59
|
+
"@walkeros/server-destination-api": "4.8.3-next-1793115089237",
|
|
60
|
+
"@walkeros/transformer-validate": "4.8.3-next-1793115089237",
|
|
61
|
+
"@walkeros/web-core": "4.8.3-next-1793115089237",
|
|
61
62
|
"ajv": "^8.17.1",
|
|
62
63
|
"chalk": "^5.6.2",
|
|
63
64
|
"ci-info": "^4.4.0",
|
|
@@ -66,7 +67,6 @@
|
|
|
66
67
|
"fs-extra": "^11.3.2",
|
|
67
68
|
"jsdom": "^29.1.1",
|
|
68
69
|
"npm-package-arg": "^13.0.2",
|
|
69
|
-
"open": "^11.0.0",
|
|
70
70
|
"pacote": "^21.0.4",
|
|
71
71
|
"picomatch": "^4.0.4",
|
|
72
72
|
"semver": "^7.7.4",
|
|
@@ -80,29 +80,29 @@
|
|
|
80
80
|
"@types/pacote": "^11.1.8",
|
|
81
81
|
"@types/picomatch": "4.0.3",
|
|
82
82
|
"@types/semver": "^7.7.1",
|
|
83
|
-
"@walkeros/config": "4.8.
|
|
84
|
-
"@walkeros/core": "4.8.
|
|
85
|
-
"@walkeros/destination-demo": "4.8.
|
|
86
|
-
"@walkeros/server-destination-aws": "4.8.
|
|
87
|
-
"@walkeros/server-destination-datamanager": "4.8.
|
|
88
|
-
"@walkeros/server-destination-gcp": "4.8.
|
|
89
|
-
"@walkeros/server-destination-meta": "4.8.
|
|
90
|
-
"@walkeros/server-destination-piwikpro": "4.8.
|
|
91
|
-
"@walkeros/server-source-aws": "4.8.
|
|
92
|
-
"@walkeros/server-source-express": "4.8.
|
|
93
|
-
"@walkeros/server-source-gcp": "4.8.
|
|
94
|
-
"@walkeros/server-store-fs": "4.8.
|
|
95
|
-
"@walkeros/server-transformer-bot": "4.8.
|
|
96
|
-
"@walkeros/server-transformer-file": "4.8.
|
|
97
|
-
"@walkeros/server-transformer-fingerprint": "4.8.
|
|
98
|
-
"@walkeros/transformer-ga4": "4.8.
|
|
99
|
-
"@walkeros/web-destination-api": "4.8.
|
|
100
|
-
"@walkeros/web-destination-gtag": "4.8.
|
|
101
|
-
"@walkeros/web-source-browser": "4.8.
|
|
102
|
-
"@walkeros/web-source-cmp-cookiefirst": "4.8.
|
|
103
|
-
"@walkeros/web-source-cmp-usercentrics": "4.8.
|
|
104
|
-
"@walkeros/web-source-datalayer": "4.8.
|
|
105
|
-
"@walkeros/web-source-session": "4.8.
|
|
83
|
+
"@walkeros/config": "4.8.3-next-1793115089237",
|
|
84
|
+
"@walkeros/core": "4.8.3-next-1793115089237",
|
|
85
|
+
"@walkeros/destination-demo": "4.8.3-next-1793115089237",
|
|
86
|
+
"@walkeros/server-destination-aws": "4.8.3-next-1793115089237",
|
|
87
|
+
"@walkeros/server-destination-datamanager": "4.8.3-next-1793115089237",
|
|
88
|
+
"@walkeros/server-destination-gcp": "4.8.3-next-1793115089237",
|
|
89
|
+
"@walkeros/server-destination-meta": "4.8.3-next-1793115089237",
|
|
90
|
+
"@walkeros/server-destination-piwikpro": "4.8.3-next-1793115089237",
|
|
91
|
+
"@walkeros/server-source-aws": "4.8.3-next-1793115089237",
|
|
92
|
+
"@walkeros/server-source-express": "4.8.3-next-1793115089237",
|
|
93
|
+
"@walkeros/server-source-gcp": "4.8.3-next-1793115089237",
|
|
94
|
+
"@walkeros/server-store-fs": "4.8.3-next-1793115089237",
|
|
95
|
+
"@walkeros/server-transformer-bot": "4.8.3-next-1793115089237",
|
|
96
|
+
"@walkeros/server-transformer-file": "4.8.3-next-1793115089237",
|
|
97
|
+
"@walkeros/server-transformer-fingerprint": "4.8.3-next-1793115089237",
|
|
98
|
+
"@walkeros/transformer-ga4": "4.8.3-next-1793115089237",
|
|
99
|
+
"@walkeros/web-destination-api": "4.8.3-next-1793115089237",
|
|
100
|
+
"@walkeros/web-destination-gtag": "4.8.3-next-1793115089237",
|
|
101
|
+
"@walkeros/web-source-browser": "4.8.3-next-1793115089237",
|
|
102
|
+
"@walkeros/web-source-cmp-cookiefirst": "4.8.3-next-1793115089237",
|
|
103
|
+
"@walkeros/web-source-cmp-usercentrics": "4.8.3-next-1793115089237",
|
|
104
|
+
"@walkeros/web-source-datalayer": "4.8.3-next-1793115089237",
|
|
105
|
+
"@walkeros/web-source-session": "4.8.3-next-1793115089237",
|
|
106
106
|
"msw": "^2.12.10",
|
|
107
107
|
"tsx": "^4.21.0"
|
|
108
108
|
},
|
package/src/telemetry/flow.json
CHANGED
|
@@ -3,43 +3,49 @@
|
|
|
3
3
|
"contract": {
|
|
4
4
|
"telemetry": {
|
|
5
5
|
"description": "walkerOS internal usage telemetry from @walkeros/cli and @walkeros/mcp. Anonymous, opt-out, no PII.",
|
|
6
|
-
"
|
|
6
|
+
"schema": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
|
-
"
|
|
10
|
-
"type": "
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
"user": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"device": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Installation UUID generated once per machine and persisted in ~/.config/walkeros/config.json. Not linked to any account."
|
|
15
|
+
},
|
|
16
|
+
"session": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "Ephemeral per-process UUID. Only present on MCP events; CLI omits because its session is a single event."
|
|
19
|
+
},
|
|
20
|
+
"os": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"osVersion": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"node": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
"language": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
},
|
|
32
|
+
"timezone": {
|
|
33
|
+
"type": "string"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
28
36
|
},
|
|
29
|
-
"
|
|
30
|
-
"type": "
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"type": "boolean",
|
|
39
|
-
"const": true
|
|
37
|
+
"consent": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"properties": {
|
|
40
|
+
"telemetry": {
|
|
41
|
+
"type": "boolean",
|
|
42
|
+
"const": true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"required": ["telemetry"]
|
|
40
46
|
}
|
|
41
47
|
},
|
|
42
|
-
"required": ["
|
|
48
|
+
"required": ["consent"]
|
|
43
49
|
},
|
|
44
50
|
"events": {
|
|
45
51
|
"mcp": {
|
|
@@ -66,7 +72,7 @@
|
|
|
66
72
|
"properties": {
|
|
67
73
|
"command": {
|
|
68
74
|
"type": "string",
|
|
69
|
-
"description": "CLI command, space-joined for subcommands (e.g. 'bundle', 'projects list', '
|
|
75
|
+
"description": "CLI command, space-joined for subcommands (e.g. 'bundle', 'projects list', 'api'). Set on source.command when source.type = 'cli'."
|
|
70
76
|
},
|
|
71
77
|
"tool": {
|
|
72
78
|
"type": "string",
|
|
@@ -101,7 +107,9 @@
|
|
|
101
107
|
"api": {
|
|
102
108
|
"package": "@walkeros/server-destination-api",
|
|
103
109
|
"config": {
|
|
104
|
-
"
|
|
110
|
+
"settings": {
|
|
111
|
+
"url": "$env.WALKEROS_APP_URL/api/telemetry"
|
|
112
|
+
}
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
}
|
package/dist/examples/test.html
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>walkerOS Web Bundle Test</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<h1>walkerOS Web Bundle Test</h1>
|
|
10
|
-
<div id="status">Loading...</div>
|
|
11
|
-
|
|
12
|
-
<!-- Load the bundle -->
|
|
13
|
-
<script src="web-serve.js"></script>
|
|
14
|
-
|
|
15
|
-
<!-- Test that collector and elb are available -->
|
|
16
|
-
<script>
|
|
17
|
-
setTimeout(() => {
|
|
18
|
-
const statusEl = document.getElementById('status');
|
|
19
|
-
|
|
20
|
-
if (typeof window.collector !== 'undefined' && typeof window.elb !== 'undefined') {
|
|
21
|
-
statusEl.innerHTML = `
|
|
22
|
-
<div style="color: green; font-weight: bold;">✅ SUCCESS!</div>
|
|
23
|
-
<ul>
|
|
24
|
-
<li>window.collector: ${typeof window.collector}</li>
|
|
25
|
-
<li>window.elb: ${typeof window.elb}</li>
|
|
26
|
-
</ul>
|
|
27
|
-
<p>Check console for details</p>
|
|
28
|
-
`;
|
|
29
|
-
|
|
30
|
-
console.log('✅ Bundle loaded successfully!');
|
|
31
|
-
console.log('window.collector:', window.collector);
|
|
32
|
-
console.log('window.elb:', window.elb);
|
|
33
|
-
} else {
|
|
34
|
-
statusEl.innerHTML = `
|
|
35
|
-
<div style="color: red; font-weight: bold;">❌ FAILED</div>
|
|
36
|
-
<p>collector or elb not found on window</p>
|
|
37
|
-
`;
|
|
38
|
-
console.error('Bundle did not assign to window correctly');
|
|
39
|
-
}
|
|
40
|
-
}, 100);
|
|
41
|
-
</script>
|
|
42
|
-
</body>
|
|
43
|
-
</html>
|