@walkeros/cli 0.3.5 → 0.4.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +22 -0
  3. package/dist/__tests__/bundle/bundler.test.js +6 -0
  4. package/dist/__tests__/bundle/bundler.test.js.map +1 -1
  5. package/dist/__tests__/bundle/programmatic.test.js +4 -0
  6. package/dist/__tests__/bundle/programmatic.test.js.map +1 -1
  7. package/dist/__tests__/cli-e2e.test.js +1 -1
  8. package/dist/__tests__/cli-e2e.test.js.map +1 -1
  9. package/dist/__tests__/cli.test.js +6 -2
  10. package/dist/__tests__/cli.test.js.map +1 -1
  11. package/dist/__tests__/simulate/programmatic.test.js +1 -1
  12. package/dist/__tests__/simulate/programmatic.test.js.map +1 -1
  13. package/dist/__tests__/simulate/simulator.test.js +1 -1
  14. package/dist/__tests__/simulate/simulator.test.js.map +1 -1
  15. package/dist/commands/bundle/bundler.js +20 -20
  16. package/dist/commands/bundle/bundler.js.map +1 -1
  17. package/dist/commands/bundle/index.d.ts.map +1 -1
  18. package/dist/commands/bundle/index.js +2 -2
  19. package/dist/commands/bundle/index.js.map +1 -1
  20. package/dist/commands/bundle/template-engine.d.ts.map +1 -1
  21. package/dist/commands/bundle/template-engine.js +2 -0
  22. package/dist/commands/bundle/template-engine.js.map +1 -1
  23. package/dist/commands/run/index.d.ts.map +1 -1
  24. package/dist/commands/run/index.js +8 -3
  25. package/dist/commands/run/index.js.map +1 -1
  26. package/dist/commands/run/types.d.ts +8 -4
  27. package/dist/commands/run/types.d.ts.map +1 -1
  28. package/dist/commands/simulate/index.d.ts.map +1 -1
  29. package/dist/commands/simulate/index.js +6 -3
  30. package/dist/commands/simulate/index.js.map +1 -1
  31. package/dist/commands/simulate/jsdom-executor.d.ts +32 -0
  32. package/dist/commands/simulate/jsdom-executor.d.ts.map +1 -0
  33. package/dist/commands/simulate/jsdom-executor.js +160 -0
  34. package/dist/commands/simulate/jsdom-executor.js.map +1 -0
  35. package/dist/commands/simulate/simulator.d.ts +0 -4
  36. package/dist/commands/simulate/simulator.d.ts.map +1 -1
  37. package/dist/commands/simulate/simulator.js +22 -104
  38. package/dist/commands/simulate/simulator.js.map +1 -1
  39. package/dist/config/defaults.d.ts.map +1 -1
  40. package/dist/config/defaults.js +0 -1
  41. package/dist/config/defaults.js.map +1 -1
  42. package/dist/config/index.d.ts +1 -1
  43. package/dist/config/index.d.ts.map +1 -1
  44. package/dist/config/index.js +1 -1
  45. package/dist/config/index.js.map +1 -1
  46. package/dist/config/parser.d.ts.map +1 -1
  47. package/dist/config/parser.js +9 -0
  48. package/dist/config/parser.js.map +1 -1
  49. package/dist/config/utils.d.ts +80 -4
  50. package/dist/config/utils.d.ts.map +1 -1
  51. package/dist/config/utils.js +197 -7
  52. package/dist/config/utils.js.map +1 -1
  53. package/dist/core/docker.d.ts +8 -4
  54. package/dist/core/docker.d.ts.map +1 -1
  55. package/dist/core/docker.js +50 -15
  56. package/dist/core/docker.js.map +1 -1
  57. package/dist/index.d.ts +34 -16
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +123 -2017
  60. package/dist/index.js.map +1 -1
  61. package/dist/types/bundle.d.ts +26 -12
  62. package/dist/types/bundle.d.ts.map +1 -1
  63. package/examples/.npm-cache/content-v2/sha512/0d/2d/7581c288670eaf8538ddd9df145b78756ce3be0791c6e0b9cd33429b3bae894525b9bda287a3cedffbcdd2c7b3107bafc03f2b0367eea489eee1cc042abb +1 -0
  64. package/examples/.npm-cache/content-v2/sha512/12/20/bc4f5acca143809f7e07da1fdafb38137d93243de4d5b403e6e10b92d0d3a6e51eab24fe9dbc9d3ed1cd72e8f7a406085e99c422bb2c7d1166cf9f1f564e +0 -0
  65. package/examples/.npm-cache/content-v2/sha512/22/ee/fb2695b01871c1d36946bdcfb49f1b520a57200d0a0b221b1e7d5f047ab38a8b2ab0e5f0e25a00acde1f3f2f9d24430a18f1092d438bc1a9e9891cc45f75 +0 -0
  66. package/examples/.npm-cache/content-v2/sha512/24/89/da1ce6a61bca6de7e132f241a675c01c83738bf6b78af25b5cce01d3030361332b3fe938571e2b721f1555da9ddf930fdcf8c02f0471556071590e68cc09 +0 -0
  67. package/examples/.npm-cache/content-v2/sha512/47/fd/c6be997da99228c3e279b95d4a46d6913947078a178f54ac71795a159f3513b1483232f4c2d0a1f403178bf9f96bb19615de32a9e2133e949880c6bc15e2 +0 -0
  68. package/examples/.npm-cache/content-v2/sha512/4b/1c/c1cb7f8b32102071a89fef97158daa32080ebaedfbbd596880d2213d84e305abc76d2a95a412ded55c1c3d487adcb1ceff87fc2c85d7e2856ebd9d3f16f3 +0 -0
  69. package/examples/.npm-cache/content-v2/sha512/6e/53/ff864769671f44f39d8a3bf904cd646535b745cc4824a8bb3189193b474678049f43b5178ba15cad7f0289046105e70f1565afc84e907120b35a466690fd +1 -0
  70. package/examples/.npm-cache/content-v2/sha512/70/4c/4c8837d446965c5551b4ea527e95fa011744fb727581d82cf35bb5599ea0b57d18baa490f7af93ef9a16e8e45e5c0802737da20575f4056a4a5c9a3cd288 +0 -0
  71. package/examples/.npm-cache/content-v2/sha512/96/ad/05de3bbb12d7de8ea353f962bdaea7d2eb44f707f2973462a6635daf537c67b46cca7764fed7d464fe62152c3f783a07aba1ceb35e09ad446bff05a4b466 +1 -0
  72. package/examples/.npm-cache/content-v2/sha512/b5/20/52dde94e6cef7170f6089c64a4843e57be18be450d956f4e455905aed047ae6a368451c93035e6ac3ee59576b600f03f815afba0836b3a16e10a9aaca4ba +1 -0
  73. package/examples/.npm-cache/content-v2/sha512/c7/a9/d166a1c39f97df312c59261319ba1cf9aac178bda0a0cb697d5ddd78bd8dd38ef1bf40017bcc8633c2049896c2d70696d9bff9280851f270792ff38bb3a0 +1 -0
  74. package/examples/.npm-cache/content-v2/sha512/e0/d0/8c14083b633e6adbd3c6a93da5fc0f6bbd456c5512ef276920bedd8d85d551052adff992de977aff326616a211aaa2d6ddcc801149e9b7f914f566359b6a +1 -0
  75. package/examples/.npm-cache/content-v2/sha512/e7/c5/06ad3fd79ac4f1031fe0b16ea5e54e232ca397bbcd7592c679021cbfb027276099f8c848f3f7a7691f0102ad53aa64f9141e61d729b037a678bd60440d17 +1 -0
  76. package/examples/.npm-cache/content-v2/sha512/f3/28/d5d32329604ed7d471a4949105daa2cc98858cf24f45b0b97c41d0eb0d5a9fe7bf1f69c792161cc6693e4fc1b52e886ac41875ebfb8fe47fafe417ca3e6e +0 -0
  77. package/examples/.npm-cache/index-v5/04/5a/2b5d7a7c407d85d746baa0f5c9388a333e35a717a8a0a81943daa6cb1364 +3 -0
  78. package/examples/.npm-cache/index-v5/12/9a/eba560cbace295d8ee04cf283015377bd77b379e70968fb6bc407c7fc410 +15 -0
  79. package/examples/.npm-cache/index-v5/2f/a2/7b047564b0ee21ac835ec609e89153dd6549be554d098584d5bfd19fe043 +15 -0
  80. package/examples/.npm-cache/index-v5/32/8e/322d58dd8d1e000be248ada51385bf96288e56039de9feec1a4c6a467653 +3 -0
  81. package/examples/.npm-cache/index-v5/57/93/d1d7cd1402e3e26468db03f2870822bb2c9018a506cdfb3b405f38cd3e1c +3 -0
  82. package/examples/.npm-cache/index-v5/5d/f8/0a1f4fa7149e4ff33e09eb6aea41ac8d1730c868a5d3ace91f762698acff +3 -0
  83. package/examples/.npm-cache/index-v5/69/a4/a92c72d838259b051cdf8e0acfb2bc680b6d4cfc642314a7836c3f7b2c50 +15 -0
  84. package/examples/.npm-cache/index-v5/71/31/6da3423bb203f3de5eb16c942431073f89be2cfcb40058ec91dcb5ce0abc +15 -0
  85. package/examples/.npm-cache/index-v5/7b/94/72b6bffa050d9ef52a558dd220663695bc606f756be0dfa196ef4f3913ba +3 -0
  86. package/examples/.npm-cache/index-v5/85/9e/99e97fdd562517e56285337db91d1a8f2f416b8d631cf4d7d754fa671299 +15 -0
  87. package/examples/.npm-cache/index-v5/92/4c/9416ada81a9b3c679539fd1ab53f8de3d41ff268f35eba7a194389a85b06 +3 -0
  88. package/examples/.npm-cache/index-v5/c1/5a/13df76b218deed8a6ef12961116af5183db98c53fad1b922fd9edc075247 +3 -0
  89. package/examples/.npm-cache/index-v5/cb/11/253c55410a8ab7c4a9ea9d6e1bf8ef1450a581da64c478074dfd82c8bff6 +3 -0
  90. package/examples/.npm-cache/index-v5/d5/ae/b57fad3a62b5ba2dbdf24b042a9e7b70820f3db00e5a630f02e1fea020dc +3 -0
  91. package/examples/.npm-cache/index-v5/d6/32/2f620f83c7d14451de98de8298c2408e05a16cc0829bd16c891ac19d7a67 +3 -0
  92. package/examples/.npm-cache/index-v5/dd/b5/01dc7a3cd8b6a03a69aee9af500d51ae19cb0aa12631a4aafd152148b8e5 +15 -0
  93. package/examples/.npm-cache/index-v5/e0/cf/6b862c15d74630d3871cd813d305210ab741311deb10baf8813014e0bc30 +3 -0
  94. package/examples/.npm-cache/index-v5/e2/be/e880ccd35950a814d3c1dded34d3938ac61b15a195321dc51357f801aad4 +15 -0
  95. package/examples/.npm-cache/index-v5/e5/1f/f4affe0b392cd03288f23cc03abcb274ff11a2c8f8965299de681914abb2 +3 -0
  96. package/examples/.npm-cache/index-v5/f3/5b/9ebe450958ff0d7cc44ab0a00080cb8a3ff1389744b5eab5f97b68a6a6af +3 -0
  97. package/examples/.npm-cache/index-v5/fb/c1/0de405e902866d53e7c30cf36a97dc2578838622b261816f44dc377c9a80 +3 -0
  98. package/examples/README.md +330 -0
  99. package/examples/event.json +53 -0
  100. package/examples/flow-order-complete.json +68 -0
  101. package/examples/flow-simple.json +32 -0
  102. package/examples/flow.json +82 -0
  103. package/examples/server-collect.json +53 -0
  104. package/examples/server-collect.mjs +13370 -0
  105. package/examples/test.html +43 -0
  106. package/examples/web-serve.js +45 -0
  107. package/examples/web-serve.json +75 -0
  108. package/package.json +3 -2
  109. package/templates/server.hbs +2 -2
  110. package/templates/web.hbs +12 -11
