@walkeros/cli 4.7.0-next-1790722899482 → 4.7.0

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.
@@ -2,10 +2,10 @@
2
2
 
3
3
  Fake demo customers for the `customers` store of `flow-complete.json`
4
4
  (`@walkeros/server-store-fs`, structured mode). One file per customer id; the
5
- content is the customer's lifetime value as JSON.
5
+ content is the customer's record as JSON: lifetime value and segment.
6
6
 
7
- - `cust-42`: `420`
8
- - `cust-1001`: `75.5`
7
+ - `cust-42`: `{"ltv":420,"segment":"loyal"}`
8
+ - `cust-1001`: `{"ltv":75.5,"segment":"new"}`
9
9
 
10
10
  Not covered by root `include`, so no customer data ships in a bundle. `basePath`
11
11
  defaults to `./customers`, relative to the working directory: run
@@ -1 +1 @@
1
- 75.5
1
+ {"ltv":75.5,"segment":"new"}
@@ -1 +1 @@
1
- 420
1
+ {"ltv":420,"segment":"loyal"}
@@ -241,25 +241,25 @@
241
241
  "bundle": {
242
242
  "packages": {
243
243
  "@walkeros/collector": {
244
- "version": "4.7.0-next-1790245733116"
244
+ "version": "4.7.0"
245
245
  },
246
246
  "@walkeros/web-source-cmp-usercentrics": {
247
- "version": "4.7.0-next-1790245733116"
247
+ "version": "4.7.0"
248
248
  },
249
249
  "@walkeros/web-source-session": {
250
- "version": "4.7.0-next-1790245733116"
250
+ "version": "4.7.0"
251
251
  },
252
252
  "@walkeros/web-source-datalayer": {
253
- "version": "4.7.0-next-1790245733116"
253
+ "version": "4.7.0"
254
254
  },
255
255
  "@walkeros/web-source-browser": {
256
- "version": "4.7.0-next-1790245733116"
256
+ "version": "4.7.0"
257
257
  },
258
258
  "@walkeros/web-destination-gtag": {
259
- "version": "4.7.0-next-1790245733116"
259
+ "version": "4.7.0"
260
260
  },
261
261
  "@walkeros/web-destination-api": {
262
- "version": "4.7.0-next-1790245733116"
262
+ "version": "4.7.0"
263
263
  }
264
264
  },
265
265
  "env": {
@@ -340,6 +340,16 @@
340
340
  ]
341
341
  }
342
342
  }
343
+ ],
344
+ "out": [
345
+ [
346
+ "elb",
347
+ "walker consent",
348
+ {
349
+ "functional": true,
350
+ "marketing": true
351
+ }
352
+ ]
343
353
  ]
344
354
  },
345
355
  "implicitSuppressed": {
@@ -410,12 +420,77 @@
410
420
  "trigger": {
411
421
  "type": "load",
412
422
  "options": {
413
- "url": "https://www.example.com/?utm_source=google&utm_medium=cpc&utm_campaign=trail&gclid=gclid-abc123"
423
+ "url": "https://www.example.com/?utm_source=google&utm_medium=cpc&utm_campaign=trail&gclid=gclid-abc123",
424
+ "referrer": "https://www.google.com/"
414
425
  }
415
426
  },
416
427
  "in": {
417
428
  "storage": true
418
- }
429
+ },
430
+ "out": [
431
+ [
432
+ "elb",
433
+ "user",
434
+ {
435
+ "session": "s3ss10n",
436
+ "device": "d3v1c3"
437
+ }
438
+ ],
439
+ [
440
+ "elb",
441
+ "session",
442
+ {
443
+ "id": "s3ss10n",
444
+ "start": 1790251200000,
445
+ "isNew": true,
446
+ "count": 1,
447
+ "runs": 1,
448
+ "isStart": true,
449
+ "storage": true,
450
+ "referrer": "www.google.com",
451
+ "campaign": "trail",
452
+ "medium": "cpc",
453
+ "source": "google",
454
+ "gclid": "gclid-abc123",
455
+ "clickId": "gclid",
456
+ "platform": "google",
457
+ "marketing": true,
458
+ "device": "d3v1c3",
459
+ "updated": 1790251200000
460
+ }
461
+ ],
462
+ [
463
+ "elb",
464
+ {
465
+ "name": "session start",
466
+ "data": {
467
+ "id": "s3ss10n",
468
+ "start": 1790251200000,
469
+ "isNew": true,
470
+ "count": 1,
471
+ "runs": 1,
472
+ "isStart": true,
473
+ "storage": true,
474
+ "referrer": "www.google.com",
475
+ "campaign": "trail",
476
+ "medium": "cpc",
477
+ "source": "google",
478
+ "gclid": "gclid-abc123",
479
+ "clickId": "gclid",
480
+ "platform": "google",
481
+ "marketing": true,
482
+ "device": "d3v1c3",
483
+ "updated": 1790251200000
484
+ },
485
+ "source": {
486
+ "type": "session",
487
+ "platform": "web",
488
+ "url": "https://www.example.com/?utm_source=google&utm_medium=cpc&utm_campaign=trail&gclid=gclid-abc123",
489
+ "referrer": "https://www.google.com/"
490
+ }
491
+ }
492
+ ]
493
+ ]
419
494
  }
