@walkeros/cli 4.9.0-next-1793283841805 → 4.9.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.
@@ -6,6 +6,9 @@ Files the server flow of `flow-complete.json` serves first party.
6
6
  - The `assets` store (`@walkeros/server-store-fs`,
7
7
  `basePath: "$env.ASSETS_DIR:./shared"`) reads from it, and the `file`
8
8
  transformer answers `GET /walker.js` with it.
9
+ - `products/SKU-1` and `products/SKU-2` are the demo products of the order
10
+ example as JSON (name and price, no personal data); the `productApi`
11
+ transformer answers `GET /demo/products/SKU-1` with them.
9
12
  - `walker.js` is generated, not committed. Build the web flow straight into this
10
13
  folder (web builds ignore root `include`):
11
14
 
@@ -0,0 +1 @@
1
+ {"name":"Trail Runner","price":129.9}
@@ -0,0 +1 @@
1
+ {"name":"Running Socks","price":9.95}
package/dist/index.js CHANGED
@@ -6515,7 +6515,7 @@ async function readStepPackageInfo(resolved, options) {
6515
6515
  }
6516
6516
 
6517
6517
  // src/commands/validate/validators/settings.ts
6518
- var CLIENT_HEADER = "walkeros-cli/4.9.0-next-1793283841805";
6518
+ var CLIENT_HEADER = "walkeros-cli/4.9.0";
6519
6519
  var LOGGER = createLogger();