@@ -0,0 +1,330 @@
1
+ # walkerOS Flow Examples
2
+
3
+ This directory contains example flow configurations demonstrating various
4
+ walkerOS use cases.
5
+
6
+ ## Rebuilding Example Bundles
7
+
8
+ The `.mjs` bundle files in this directory are pre-built from their corresponding
9
+ `.json` config files. If you update the configs or core packages, rebuild them:
10
+
11
+ ```bash
12
+ cd /workspaces/walkerOS/packages/cli
13
+
14
+ # Rebuild server-collect
15
+ walkeros bundle examples/server-collect.json --local
16
+ mv server-collect.mjs examples/
17
+
18
+ # Rebuild web-serve
19
+ walkeros bundle examples/web-serve.json --local
20
+ mv web-serve.js examples/
21
+
22
+ # Update Docker demos
23
+ cp examples/server-collect.mjs ../docker/demos/demo-collect.mjs
24
+ cp examples/web-serve.js ../docker/demos/demo-serve.mjs
25
+ ```
26
+
27
+ **Important**: Always use `--local` flag when rebuilding examples in the
28
+ devcontainer.
29
+
30
+ ## Web Examples
31
+
32
+ ### web-serve.json
33
+
34
+ **Purpose**: Browser bundle that sends events to collector
35
+
36
+ **Features**:
37
+
38
+ - sourceDemo (generates test events automatically)
39
+ - destinationDemo (console output for debugging)
40
+ - destinationAPI (sends events to http://localhost:8080/collect)
41
+ - Simulates page views and product views
42
+
43
+ **Use case**: Demo web tracking that connects to server-collect.json for full
44
+ event flow testing
45
+
46
+ **Try it**:
47
+
48
+ ```bash
49
+ walkeros bundle examples/web-serve.json
50
+ walkeros run serve examples/web-serve.js -p 3000
51
+ # Open http://localhost:3000 in browser
52
+ ```
53
+
54
+ ### web-tracking.json
55
+
56
+ **Purpose**: Comprehensive browser tracking with multiple analytics platforms
57
+
58
+ **Features**:
59
+
60
+ - sourceBrowser (DOM event tracking)
61
+ - destinationAPI → localhost:8080/collect (send to collection server)
62
+ - destinationGtag → Google Analytics 4
63
+ - destinationMeta → Meta Pixel (Facebook)
64
+ - destinationDemo → Console logging
65
+
66
+ **Event mappings**:
67
+
68
+ - Page views → GA4 `page_view`, Meta `PageView`
69
+ - Product views → GA4 `view_item`, Meta `ViewContent`
70
+ - Add to cart → GA4 `add_to_cart`, Meta `AddToCart`
71
+ - Purchases → GA4 `purchase`, Meta `Purchase`
72
+
73
+ **Use case**: Production web tracking with multiple destinations
74
+
75
+ **Environment variables**:
76
+
77
+ - `GA4_MEASUREMENT_ID` - Google Analytics 4 measurement ID (default:
78
+ G-XXXXXXXXXX)
79
+ - `META_PIXEL_ID` - Meta Pixel ID (default: 123456789)
80
+ - `META_TEST_CODE` - Meta test event code (optional)
81
+
82
+ **Try it**:
83
+
84
+ ```bash
85
+ # Set environment variables
86
+ export GA4_MEASUREMENT_ID="G-YOUR-ID"
87
+ export META_PIXEL_ID="123456789"
88
+
89
+ # Bundle for browser
90
+ walkeros bundle examples/web-tracking.json --stats
91
+
92
+ # Simulate events
93
+ walkeros simulate examples/web-tracking.json \
94
+ --event '{"name":"product view","data":{"id":"P123","name":"Laptop","price":999}}'
95
+ ```
96
+
97
+ ## Server Examples
98
+
99
+ ### server-collect.json
100
+
101
+ **Purpose**: Minimal server-side event collection endpoint
102
+
103
+ **Features**:
104
+
105
+ - sourceExpress (HTTP endpoint at /collect)
106
+ - destinationDemo (console logging)
107
+ - CORS enabled for browser requests
108
+ - Health check endpoint
109
+
110
+ **Use case**: Simple event collector for demo and testing, receives events from
111
+ web-serve.json
112
+
113
+ **Try it**:
114
+
115
+ ```bash
116
+ walkeros bundle examples/server-collect.json
117
+ walkeros run collect examples/server-collect.mjs -p 8080
118
+
119
+ # In another terminal, send test event:
120
+ curl -X POST http://localhost:8080/collect \
121
+ -H "Content-Type: application/json" \
122
+ -d '{"name":"page view","data":{"title":"Test"}}'
123
+ ```
124
+
125
+ ### server-collection.json
126
+
127
+ **Purpose**: Server-side event collection and forwarding to data platforms
128
+
129
+ **Features**:
130
+
131
+ - sourceExpress (HTTP endpoint at /collect)
132
+ - destinationDataManager → Google Tag Manager Server-Side
133
+ - destinationDemo → Console logging
134
+
135
+ **Event mappings**:
136
+
137
+ - Page views → GTM `page_view`
138
+ - Product views → GTM `view_item`
139
+ - Add to cart → GTM `add_to_cart`
140
+ - Purchases → GTM `purchase`
141
+
142
+ **Use case**: Server-side tracking for privacy-compliant data collection
143
+
144
+ **Environment variables**:
145
+
146
+ - `GTM_CONTAINER_ID` - GTM Server Container ID (default: GTM-XXXXXXX)
147
+ - `GTM_SERVER_URL` - GTM Server URL (default: https://gtm.example.com)
148
+
149
+ **Try it**:
150
+
151
+ ```bash
152
+ # Set environment variables
153
+ export GTM_CONTAINER_ID="GTM-XXXXX"
154
+ export GTM_SERVER_URL="https://your-gtm-server.com"
155
+
156
+ # Run in Docker
157
+ walkeros run collect examples/server-collection.json -p 8080
158
+
159
+ # Send test event (in another terminal)
160
+ curl -X POST http://localhost:8080/collect \
161
+ -H "Content-Type: application/json" \
162
+ -d '{
163
+ "name": "product view",
164
+ "data": {
165
+ "id": "P123",
166
+ "name": "Laptop",
167
+ "price": 999
168
+ },
169
+ "user": {
170
+ "id": "user_123",
171
+ "session": "session_456"
172
+ }
173
+ }'
174
+ ```
175
+
176
+ ## Workflow: Web → Server
177
+
178
+ ### Quick Demo Loop (web-serve → server-collect)
179
+
180
+ The simplest way to see the complete event flow:
181
+
182
+ **Terminal 1 - Start collector**:
183
+
184
+ ```bash
185
+ walkeros bundle examples/server-collect.json
186
+ walkeros run collect examples/server-collect.mjs -p 8080
187
+ ```
188
+
189
+ **Terminal 2 - Start web server**:
190
+
191
+ ```bash
192
+ walkeros bundle examples/web-serve.json
193
+ walkeros run serve examples/web-serve.js -p 3000
194
+ ```
195
+
196
+ **Browser**: Open http://localhost:3000
197
+
198
+ **Events flow**:
199
+
200
+ ```
201
+ Browser (demo source) → destinationAPI → POST /collect → sourceExpress → destinationDemo (console)
202
+ ```
203
+
204
+ ### Production Pattern (web-tracking → server-collection)
205
+
206
+ For production with real analytics platforms:
207
+
208
+ **1. Start collection server**:
209
+
210
+ ```bash
211
+ walkeros run collect examples/server-collection.json -p 8080
212
+ ```
213
+
214
+ **2. Bundle web tracking** (configured to send to localhost:8080):
215
+
216
+ ```bash
217
+ walkeros bundle examples/web-tracking.json
218
+ ```
219
+
220
+ **3. Deploy** bundle to your website
221
+
222
+ **4. Events flow**:
223
+
224
+ ```
225
+ Browser → destinationAPI (POST /collect) → sourceExpress → destinationDataManager → GTM Server
226
+ ```
227
+
228
+ ## Creating Custom Examples
229
+
230
+ ### Flow Configuration Structure
231
+
232
+ ```json
233
+ {
234
+ "flow": {
235
+ "platform": "web" | "server",
236
+ "sources": {
237
+ "<source_name>": {
238
+ "code": "<imported_function_name>",
239
+ "config": { "settings": { /* source config */ } }
240
+ }
241
+ },
242
+ "destinations": {
243
+ "<destination_name>": {
244
+ "code": "<imported_function_name>",
245
+ "config": {
246
+ "settings": { /* destination config */ },
247
+ "mapping": { /* event mappings */ }
248
+ }
249
+ }
250
+ },
251
+ "collector": {
252
+ "run": true,
253
+ "globals": { /* global properties */ }
254
+ }
255
+ },
256
+ "build": {
257
+ "packages": {
258
+ "<package_name>": {
259
+ "version": "latest",
260
+ "imports": ["<function_name>"]
261
+ }
262
+ },
263
+ "code": "// Optional custom code\n",
264
+ "template": "templates/base.hbs",
265
+ "output": "./dist/bundle.js"
266
+ }
267
+ }
268
+ ```
269
+
270
+ ### Available Sources
271
+
272
+ **Web**:
273
+
274
+ - `@walkeros/web-source-browser` → `sourceBrowser` (DOM tracking)
275
+ - `@walkeros/web-source-datalayer` → `sourceDataLayer` (data layer integration)
276
+ - `@walkeros/source-demo` → `sourceDemo` (test events)
277
+
278
+ **Server**:
279
+
280
+ - `@walkeros/server-source-express` → `sourceExpress` (HTTP endpoint)
281
+ - `@walkeros/server-source-gcp` → `sourceGCP` (Google Cloud Functions)
282
+
283
+ ### Available Destinations
284
+
285
+ **Web**:
286
+
287
+ - `@walkeros/web-destination-api` → `destinationAPI` (HTTP API)
288
+ - `@walkeros/web-destination-gtag` → `destinationGtag` (GA4, GTM, Ads)
289
+ - `@walkeros/web-destination-meta` → `destinationMeta` (Meta Pixel)
290
+ - `@walkeros/web-destination-piwikpro` → `destinationPiwikPro`
291
+ - `@walkeros/web-destination-plausible` → `destinationPlausible`
292
+
293
+ **Server**:
294
+
295
+ - `@walkeros/server-destination-datamanager` → `destinationDataManager` (GTM
296
+ Server-Side)
297
+ - `@walkeros/server-destination-meta` → `destinationMeta` (Meta CAPI)
298
+ - `@walkeros/server-destination-aws` → `destinationAWS`
299
+ - `@walkeros/server-destination-gcp` → `destinationGCP`
300
+
301
+ **Universal**:
302
+
303
+ - `@walkeros/destination-demo` → `destinationDemo` (console logging)
304
+
305
+ ## Event Naming Convention
306
+
307
+ **CRITICAL**: Events must follow the "ENTITY ACTION" format with space
308
+ separation:
309
+
310
+ ✅ Correct:
311
+
312
+ - `"page view"`
313
+ - `"product add"`
314
+ - `"order complete"`
315
+ - `"button click"`
316
+
317
+ ❌ Wrong:
318
+
319
+ - `"page_view"` (underscore)
320
+ - `"purchase"` (missing entity)
321
+ - `"add_to_cart"` (underscore)
322
+
323
+ The event name is parsed as: `const [entity, action] = event.split(' ')`
324
+
325
+ ## Next Steps
326
+
327
+ 1. Try each example with `walkeros bundle` and `walkeros simulate`
328
+ 2. Modify examples to match your tracking requirements
329
+ 3. Create custom flow files for your use case
330
+ 4. Deploy to production (see [PUBLISHING.md](../docs/PUBLISHING.md))
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "order complete",
3
+ "data": {
4
+ "id": "ORD-2024-12345",
5
+ "total": 299.99,
6
+ "currency": "USD",
7
+ "tax": 24.99,
8
+ "shipping": 15.00
9
+ },
10
+ "user": {
11
+ "id": "user_abc123",
12
+ "email": "customer@example.com",
13
+ "gclid": "CjwKCAiA_xyz123ABC"
14
+ },
15
+ "source": {
16
+ "id": "https://example.com/thankyou.html?email=customer@example.com&order=ORD-2024-12345&gclid=CjwKCAiA_xyz123ABC",
17
+ "type": "web"
18
+ },
19
+ "nested": [
20
+ {
21
+ "type": "product",
22
+ "data": {
23
+ "id": "PROD-001",
24
+ "name": "Wireless Headphones",
25
+ "price": 149.99,
26
+ "quantity": 1,
27
+ "category": "Electronics"
28
+ }
29
+ },
30
+ {
31
+ "type": "product",
32
+ "data": {
33
+ "id": "PROD-002",
34
+ "name": "Phone Case",
35
+ "price": 29.99,
36
+ "quantity": 2,
37
+ "category": "Accessories"
38
+ }
39
+ }
40
+ ],
41
+ "consent": {
42
+ "functional": true,
43
+ "marketing": true
44
+ },
45
+ "globals": {
46
+ "language": "en",
47
+ "country": "US"
48
+ },
49
+ "context": {
50
+ "session": ["sess_xyz789", 1],
51
+ "page": ["/thankyou", 0]
52
+ }
53
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "flow": {
3
+ "platform": "web",
4
+ "destinations": {
5
+ "demo": {
6
+ "code": "destinationDemo",
7
+ "config": {
8
+ "consent": {
9
+ "marketing": true
10
+ },
11
+ "settings": {
12
+ "name": "Order Complete with Consent Demo",
13
+ "values": ["name", "data", "user", "source", "consent"]
14
+ },
15
+ "mapping": {
16
+ "order": {
17
+ "complete": {
18
+ "name": "purchase",
19
+ "data": {
20
+ "map": {
21
+ "transaction_id": "data.id",
22
+ "value": "data.total",
23
+ "currency": "data.currency",
24
+ "tax": "data.tax",
25
+ "shipping": "data.shipping",
26
+ "email": {
27
+ "key": "user.email",
28
+ "consent": {
29
+ "marketing": true
30
+ }
31
+ },
32
+ "gclid": {
33
+ "key": "user.gclid",
34
+ "consent": {
35
+ "marketing": true
36
+ }
37
+ },
38
+ "source_url": "source.id"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "collector": {
48
+ "run": true,
49
+ "globals": {
50
+ "environment": "production",
51
+ "version": "1.0.0"
52
+ }
53
+ }
54
+ },
55
+ "build": {
56
+ "packages": {
57
+ "@walkeros/collector": {
58
+ "version": "latest",
59
+ "imports": ["startFlow"]
60
+ },
61
+ "@walkeros/destination-demo": {
62
+ "version": "latest",
63
+ "imports": ["destinationDemo"]
64
+ }
65
+ },
66
+ "output": "flow-order-complete.js"
67
+ }
68
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "flow": {
3
+ "platform": "web",
4
+ "destinations": {
5
+ "demo": {
6
+ "code": "destinationDemo",
7
+ "config": {
8
+ "settings": {
9
+ "name": "Simple Demo",
10
+ "values": ["name", "data", "user", "consent"]
11
+ }
12
+ }
13
+ }
14
+ },
15
+ "collector": {
16
+ "run": true
17
+ }
18
+ },
19
+ "build": {
20
+ "packages": {
21
+ "@walkeros/collector": {
22
+ "version": "latest",
23
+ "imports": ["startFlow"]
24
+ },
25
+ "@walkeros/destination-demo": {
26
+ "version": "latest",
27
+ "imports": ["destinationDemo"]
28
+ }
29
+ },
30
+ "output": "flow-simple.js"
31
+ }
32
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "flow": {
3
+ "platform": "web",
4
+ "destinations": {
5
+ "ga4": {
6
+ "code": "destinationGtag",
7
+ "config": {
8
+ "consent": {
9
+ "marketing": true
10
+ },
11
+ "settings": {
12
+ "ga4": {
13
+ "measurementId": "G-XXXXXXXXXX"
14
+ }
15
+ },
16
+ "mapping": {
17
+ "order": {
18
+ "complete": {
19
+ "name": "purchase",
20
+ "data": {
21
+ "map": {
22
+ "transaction_id": "data.id",
23
+ "value": "data.total",
24
+ "currency": "data.currency",
25
+ "tax": "data.tax",
26
+ "shipping": "data.shipping",
27
+ "email": {
28
+ "key": "user.email",
29
+ "consent": {
30
+ "marketing": true
31
+ }
32
+ },
33
+ "gclid": {
34
+ "key": "user.gclid",
35
+ "consent": {
36
+ "marketing": true
37
+ }
38
+ },
39
+ "source_url": "source.id"
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "demo": {
48
+ "code": "destinationDemo",
49
+ "config": {
50
+ "settings": {
51
+ "name": "Order Complete Demo",
52
+ "values": ["name", "data", "user", "source", "consent"]
53
+ }
54
+ }
55
+ }
56
+ },
57
+ "collector": {
58
+ "run": true,
59
+ "globals": {
60
+ "environment": "production",
61
+ "version": "1.0.0"
62
+ }
63
+ }
64
+ },
65
+ "build": {
66
+ "packages": {
67
+ "@walkeros/collector": {
68
+ "version": "latest",
69
+ "imports": ["startFlow"]
70
+ },
71
+ "@walkeros/web-destination-gtag": {
72
+ "version": "latest",
73
+ "imports": ["destinationGtag"]
74
+ },
75
+ "@walkeros/destination-demo": {
76
+ "version": "latest",
77
+ "imports": ["destinationDemo"]
78
+ }
79
+ },
80
+ "output": "flow.js"
81
+ }
82
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "flow": {
3
+ "platform": "server",
4
+ "sources": {
5
+ "http": {
6
+ "code": "sourceExpress",
7
+ "config": {
8
+ "settings": {
9
+ "path": "/collect",
10
+ "port": 8080,
11
+ "cors": true,
12
+ "healthCheck": true
13
+ }
14
+ }
15
+ }
16
+ },
17
+ "destinations": {
18
+ "demo": {
19
+ "code": "destinationDemo",
20
+ "config": {
21
+ "settings": {
22
+ "name": "Server Collection Demo",
23
+ "values": ["name", "data", "context", "user", "nested", "timestamp"]
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "collector": {
29
+ "run": true,
30
+ "globals": {
31
+ "environment": "test",
32
+ "version": "1.0.0"
33
+ }
34
+ }
35
+ },
36
+ "build": {
37
+ "packages": {
38
+ "@walkeros/collector": {
39
+ "version": "latest",
40
+ "imports": ["startFlow"]
41
+ },
42
+ "@walkeros/server-source-express": {
43
+ "version": "latest",
44
+ "imports": ["sourceExpress"]
45
+ },
46
+ "@walkeros/destination-demo": {
47
+ "version": "latest",
48
+ "imports": ["destinationDemo"]
49
+ }
50
+ },
51
+ "output": "server-collect.mjs"
52
+ }
53
+ }