420
495
  }
421
496
  },
@@ -1689,40 +1764,40 @@
1689
1764
  "bundle": {
1690
1765
  "packages": {
1691
1766
  "@walkeros/collector": {
1692
- "version": "4.7.0-next-1790245733116"
1767
+ "version": "4.7.0"
1693
1768
  },
1694
1769
  "@walkeros/server-source-express": {
1695
- "version": "4.7.0-next-1790245733116"
1770
+ "version": "4.7.0"
1696
1771
  },
1697
1772
  "@walkeros/transformer-ga4": {
1698
- "version": "4.7.0-next-1790245733116"
1773
+ "version": "4.7.0"
1699
1774
  },
1700
1775
  "@walkeros/transformer-validate": {
1701
- "version": "4.7.0-next-1790245733116"
1776
+ "version": "4.7.0"
1702
1777
  },
1703
1778
  "@walkeros/server-transformer-bot": {
1704
- "version": "4.7.0-next-1790245733116"
1779
+ "version": "4.7.0"
1705
1780
  },
1706
1781
  "@walkeros/server-transformer-fingerprint": {
1707
- "version": "4.7.0-next-1790245733116"
1782
+ "version": "4.7.0"
1708
1783
  },
1709
1784
  "@walkeros/server-transformer-file": {
1710
- "version": "4.7.0-next-1790245733116"
1785
+ "version": "4.7.0"
1711
1786
  },
1712
1787
  "@walkeros/server-store-fs": {
1713
- "version": "4.7.0-next-1790245733116"
1788
+ "version": "4.7.0"
1714
1789
  },
1715
1790
  "@walkeros/server-destination-gcp": {
1716
- "version": "4.7.0-next-1790245733116"
1791
+ "version": "4.7.0"
1717
1792
  },
1718
1793
  "@walkeros/server-destination-meta": {
1719
- "version": "4.7.0-next-1790245733116"
1794
+ "version": "4.7.0"
1720
1795
  },
1721
1796
  "@walkeros/server-destination-piwikpro": {
1722
- "version": "4.7.0-next-1790245733116"
1797
+ "version": "4.7.0"
1723
1798
  },
1724
1799
  "@walkeros/server-destination-datamanager": {
1725
- "version": "4.7.0-next-1790245733116"
1800
+ "version": "4.7.0"
1726
1801
  }
1727
1802
  }
1728
1803
  }
@@ -2989,7 +3064,8 @@
2989
3064
  "hash": "5f1c0a9e7d3b2c41",
2990
3065
  "botScore": 0,
2991
3066
  "botCategory": "human",
2992
- "ltv": 420
3067
+ "ltv": 420,
3068
+ "segment": "loyal"
2993
3069
  },
2994
3070
  "source": {
2995
3071
  "type": "express",
@@ -3029,12 +3105,18 @@
3029
3105
  "mode": "get",
3030
3106
  "store": "customers",
3031
3107
  "key": "event.user.id",
3032
- "value": "event.user.ltv"
3108
+ "value": "event.user",
3109
+ "mapping": {
3110
+ "map": {
3111
+ "ltv": "ltv",
3112
+ "segment": "segment"
3113
+ }
3114
+ }
3033
3115
  },