6520
6520
  function createSettingsContext(configDir) {
6521
6521
  return { configDir, cache: /* @__PURE__ */ new Map(), compiled: /* @__PURE__ */ new Map() };
package/dist/validate.js CHANGED
@@ -870,7 +870,7 @@ async function readStepPackageInfo(resolved, options) {
870
870
  }
871
871
 
872
872
  // src/commands/validate/validators/settings.ts
873
- var CLIENT_HEADER = "walkeros-cli/4.9.0-next-1793283841805";
873
+ var CLIENT_HEADER = "walkeros-cli/4.9.0";
874
874
  var LOGGER = createLogger();
875
875
  function createSettingsContext(configDir) {
876
876
  return { configDir, cache: /* @__PURE__ */ new Map(), compiled: /* @__PURE__ */ new Map() };
@@ -17,5 +17,5 @@ needs the variables the setup in `flow-complete.md` exports (`GCP_SA`,
17
17
  `FINGERPRINT_SALT`, `EMAIL_SALT`, `META_ACCESS_TOKEN`).
18
18
 
19
19
  In production the store is swapped for a real one, e.g.
20
- `@walkeros/server-store-sheets` or a GCS store; the `loadUser` step does not
21
- change.
20
+ `@walkeros/server-store-sheets`, a GCS store, or `@walkeros/server-store-api`
21
+ for your CRM's API; the `loadUser` step does not change.
@@ -241,25 +241,25 @@
241
241
  "bundle": {
242
242
  "packages": {
243
243
  "@walkeros/collector": {
244
- "version": "4.9.0-next-1793283841805"
244
+ "version": "4.9.0"
245
245
  },
246
246
  "@walkeros/web-source-cmp-usercentrics": {
247
- "version": "4.9.0-next-1793283841805"
247
+ "version": "4.9.0"
248
248
  },
249
249
  "@walkeros/web-source-session": {
250
- "version": "4.9.0-next-1793283841805"
250
+ "version": "4.9.0"
251
251
  },
252
252
  "@walkeros/web-source-datalayer": {
253
- "version": "4.9.0-next-1793283841805"
253
+ "version": "4.9.0"
254
254
  },
255
255
  "@walkeros/web-source-browser": {
256
- "version": "4.9.0-next-1793283841805"
256
+ "version": "4.9.0"
257
257
  },
258
258
  "@walkeros/web-destination-gtag": {
259
- "version": "4.9.0-next-1793283841805"
259
+ "version": "4.9.0"
260
260
  },
261
261
  "@walkeros/web-destination-api": {
262
- "version": "4.9.0-next-1793283841805"
262
+ "version": "4.9.0"
263
263
  }
264
264
  },
265
265
  "env": {
@@ -1778,40 +1778,40 @@
1778
1778
  "bundle": {
1779
1779
  "packages": {
1780
1780
  "@walkeros/collector": {
1781
- "version": "4.9.0-next-1793283841805"
1781
+ "version": "4.9.0"
1782
1782
  },
1783
1783
  "@walkeros/server-source-express": {
1784
- "version": "4.9.0-next-1793283841805"
1784
+ "version": "4.9.0"
1785
1785
  },
1786
1786
  "@walkeros/transformer-ga4": {
1787
- "version": "4.9.0-next-1793283841805"
1787
+ "version": "4.9.0"
1788
1788
  },
1789
1789
  "@walkeros/transformer-validate": {
1790
- "version": "4.9.0-next-1793283841805"
1790
+ "version": "4.9.0"
1791
1791
  },
1792
1792
  "@walkeros/server-transformer-bot": {
1793
- "version": "4.9.0-next-1793283841805"
1793
+ "version": "4.9.0"
1794
1794
  },
1795
1795
  "@walkeros/server-transformer-fingerprint": {
1796
- "version": "4.9.0-next-1793283841805"
1796
+ "version": "4.9.0"
1797
1797
  },
1798
1798
  "@walkeros/server-transformer-file": {
1799
- "version": "4.9.0-next-1793283841805"
1799
+ "version": "4.9.0"
1800
1800
  },
1801
1801
  "@walkeros/server-store-fs": {
1802
- "version": "4.9.0-next-1793283841805"
1802
+ "version": "4.9.0"
1803
1803
  },
1804
1804
  "@walkeros/server-destination-gcp": {
1805
- "version": "4.9.0-next-1793283841805"
1805
+ "version": "4.9.0"
1806
1806
  },
1807
1807
  "@walkeros/server-destination-meta": {
1808
- "version": "4.9.0-next-1793283841805"
1808
+ "version": "4.9.0"
1809
1809
  },
1810
1810
  "@walkeros/server-destination-piwikpro": {
1811
- "version": "4.9.0-next-1793283841805"
1811
+ "version": "4.9.0"
1812
1812
  },
1813
1813
  "@walkeros/server-destination-datamanager": {
1814
- "version": "4.9.0-next-1793283841805"
1814
+ "version": "4.9.0"
1815
1815
  }
1816
1816
  }
1817
1817
  }
@@ -1881,6 +1881,10 @@
1881
1881
  {
1882
1882
  "path": "/walker.js",
1883
1883
  "methods": ["GET"]
1884
+ },
1885
+ {
1886
+ "path": "/demo/products/:id",
1887
+ "methods": ["GET"]
1884
1888
  }
1885
1889
  ],
1886
1890
  "cors": {
@@ -1942,6 +1946,14 @@
1942
1946
  "value": "/g/collect"
1943
1947
  },
1944
1948
  "stop": true
1949
+ },
1950
+ {
1951
+ "match": {
1952
+ "key": "ingest.path",
1953
+ "operator": "prefix",
1954
+ "value": "/demo/products/"
1955
+ },
1956
+ "next": "productApi"
1945
1957
  }
1946
1958
  ]
1947
1959
  },
@@ -2412,6 +2424,7 @@
2412
2424
  },