3034
3116
  "examples": {
3035
3117
  "knownCustomer": {
3036
3118
  "title": "Known customer",
3037
- "description": "The customer id is looked up in the customers store (fs demo data, cached for five minutes) and the lifetime value lands in user.ltv as a number.",
3119
+ "description": "The customer id is looked up in the customers store (fs demo data, cached for five minutes) and its lifetime value and segment are merged into user, next to the id and hash already there.",
3038
3120
  "public": true,
3039
3121
  "in": {
3040
3122
  "name": "order complete",
@@ -3125,7 +3207,8 @@
3125
3207
  "hash": "5f1c0a9e7d3b2c41",
3126
3208
  "botScore": 0,
3127
3209
  "botCategory": "human",
3128
- "ltv": 420
3210
+ "ltv": 420,
3211
+ "segment": "loyal"
3129
3212
  },
3130
3213
  "source": {
3131
3214
  "type": "express",
@@ -4215,7 +4298,7 @@
4215
4298
  [
4216
4299
  "PubSub.topic.publishMessage",
4217
4300
  {
4218
- "data": "{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-100\",\"total\":149.8,\"currency\":\"EUR\",\"coupon\":\"WELCOME10\"},\"context\":{},\"globals\":{\"language\":\"en\",\"pageGroup\":\"checkout\"},\"custom\":{},\"user\":{\"device\":\"d3v1c3\",\"session\":\"s3ss10n\",\"id\":\"cust-42\",\"email\":\"4cdea64501d6109d0a25750a7ce1d5c87e5fc927c61b674f191b73e28b582c93\",\"hash\":\"cea3ca84340feb4a\",\"botScore\":null,\"botCategory\":\"unknown\",\"ltv\":420},\"nested\":[{\"entity\":\"product\",\"data\":{\"id\":\"SKU-1\",\"name\":\"Trail Runner\",\"price\":129.9,\"quantity\":1}},{\"entity\":\"product\",\"data\":{\"id\":\"SKU-2\",\"name\":\"Running Socks\",\"price\":9.95,\"quantity\":2}}],\"consent\":{\"functional\":true,\"marketing\":true},\"id\":\"ev-order-complete\",\"trigger\":\"load\",\"entity\":\"order\",\"action\":\"complete\",\"timestamp\":1700000000000,\"timing\":0,\"source\":{\"type\":\"express\",\"platform\":\"server\",\"url\":\"https://www.example.com/checkout/thanks\",\"valid\":true,\"count\":1,\"release\":{\"server\":\"4.6.1\"}}}"
4301
+ "data": "{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-100\",\"total\":149.8,\"currency\":\"EUR\",\"coupon\":\"WELCOME10\"},\"context\":{},\"globals\":{\"language\":\"en\",\"pageGroup\":\"checkout\"},\"custom\":{},\"user\":{\"device\":\"d3v1c3\",\"session\":\"s3ss10n\",\"id\":\"cust-42\",\"email\":\"4cdea64501d6109d0a25750a7ce1d5c87e5fc927c61b674f191b73e28b582c93\",\"hash\":\"cea3ca84340feb4a\",\"botScore\":null,\"botCategory\":\"unknown\",\"ltv\":420,\"segment\":\"loyal\"},\"nested\":[{\"entity\":\"product\",\"data\":{\"id\":\"SKU-1\",\"name\":\"Trail Runner\",\"price\":129.9,\"quantity\":1}},{\"entity\":\"product\",\"data\":{\"id\":\"SKU-2\",\"name\":\"Running Socks\",\"price\":9.95,\"quantity\":2}}],\"consent\":{\"functional\":true,\"marketing\":true},\"id\":\"ev-order-complete\",\"trigger\":\"load\",\"entity\":\"order\",\"action\":\"complete\",\"timestamp\":1700000000000,\"timing\":0,\"source\":{\"type\":\"express\",\"platform\":\"server\",\"url\":\"https://www.example.com/checkout/thanks\",\"valid\":true,\"count\":1,\"release\":{\"server\":\"4.6.1\"}}}"
4219
4302
  }
4220
4303
  ]
4221
4304
  ]
@@ -4775,13 +4858,13 @@
4775
4858
  "bundle": {
4776
4859
  "packages": {
4777
4860
  "@walkeros/collector": {
4778
- "version": "4.7.0-next-1790245733116"
4861
+ "version": "4.7.0"
4779
4862
  },
4780
4863
  "@walkeros/server-source-gcp": {
4781
- "version": "4.7.0-next-1790245733116"
4864
+ "version": "4.7.0"
4782
4865
  },
4783
4866
  "@walkeros/server-destination-gcp": {
4784
- "version": "4.7.0-next-1790245733116"
4867
+ "version": "4.7.0"
4785
4868
  }
4786
4869
  }
4787
4870
  }
@@ -75,7 +75,10 @@ warehouse pubsub pull -> bigquery (keeps everything)
75
75
  - `flow-collector` at `/flows/server/collector`: The collector sits between
76
76
  sources and destinations and runs its own chain once per event.
77
77
  - **CLI:** strict validation checks the schema, every reference, every package
78
- version and every example link; this file gives 0 errors, 0 warnings.
78
+ version, every step's settings and every example link; with the published
79
+ packages of this release this file gives 0 errors and 0 warnings. Three steps
80
+ import a named export, which has no settings schema yet, so they are listed as
81
+ skipped and `--strict` exits 2 on them.
79
82
 
80
83
  ```bash
81
84
  walkeros validate packages/cli/examples/flow-complete.json --strict
@@ -622,13 +625,13 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pr
622
625
  `event.source.valid eq false` stops invalid events before Meta, Piwik PRO and
623
626
  Data Manager only. `mode: "strict"` is the hard-gate variant: it drops invalid
624
627
  events for every destination, the warehouse included.
625
- - **CLI:** `validate --strict` on the flow checks the contract's shape; the
626
- contract check proper (`-t contract`, which also resolves every `extend`)
627
- takes the contract section alone. Then run the validate step on an order
628
- without a visitor hash (out: `source.valid: false`):
628
+ - **CLI:** `validate` on the flow already checks the contract (every `extend`
629
+ resolved, paths under `contract.`); `-t contract` on the flow file runs that
630
+ contract check alone. Then run the validate step on an order without a visitor
631
+ hash (out: `source.valid: false`):
629
632
 
630
633
  ```bash
631
- walkeros validate "$(jq .contract packages/cli/examples/flow-complete.json)" -t contract
634
+ walkeros validate packages/cli/examples/flow-complete.json -t contract
632
635
  walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"},"globals":{"language":"en"},"consent":{"functional":true}}' --simulate transformer.validate
633
636
  ```
634
637
 
@@ -706,8 +709,10 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
706
709
  maps what is stored.
707
710
  - `state-store` at `/flows/server/transformers/loadUser/state/store`: store
708
711
  reads from a named store instead of the built-in cache.
712
+ - `state-mapping` at `/flows/server/transformers/loadUser/state/mapping`:
713
+ mapping picks fields from the stored row and merges them into the target.
709
714
  - `load-user` at `/flows/server/transformers/loadUser`: loadUser puts the
710
- customer lifetime value on logged-in events.
715
+ customer lifetime value and segment on logged-in events.
711
716
  - `store-fs` at `/flows/server/stores/assets`: An fs store serves files from a
712
717
  folder.
713
718
  - `store-file` at `/flows/server/stores/assets/config/file`: file: true
@@ -730,7 +735,7 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
730
735
  - **`$store` and store `cache`:** `$store.assets` injects the fs store into
731
736
  `file`; the `customers` store memoizes customer reads for five minutes.
732
737
  - **Customers:** `customers` is an fs store over fake demo data
733
- (`packages/cli/examples/customers`, one JSON value per customer id), outside
738
+ (`packages/cli/examples/customers`, one JSON record per customer id), outside
734
739
  root `include`, so no customer data ships in a bundle. `basePath` is relative
735
740
  to the working directory, so `CUSTOMERS_DIR` holds it as an absolute path (the
736
741
  setup block at the top exports it). In production a Sheets or GCS store takes
@@ -743,7 +748,8 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
743
748
  on every response itself.
744
749
  - The `file` example is proven over HTTP in the integration test; its simulation
745
750
  is still waiting.
746
- - **CLI:** a known customer gets its lifetime value (`user.ltv: 420`):
751
+ - **CLI:** a known customer gets its lifetime value and segment
752
+ (`user.ltv: 420`, `user.segment: "loyal"`):
747
753
 
748
754
  ```bash
749
755
  walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"},"user":{"id":"cust-42"}}' --simulate transformer.loadUser
@@ -842,10 +848,22 @@ walkeros setup destination.pubsub -c packages/cli/examples/flow-complete.json -f
842
848
  - `bundle-packages` at `/flows/server/config/bundle/packages`: bundle.packages
843
849
  lists what a flow is built from.
844
850
  - `package-version` at
845
- `/flows/server/config/bundle/packages/@walkeros~1collector/version`: Pinned
846
- versions keep builds reproducible; validate --strict warns without them.
851
+ `/flows/server/config/bundle/packages/@walkeros~1collector/version`:
852
+ validate --strict warns for a listed package without a version; an unlisted
853
+ step package is added as latest.
847
854
  - `root-include` at `/include`: include ships the shared folder, walker.js
848
855
  included, with the server artifact.
856
+ - **Package versions:** every `@walkeros/*` package releases at one version, and
857
+ this file pins all of them to the version it ships with. Exact is recommended.
858
+
859
+ | `version` | Resolves to |
860
+ | ---------------------- | -------------------------------------------------------------- |
861
+ | omitted | `latest`; `validate --strict` warns |
862
+ | `latest` or a dist-tag | the version the tag points to at build time, re-resolved daily |
863
+ | a range (`^4.6.0`) | the highest published version in the range, re-resolved daily |
864
+ | exact (`4.6.1`) | that version, cached for good |
865
+ | `path` instead | a local directory, copied from disk, no registry |
866
+
849
867
  - `--release` stamps the id on every event as `source.release`; there is no
850
868
  release variable in the file.
851
869
  - Root `include` ships `shared/` (with `walker.js`) next to every artifact.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walkeros/cli",
3
- "version": "4.7.0-next-1790722899482",
3
+ "version": "4.7.0",
4
4
  "description": "walkerOS CLI - Bundle and deploy walkerOS components",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,11 +53,11 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@vercel/nft": "^1.10.2",
56
- "@walkeros/collector": "4.7.0-next-1790722899482",
57
- "@walkeros/core": "4.7.0-next-1790722899482",
58
- "@walkeros/server-core": "4.7.0-next-1790722899482",
59
- "@walkeros/server-destination-api": "4.7.0-next-1790722899482",
60
- "@walkeros/transformer-validate": "4.7.0-next-1790722899482",
56
+ "@walkeros/collector": "4.7.0",
57
+ "@walkeros/core": "4.7.0",
58
+ "@walkeros/server-core": "4.7.0",
59
+ "@walkeros/server-destination-api": "4.7.0",
60
+ "@walkeros/transformer-validate": "4.7.0",
61
61
  "ajv": "^8.17.1",
62
62
  "chalk": "^5.6.2",
63
63
  "ci-info": "^4.4.0",
@@ -81,8 +81,29 @@
81
81
  "@types/pacote": "^11.1.8",
82
82
  "@types/picomatch": "4.0.3",
83
83
  "@types/semver": "^7.7.1",
84
- "@walkeros/config": "4.7.0-next-1790722899482",
85
- "@walkeros/core": "4.7.0-next-1790722899482",
84
+ "@walkeros/config": "4.7.0",
85
+ "@walkeros/core": "4.7.0",
86
+ "@walkeros/destination-demo": "4.7.0",
87
+ "@walkeros/server-destination-aws": "4.7.0",
88
+ "@walkeros/server-destination-datamanager": "4.7.0",
89
+ "@walkeros/server-destination-gcp": "4.7.0",
90
+ "@walkeros/server-destination-meta": "4.7.0",
91
+ "@walkeros/server-destination-piwikpro": "4.7.0",
92
+ "@walkeros/server-source-aws": "4.7.0",
93
+ "@walkeros/server-source-express": "4.7.0",
94
+ "@walkeros/server-source-gcp": "4.7.0",
95
+ "@walkeros/server-store-fs": "4.7.0",
96
+ "@walkeros/server-transformer-bot": "4.7.0",
97
+ "@walkeros/server-transformer-file": "4.7.0",
98
+ "@walkeros/server-transformer-fingerprint": "4.7.0",
99
+ "@walkeros/transformer-ga4": "4.7.0",
100
+ "@walkeros/web-destination-api": "4.7.0",
101
+ "@walkeros/web-destination-gtag": "4.7.0",
102
+ "@walkeros/web-source-browser": "4.7.0",
103
+ "@walkeros/web-source-cmp-cookiefirst": "4.7.0",
104
+ "@walkeros/web-source-cmp-usercentrics": "4.7.0",
105
+ "@walkeros/web-source-datalayer": "4.7.0",
106
+ "@walkeros/web-source-session": "4.7.0",
86
107
  "msw": "^2.12.10",
87
108
  "openapi-typescript": "^7.13.0",
88
109
  "tsx": "^4.21.0"