2413
2425
  "config": {
2414
2426
  "settings": {
2427
+ "prefix": "/",
2415
2428
  "headers": {
2416
2429
  "Cache-Control": "public, max-age=300",
2417
2430
  "Cross-Origin-Resource-Policy": "same-site"
@@ -2422,6 +2435,23 @@
2422
2435
  "stop": true
2423
2436
  }
2424
2437
  },
2438
+ "productApi": {
2439
+ "package": "@walkeros/server-transformer-file",
2440
+ "env": {
2441
+ "store": "$store.assets"
2442
+ },
2443
+ "config": {
2444
+ "settings": {
2445
+ "prefix": "/demo/",
2446
+ "headers": {
2447
+ "Content-Type": "application/json; charset=utf-8"
2448
+ }
2449
+ }
2450
+ },
2451
+ "next": {
2452
+ "stop": true
2453
+ }
2454
+ },
2425
2455
  "dedup": {
2426
2456
  "cache": {
2427
2457
  "stop": true,
@@ -4852,13 +4882,13 @@
4852
4882
  "bundle": {
4853
4883
  "packages": {
4854
4884
  "@walkeros/collector": {
4855
- "version": "4.9.0-next-1793283841805"
4885
+ "version": "4.9.0"
4856
4886
  },
4857
4887
  "@walkeros/server-source-gcp": {
4858
- "version": "4.9.0-next-1793283841805"
4888
+ "version": "4.9.0"
4859
4889
  },
4860
4890
  "@walkeros/server-destination-gcp": {
4861
- "version": "4.9.0-next-1793283841805"
4891
+ "version": "4.9.0"
4862
4892
  }
4863
4893
  }
4864
4894
  }
@@ -39,8 +39,8 @@ web usercentrics, session, dataLayer, browser
39
39
  -> collector.next: opt-out stop, pageGroup
40
40
  -> ga4 (to Google, main property) gtm (dataLayer) collect (to server)
41
41
 
42
- server express /collect /g/collect /walker.js
43
- before: one [ G-SUBSITE hit -> ga4Decode -> ga4Consent | *.js -> file (stop) | other /g/collect (stop) ]
42
+ server express /collect /g/collect /walker.js /demo/products/:id
43
+ before: one [ G-SUBSITE hit -> ga4Decode -> ga4Consent | *.js -> file (stop) | other /g/collect (stop) | /demo/products/ -> productApi (stop) ]
44
44
  next: opt-out stop, dedup
45
45
  -> collector.next: fingerprint, bot, not impression -> enrich [ loadUser, sessionSave, sessionLoad, validate ]
46
46
  -> pubsub (every event, email pseudonymized)
@@ -140,13 +140,14 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"page
140
140
  ## server-entry: A first-party endpoint, and a GA4 migration path
141
141
 
142
142
  - **Purpose:** one express source answers the browser (`/collect`), GA4 hits of
143
- a sub-site (`/g/collect`) and script requests (`/walker.js`).
143
+ a sub-site (`/g/collect`), script requests (`/walker.js`) and product lookups
144
+ (`/demo/products/:id`).
144
145
  - **Features:**
145
146
  - `server-url` at `/flows/server/config/url`: The full collect endpoint, local
146
147
  by default, SERVER_URL in production.
147
148
  - `express-paths` at `/flows/server/sources/express/config/settings/paths`:
148
149
  One route per job, each with its own methods: /collect, /g/collect,
149
- /walker.js.
150
+ /walker.js, /demo/products/:id.
150
151
  - `express-cors` at `/flows/server/sources/express/config/settings/cors`: CORS
151
152
  response headers for the shop origin; express adds X-Content-Type-Options
152
153
  itself.
@@ -740,6 +741,15 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
740
741
  first party from the server flow.
741
742
  - `file-headers` at `/flows/server/transformers/file/config/settings/headers`:
742
743
  Default response headers for served files: caching and resource policy.
744
+ - `file-prefix` at `/flows/server/transformers/file/config/settings/prefix`:
745
+ prefix / makes the step own every script request: a missing walker.js
746
+ answers 404 instead of the tracking pixel.
747
+ - `products-case` at `/flows/server/sources/express/before/one/3`: The last
748
+ case sends product lookups (/demo/products/<id>) to productApi.
749
+ - `product-api` at `/flows/server/transformers/productApi`: A lookup route:
750
+ GET /demo/products/<id> answers the product as JSON from the assets store
751
+ (prefix /demo/ is stripped to the key products/<id>; headers sets the JSON
752
+ Content-Type), 404 for an unknown id, and never becomes an event.
743
753
  - `gclid-to-ads` at
744
754
  `/flows/server/destinations/datamanager/config/mapping/order/complete/data/map/gclid`:
745
755
  The gclid saved at session start reaches Google Ads with the purchase.
@@ -752,12 +762,27 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
752
762
  (`packages/cli/examples/customers`, one JSON record per customer id), outside
753
763
  root `include`, so no customer data ships in a bundle. `basePath` is relative
754
764
  to the working directory, so `CUSTOMERS_DIR` holds it as an absolute path (the
755
- setup block at the top exports it). In production a Sheets or GCS store takes
756
- its place; `loadUser` does not change.
765
+ setup block at the top exports it). In production a Sheets or GCS store, or
766
+ `@walkeros/server-store-api` for your CRM's API, takes its place; `loadUser`
767
+ does not change.
757
768
  - **walker.js first party:** the `file` transformer answers `GET /walker.js`
758
769
  from the `assets` store with `settings.headers` (`Cache-Control`,
759
770
  `Cross-Origin-Resource-Policy`) and ends with `next: { stop: true }`. Express
760
- `settings.cors` adds the CORS headers.
771
+ `settings.cors` adds the CORS headers. With `prefix: "/"` the step owns every
772
+ script request: a missing `walker.js` answers 404 with
773
+ `Cache-Control: no-store` instead of the tracking pixel.
774
+ - **A lookup route:** `productApi` is a second `file` step on the same `assets`
775
+ store. `GET /demo/products/SKU-1` answers 200 with the product as JSON
776
+ (`shared/products/SKU-1`; `settings.headers` sets the JSON `Content-Type`,
777
+ since the step serves bytes as stored), an unknown id answers 404 with
778
+ `Cache-Control: no-store`, and `next: { stop: true }` keeps every lookup from
779
+ becoming an event. A failing store read answers 503 and is logged at ERROR.
780
+
781
+ ```bash
782
+ curl -i http://localhost:8080/demo/products/SKU-1
783
+ curl -i http://localhost:8080/demo/products/SKU-9
784
+ ```
785
+
761
786
  - **Why `X-Content-Type-Options: nosniff` is not in the file:** express sets it
762
787
  on every response itself.
763
788
  - The `file` example is proven over HTTP in the integration test; its simulation
@@ -6,6 +6,9 @@ Files the server flow of `flow-complete.json` serves first party.
6
6
  - The `assets` store (`@walkeros/server-store-fs`,
7
7
  `basePath: "$env.ASSETS_DIR:./shared"`) reads from it, and the `file`
8
8
  transformer answers `GET /walker.js` with it.
9
+ - `products/SKU-1` and `products/SKU-2` are the demo products of the order
10
+ example as JSON (name and price, no personal data); the `productApi`
11
+ transformer answers `GET /demo/products/SKU-1` with them.
9
12
  - `walker.js` is generated, not committed. Build the web flow straight into this
10
13
  folder (web builds ignore root `include`):
11
14
 
@@ -0,0 +1 @@
1
+ {"name":"Trail Runner","price":129.9}
@@ -0,0 +1 @@
1
+ {"name":"Running Socks","price":9.95}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walkeros/cli",
3
- "version": "4.9.0-next-1793283841805",
3
+ "version": "4.9.0",
4
4
  "description": "walkerOS CLI - Bundle and deploy walkerOS components",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,12 +53,12 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@vercel/nft": "^1.10.2",
56
- "@walkeros/collector": "4.9.0-next-1793283841805",
57
- "@walkeros/core": "4.9.0-next-1793283841805",
58
- "@walkeros/server-core": "4.9.0-next-1793283841805",
59
- "@walkeros/server-destination-api": "4.9.0-next-1793283841805",
60
- "@walkeros/transformer-validate": "4.9.0-next-1793283841805",
61
- "@walkeros/web-core": "4.9.0-next-1793283841805",
56
+ "@walkeros/collector": "4.9.0",
57
+ "@walkeros/core": "4.9.0",
58
+ "@walkeros/server-core": "4.9.0",
59
+ "@walkeros/server-destination-api": "4.9.0",
60
+ "@walkeros/transformer-validate": "4.9.0",
61
+ "@walkeros/web-core": "4.9.0",
62
62
  "ajv": "^8.17.1",
63
63
  "chalk": "^5.6.2",
64
64
  "ci-info": "^4.4.0",
@@ -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.9.0-next-1793283841805",
84
- "@walkeros/core": "4.9.0-next-1793283841805",
85
- "@walkeros/destination-demo": "4.9.0-next-1793283841805",
86
- "@walkeros/server-destination-aws": "4.9.0-next-1793283841805",
87
- "@walkeros/server-destination-datamanager": "4.9.0-next-1793283841805",
88
- "@walkeros/server-destination-gcp": "4.9.0-next-1793283841805",
89
- "@walkeros/server-destination-meta": "4.9.0-next-1793283841805",
90
- "@walkeros/server-destination-piwikpro": "4.9.0-next-1793283841805",
91
- "@walkeros/server-source-aws": "4.9.0-next-1793283841805",
92
- "@walkeros/server-source-express": "4.9.0-next-1793283841805",
93
- "@walkeros/server-source-gcp": "4.9.0-next-1793283841805",
94
- "@walkeros/server-store-fs": "4.9.0-next-1793283841805",
95
- "@walkeros/server-transformer-bot": "4.9.0-next-1793283841805",
96
- "@walkeros/server-transformer-file": "4.9.0-next-1793283841805",
97
- "@walkeros/server-transformer-fingerprint": "4.9.0-next-1793283841805",
98
- "@walkeros/transformer-ga4": "4.9.0-next-1793283841805",
99
- "@walkeros/web-destination-api": "4.9.0-next-1793283841805",
100
- "@walkeros/web-destination-gtag": "4.9.0-next-1793283841805",
101
- "@walkeros/web-source-browser": "4.9.0-next-1793283841805",
102
- "@walkeros/web-source-cmp-cookiefirst": "4.9.0-next-1793283841805",
103
- "@walkeros/web-source-cmp-usercentrics": "4.9.0-next-1793283841805",
104
- "@walkeros/web-source-datalayer": "4.9.0-next-1793283841805",
105
- "@walkeros/web-source-session": "4.9.0-next-1793283841805",
83
+ "@walkeros/config": "4.9.0",
84
+ "@walkeros/core": "4.9.0",
85
+ "@walkeros/destination-demo": "4.9.0",
86
+ "@walkeros/server-destination-aws": "4.9.0",
87
+ "@walkeros/server-destination-datamanager": "4.9.0",
88
+ "@walkeros/server-destination-gcp": "4.9.0",
89
+ "@walkeros/server-destination-meta": "4.9.0",
90
+ "@walkeros/server-destination-piwikpro": "4.9.0",
91
+ "@walkeros/server-source-aws": "4.9.0",
92
+ "@walkeros/server-source-express": "4.9.0",
93
+ "@walkeros/server-source-gcp": "4.9.0",
94
+ "@walkeros/server-store-fs": "4.9.0",
95
+ "@walkeros/server-transformer-bot": "4.9.0",
96
+ "@walkeros/server-transformer-file": "4.9.0",
97
+ "@walkeros/server-transformer-fingerprint": "4.9.0",
98
+ "@walkeros/transformer-ga4": "4.9.0",
99
+ "@walkeros/web-destination-api": "4.9.0",
100
+ "@walkeros/web-destination-gtag": "4.9.0",
101
+ "@walkeros/web-source-browser": "4.9.0",
102
+ "@walkeros/web-source-cmp-cookiefirst": "4.9.0",
103
+ "@walkeros/web-source-cmp-usercentrics": "4.9.0",
104
+ "@walkeros/web-source-datalayer": "4.9.0",
105
+ "@walkeros/web-source-session": "4.9.0",
106
106
  "msw": "^2.12.10",
107
107
  "tsx": "^4.21.0"
108
108
  },