make-mp-data 3.0.3 → 3.0.5
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/README.md +46 -0
- package/dungeons/array-of-object-lookup-schema.json +327 -0
- package/dungeons/array-of-object-lookup.js +29 -9
- package/dungeons/capstone/capstone-ic3.js +291 -0
- package/dungeons/capstone/capstone-ic4.js +598 -0
- package/dungeons/capstone/capstone-ic5.js +668 -0
- package/dungeons/capstone/generate-product-lookup.js +309 -0
- package/dungeons/ecommerce-schema.json +462 -0
- package/dungeons/{copilot.js → ecommerce.js} +79 -17
- package/dungeons/education-schema.json +2409 -0
- package/dungeons/education.js +226 -462
- package/dungeons/fintech-schema.json +14034 -0
- package/dungeons/fintech.js +134 -413
- package/dungeons/foobar-schema.json +403 -0
- package/dungeons/foobar.js +27 -4
- package/dungeons/food-delivery-schema.json +192 -0
- package/dungeons/food-delivery.js +602 -0
- package/dungeons/food-schema.json +1152 -0
- package/dungeons/food.js +173 -406
- package/dungeons/gaming-schema.json +1270 -0
- package/dungeons/gaming.js +182 -42
- package/dungeons/insurance-application-schema.json +204 -0
- package/dungeons/insurance-application.js +605 -0
- package/dungeons/media-schema.json +906 -0
- package/dungeons/media.js +250 -420
- package/dungeons/retention-cadence-schema.json +78 -0
- package/dungeons/retention-cadence.js +35 -1
- package/dungeons/rpg-schema.json +4526 -0
- package/dungeons/rpg.js +171 -429
- package/dungeons/sanity-schema.json +255 -0
- package/dungeons/sanity.js +21 -10
- package/dungeons/sass-schema.json +1291 -0
- package/dungeons/sass.js +241 -368
- package/dungeons/scd-schema.json +919 -0
- package/dungeons/scd.js +41 -13
- package/dungeons/simple-schema.json +608 -0
- package/dungeons/simple.js +52 -15
- package/dungeons/simplest-schema.json +1418 -0
- package/dungeons/simplest.js +392 -0
- package/dungeons/social-schema.json +1118 -0
- package/dungeons/social.js +150 -391
- package/dungeons/text-generation-schema.json +3096 -0
- package/dungeons/text-generation.js +71 -0
- package/index.js +8 -6
- package/lib/core/config-validator.js +28 -8
- package/lib/core/storage.js +5 -5
- package/lib/generators/events.js +4 -4
- package/lib/orchestrators/mixpanel-sender.js +16 -13
- package/lib/orchestrators/user-loop.js +14 -6
- package/lib/templates/soup-presets.js +188 -0
- package/lib/utils/utils.js +52 -6
- package/package.json +1 -1
- package/types.d.ts +20 -3
- package/dungeons/adspend.js +0 -130
- package/dungeons/anon.js +0 -128
- package/dungeons/benchmark-heavy.js +0 -240
- package/dungeons/benchmark-light.js +0 -140
- package/dungeons/big.js +0 -226
- package/dungeons/business.js +0 -391
- package/dungeons/complex.js +0 -428
- package/dungeons/experiments.js +0 -137
- package/dungeons/funnels.js +0 -309
- package/dungeons/mil.js +0 -323
- package/dungeons/mirror.js +0 -161
- package/dungeons/soup-test.js +0 -52
- package/dungeons/streaming.js +0 -372
- package/dungeons/strict-event-test.js +0 -30
- package/dungeons/student-teacher.js +0 -438
- package/dungeons/too-big-events.js +0 -203
- package/dungeons/user-agent.js +0 -209
|
@@ -0,0 +1,1418 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"token": "",
|
|
4
|
+
"seed": "simple is best",
|
|
5
|
+
"numDays": 100,
|
|
6
|
+
"numEvents": 250000,
|
|
7
|
+
"numUsers": 2500,
|
|
8
|
+
"format": "json",
|
|
9
|
+
"region": "US",
|
|
10
|
+
"hasAnonIds": false,
|
|
11
|
+
"hasSessionIds": false,
|
|
12
|
+
"hasAdSpend": false,
|
|
13
|
+
"hasLocation": false,
|
|
14
|
+
"hasAndroidDevices": false,
|
|
15
|
+
"hasIOSDevices": false,
|
|
16
|
+
"hasDesktopDevices": false,
|
|
17
|
+
"hasBrowser": false,
|
|
18
|
+
"hasCampaigns": false,
|
|
19
|
+
"isAnonymous": false,
|
|
20
|
+
"alsoInferFunnels": false,
|
|
21
|
+
"concurrency": 1,
|
|
22
|
+
"batchSize": 2500000,
|
|
23
|
+
"writeToDisk": false,
|
|
24
|
+
"events": [
|
|
25
|
+
{
|
|
26
|
+
"event": "page view",
|
|
27
|
+
"weight": 10,
|
|
28
|
+
"properties": {
|
|
29
|
+
"page": {
|
|
30
|
+
"functionName": "arrow",
|
|
31
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
32
|
+
},
|
|
33
|
+
"utm_source": {
|
|
34
|
+
"functionName": "arrow",
|
|
35
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"event": "sign up",
|
|
41
|
+
"weight": 1,
|
|
42
|
+
"isFirstEvent": true,
|
|
43
|
+
"properties": {
|
|
44
|
+
"signupMethod": [
|
|
45
|
+
"email",
|
|
46
|
+
"google",
|
|
47
|
+
"facebook",
|
|
48
|
+
"github"
|
|
49
|
+
],
|
|
50
|
+
"referral": {
|
|
51
|
+
"functionName": "arrow",
|
|
52
|
+
"body": "function generateWeightedArray() {\n\t\tconst weightedArray = [];\n\n\t\t// Add each value to the array the number of times specified by its weight\n\t\tweightedItems.forEach(({ value, weight }) => {\n\t\t\tif (!weight) weight = 1;\n\t\t\tfor (let i = 0; i < weight; i++) {\n\t\t\t\tweightedArray.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn weightedArray;\n\t}"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"event": "login",
|
|
58
|
+
"weight": 8,
|
|
59
|
+
"properties": {
|
|
60
|
+
"method": [
|
|
61
|
+
"password",
|
|
62
|
+
"google",
|
|
63
|
+
"facebook",
|
|
64
|
+
"github"
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"event": "search",
|
|
70
|
+
"weight": 7,
|
|
71
|
+
"properties": {
|
|
72
|
+
"query_length": [
|
|
73
|
+
18,
|
|
74
|
+
15,
|
|
75
|
+
11,
|
|
76
|
+
20,
|
|
77
|
+
31,
|
|
78
|
+
31,
|
|
79
|
+
18,
|
|
80
|
+
29,
|
|
81
|
+
8,
|
|
82
|
+
22,
|
|
83
|
+
13,
|
|
84
|
+
25,
|
|
85
|
+
13,
|
|
86
|
+
42,
|
|
87
|
+
11,
|
|
88
|
+
25,
|
|
89
|
+
50,
|
|
90
|
+
29,
|
|
91
|
+
17,
|
|
92
|
+
30,
|
|
93
|
+
8,
|
|
94
|
+
23,
|
|
95
|
+
18,
|
|
96
|
+
14,
|
|
97
|
+
17,
|
|
98
|
+
11,
|
|
99
|
+
11,
|
|
100
|
+
12,
|
|
101
|
+
19,
|
|
102
|
+
24,
|
|
103
|
+
35,
|
|
104
|
+
14,
|
|
105
|
+
17,
|
|
106
|
+
22,
|
|
107
|
+
21,
|
|
108
|
+
19,
|
|
109
|
+
33,
|
|
110
|
+
25,
|
|
111
|
+
13,
|
|
112
|
+
22,
|
|
113
|
+
26,
|
|
114
|
+
31,
|
|
115
|
+
19,
|
|
116
|
+
41,
|
|
117
|
+
16,
|
|
118
|
+
21,
|
|
119
|
+
39,
|
|
120
|
+
16,
|
|
121
|
+
12,
|
|
122
|
+
26
|
|
123
|
+
],
|
|
124
|
+
"resultsReturned": [
|
|
125
|
+
33,
|
|
126
|
+
77,
|
|
127
|
+
73,
|
|
128
|
+
77,
|
|
129
|
+
25,
|
|
130
|
+
64,
|
|
131
|
+
24,
|
|
132
|
+
73,
|
|
133
|
+
27,
|
|
134
|
+
78,
|
|
135
|
+
24,
|
|
136
|
+
75,
|
|
137
|
+
75,
|
|
138
|
+
73,
|
|
139
|
+
26,
|
|
140
|
+
75,
|
|
141
|
+
27,
|
|
142
|
+
68,
|
|
143
|
+
78,
|
|
144
|
+
72,
|
|
145
|
+
33,
|
|
146
|
+
75,
|
|
147
|
+
29,
|
|
148
|
+
29,
|
|
149
|
+
34,
|
|
150
|
+
32,
|
|
151
|
+
25,
|
|
152
|
+
38,
|
|
153
|
+
30,
|
|
154
|
+
27,
|
|
155
|
+
27,
|
|
156
|
+
25,
|
|
157
|
+
68,
|
|
158
|
+
20,
|
|
159
|
+
21,
|
|
160
|
+
34,
|
|
161
|
+
32,
|
|
162
|
+
60,
|
|
163
|
+
31,
|
|
164
|
+
69,
|
|
165
|
+
72,
|
|
166
|
+
27,
|
|
167
|
+
26,
|
|
168
|
+
22,
|
|
169
|
+
25,
|
|
170
|
+
22,
|
|
171
|
+
35,
|
|
172
|
+
77,
|
|
173
|
+
24,
|
|
174
|
+
25
|
|
175
|
+
],
|
|
176
|
+
"category": {
|
|
177
|
+
"functionName": "arrow",
|
|
178
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"event": "view item",
|
|
184
|
+
"weight": 9,
|
|
185
|
+
"properties": {
|
|
186
|
+
"isFeaturedItem": [
|
|
187
|
+
true,
|
|
188
|
+
false,
|
|
189
|
+
false
|
|
190
|
+
],
|
|
191
|
+
"itemCategory": {
|
|
192
|
+
"functionName": "arrow",
|
|
193
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
194
|
+
},
|
|
195
|
+
"price": [
|
|
196
|
+
128,
|
|
197
|
+
127,
|
|
198
|
+
374,
|
|
199
|
+
165,
|
|
200
|
+
329,
|
|
201
|
+
358,
|
|
202
|
+
129,
|
|
203
|
+
122,
|
|
204
|
+
126,
|
|
205
|
+
143,
|
|
206
|
+
201,
|
|
207
|
+
131,
|
|
208
|
+
108,
|
|
209
|
+
146,
|
|
210
|
+
134,
|
|
211
|
+
398,
|
|
212
|
+
131,
|
|
213
|
+
128,
|
|
214
|
+
143,
|
|
215
|
+
156,
|
|
216
|
+
363,
|
|
217
|
+
365,
|
|
218
|
+
125,
|
|
219
|
+
189,
|
|
220
|
+
147,
|
|
221
|
+
145,
|
|
222
|
+
134,
|
|
223
|
+
175,
|
|
224
|
+
117,
|
|
225
|
+
124,
|
|
226
|
+
375,
|
|
227
|
+
138,
|
|
228
|
+
169,
|
|
229
|
+
134,
|
|
230
|
+
170,
|
|
231
|
+
362,
|
|
232
|
+
143,
|
|
233
|
+
128,
|
|
234
|
+
141,
|
|
235
|
+
142,
|
|
236
|
+
127,
|
|
237
|
+
364,
|
|
238
|
+
341,
|
|
239
|
+
367,
|
|
240
|
+
364,
|
|
241
|
+
123,
|
|
242
|
+
346,
|
|
243
|
+
362,
|
|
244
|
+
223,
|
|
245
|
+
360
|
|
246
|
+
],
|
|
247
|
+
"rating": [
|
|
248
|
+
2,
|
|
249
|
+
2,
|
|
250
|
+
2,
|
|
251
|
+
3,
|
|
252
|
+
3,
|
|
253
|
+
3,
|
|
254
|
+
2,
|
|
255
|
+
1,
|
|
256
|
+
2,
|
|
257
|
+
5,
|
|
258
|
+
2,
|
|
259
|
+
2,
|
|
260
|
+
2,
|
|
261
|
+
2,
|
|
262
|
+
2,
|
|
263
|
+
2,
|
|
264
|
+
3,
|
|
265
|
+
2,
|
|
266
|
+
4,
|
|
267
|
+
3,
|
|
268
|
+
2,
|
|
269
|
+
2,
|
|
270
|
+
3,
|
|
271
|
+
3,
|
|
272
|
+
2,
|
|
273
|
+
4,
|
|
274
|
+
3,
|
|
275
|
+
4,
|
|
276
|
+
2,
|
|
277
|
+
2,
|
|
278
|
+
3,
|
|
279
|
+
5,
|
|
280
|
+
5,
|
|
281
|
+
2,
|
|
282
|
+
2,
|
|
283
|
+
2,
|
|
284
|
+
2,
|
|
285
|
+
4,
|
|
286
|
+
2,
|
|
287
|
+
2,
|
|
288
|
+
3,
|
|
289
|
+
4,
|
|
290
|
+
3,
|
|
291
|
+
1,
|
|
292
|
+
2,
|
|
293
|
+
3,
|
|
294
|
+
3,
|
|
295
|
+
2,
|
|
296
|
+
5,
|
|
297
|
+
4
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"event": "add to cart",
|
|
303
|
+
"weight": 5,
|
|
304
|
+
"properties": {
|
|
305
|
+
"amount": [
|
|
306
|
+
130,
|
|
307
|
+
380,
|
|
308
|
+
342,
|
|
309
|
+
180,
|
|
310
|
+
174,
|
|
311
|
+
116,
|
|
312
|
+
363,
|
|
313
|
+
128,
|
|
314
|
+
201,
|
|
315
|
+
356,
|
|
316
|
+
164,
|
|
317
|
+
126,
|
|
318
|
+
141,
|
|
319
|
+
149,
|
|
320
|
+
130,
|
|
321
|
+
161,
|
|
322
|
+
291,
|
|
323
|
+
133,
|
|
324
|
+
154,
|
|
325
|
+
170,
|
|
326
|
+
135,
|
|
327
|
+
129,
|
|
328
|
+
121,
|
|
329
|
+
131,
|
|
330
|
+
159,
|
|
331
|
+
324,
|
|
332
|
+
382,
|
|
333
|
+
151,
|
|
334
|
+
120,
|
|
335
|
+
339,
|
|
336
|
+
363,
|
|
337
|
+
375,
|
|
338
|
+
130,
|
|
339
|
+
346,
|
|
340
|
+
112,
|
|
341
|
+
151,
|
|
342
|
+
375,
|
|
343
|
+
148,
|
|
344
|
+
331,
|
|
345
|
+
153,
|
|
346
|
+
135,
|
|
347
|
+
288,
|
|
348
|
+
99,
|
|
349
|
+
342,
|
|
350
|
+
384,
|
|
351
|
+
127,
|
|
352
|
+
125,
|
|
353
|
+
145,
|
|
354
|
+
128,
|
|
355
|
+
128
|
|
356
|
+
],
|
|
357
|
+
"itemCategory": {
|
|
358
|
+
"functionName": "arrow",
|
|
359
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
360
|
+
},
|
|
361
|
+
"numItems": [
|
|
362
|
+
4,
|
|
363
|
+
3,
|
|
364
|
+
4,
|
|
365
|
+
1,
|
|
366
|
+
4,
|
|
367
|
+
3,
|
|
368
|
+
2,
|
|
369
|
+
4,
|
|
370
|
+
2,
|
|
371
|
+
4,
|
|
372
|
+
2,
|
|
373
|
+
3,
|
|
374
|
+
2,
|
|
375
|
+
3,
|
|
376
|
+
2,
|
|
377
|
+
2,
|
|
378
|
+
4,
|
|
379
|
+
2,
|
|
380
|
+
2,
|
|
381
|
+
3,
|
|
382
|
+
2,
|
|
383
|
+
3,
|
|
384
|
+
3,
|
|
385
|
+
2,
|
|
386
|
+
3,
|
|
387
|
+
3,
|
|
388
|
+
2,
|
|
389
|
+
2,
|
|
390
|
+
2,
|
|
391
|
+
2,
|
|
392
|
+
2,
|
|
393
|
+
2,
|
|
394
|
+
5,
|
|
395
|
+
2,
|
|
396
|
+
3,
|
|
397
|
+
1,
|
|
398
|
+
3,
|
|
399
|
+
3,
|
|
400
|
+
2,
|
|
401
|
+
4,
|
|
402
|
+
2,
|
|
403
|
+
2,
|
|
404
|
+
3,
|
|
405
|
+
3,
|
|
406
|
+
4,
|
|
407
|
+
3,
|
|
408
|
+
2,
|
|
409
|
+
2,
|
|
410
|
+
2,
|
|
411
|
+
3
|
|
412
|
+
]
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"event": "checkout",
|
|
417
|
+
"weight": 3,
|
|
418
|
+
"properties": {
|
|
419
|
+
"amount": [
|
|
420
|
+
131,
|
|
421
|
+
368,
|
|
422
|
+
362,
|
|
423
|
+
170,
|
|
424
|
+
366,
|
|
425
|
+
143,
|
|
426
|
+
363,
|
|
427
|
+
167,
|
|
428
|
+
143,
|
|
429
|
+
151,
|
|
430
|
+
187,
|
|
431
|
+
125,
|
|
432
|
+
174,
|
|
433
|
+
255,
|
|
434
|
+
187,
|
|
435
|
+
380,
|
|
436
|
+
346,
|
|
437
|
+
143,
|
|
438
|
+
292,
|
|
439
|
+
136,
|
|
440
|
+
150,
|
|
441
|
+
164,
|
|
442
|
+
144,
|
|
443
|
+
365,
|
|
444
|
+
355,
|
|
445
|
+
123,
|
|
446
|
+
117,
|
|
447
|
+
141,
|
|
448
|
+
387,
|
|
449
|
+
365,
|
|
450
|
+
145,
|
|
451
|
+
152,
|
|
452
|
+
361,
|
|
453
|
+
156,
|
|
454
|
+
140,
|
|
455
|
+
359,
|
|
456
|
+
150,
|
|
457
|
+
362,
|
|
458
|
+
132,
|
|
459
|
+
142,
|
|
460
|
+
255,
|
|
461
|
+
160,
|
|
462
|
+
141,
|
|
463
|
+
383,
|
|
464
|
+
383,
|
|
465
|
+
132,
|
|
466
|
+
161,
|
|
467
|
+
141,
|
|
468
|
+
134,
|
|
469
|
+
138
|
|
470
|
+
],
|
|
471
|
+
"currency": [
|
|
472
|
+
"USD",
|
|
473
|
+
"CAD",
|
|
474
|
+
"EUR",
|
|
475
|
+
"JPY"
|
|
476
|
+
],
|
|
477
|
+
"coupon": {
|
|
478
|
+
"functionName": "arrow",
|
|
479
|
+
"body": "function generateWeightedArray() {\n\t\tconst weightedArray = [];\n\n\t\t// Add each value to the array the number of times specified by its weight\n\t\tweightedItems.forEach(({ value, weight }) => {\n\t\t\tif (!weight) weight = 1;\n\t\t\tfor (let i = 0; i < weight; i++) {\n\t\t\t\tweightedArray.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn weightedArray;\n\t}"
|
|
480
|
+
},
|
|
481
|
+
"numItems": [
|
|
482
|
+
6,
|
|
483
|
+
3,
|
|
484
|
+
4,
|
|
485
|
+
5,
|
|
486
|
+
6,
|
|
487
|
+
3,
|
|
488
|
+
8,
|
|
489
|
+
4,
|
|
490
|
+
7,
|
|
491
|
+
2,
|
|
492
|
+
4,
|
|
493
|
+
3,
|
|
494
|
+
5,
|
|
495
|
+
4,
|
|
496
|
+
3,
|
|
497
|
+
5,
|
|
498
|
+
7,
|
|
499
|
+
3,
|
|
500
|
+
5,
|
|
501
|
+
5,
|
|
502
|
+
1,
|
|
503
|
+
3,
|
|
504
|
+
5,
|
|
505
|
+
5,
|
|
506
|
+
3,
|
|
507
|
+
5,
|
|
508
|
+
4,
|
|
509
|
+
5,
|
|
510
|
+
3,
|
|
511
|
+
5,
|
|
512
|
+
4,
|
|
513
|
+
6,
|
|
514
|
+
8,
|
|
515
|
+
8,
|
|
516
|
+
7,
|
|
517
|
+
5,
|
|
518
|
+
5,
|
|
519
|
+
6,
|
|
520
|
+
5,
|
|
521
|
+
8,
|
|
522
|
+
4,
|
|
523
|
+
4,
|
|
524
|
+
5,
|
|
525
|
+
5,
|
|
526
|
+
8,
|
|
527
|
+
4,
|
|
528
|
+
3,
|
|
529
|
+
4,
|
|
530
|
+
9,
|
|
531
|
+
7
|
|
532
|
+
]
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"event": "watch video",
|
|
537
|
+
"weight": 6,
|
|
538
|
+
"properties": {
|
|
539
|
+
"videoCategory": {
|
|
540
|
+
"functionName": "arrow",
|
|
541
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
542
|
+
},
|
|
543
|
+
"watchTimeSec": [
|
|
544
|
+
413,
|
|
545
|
+
153,
|
|
546
|
+
494,
|
|
547
|
+
430,
|
|
548
|
+
191,
|
|
549
|
+
440,
|
|
550
|
+
149,
|
|
551
|
+
443,
|
|
552
|
+
153,
|
|
553
|
+
411,
|
|
554
|
+
171,
|
|
555
|
+
435,
|
|
556
|
+
158,
|
|
557
|
+
162,
|
|
558
|
+
154,
|
|
559
|
+
400,
|
|
560
|
+
168,
|
|
561
|
+
162,
|
|
562
|
+
172,
|
|
563
|
+
458,
|
|
564
|
+
173,
|
|
565
|
+
459,
|
|
566
|
+
148,
|
|
567
|
+
141,
|
|
568
|
+
160,
|
|
569
|
+
187,
|
|
570
|
+
161,
|
|
571
|
+
432,
|
|
572
|
+
421,
|
|
573
|
+
194,
|
|
574
|
+
149,
|
|
575
|
+
154,
|
|
576
|
+
459,
|
|
577
|
+
464,
|
|
578
|
+
400,
|
|
579
|
+
134,
|
|
580
|
+
167,
|
|
581
|
+
163,
|
|
582
|
+
407,
|
|
583
|
+
182,
|
|
584
|
+
165,
|
|
585
|
+
386,
|
|
586
|
+
167,
|
|
587
|
+
439,
|
|
588
|
+
200,
|
|
589
|
+
157,
|
|
590
|
+
159,
|
|
591
|
+
401,
|
|
592
|
+
157,
|
|
593
|
+
225
|
|
594
|
+
],
|
|
595
|
+
"quality": [
|
|
596
|
+
"1080p",
|
|
597
|
+
"720p",
|
|
598
|
+
"480p",
|
|
599
|
+
"360p"
|
|
600
|
+
]
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"event": "share content",
|
|
605
|
+
"weight": 2,
|
|
606
|
+
"properties": {
|
|
607
|
+
"platform": [
|
|
608
|
+
"twitter",
|
|
609
|
+
"facebook",
|
|
610
|
+
"linkedin",
|
|
611
|
+
"email",
|
|
612
|
+
"link"
|
|
613
|
+
],
|
|
614
|
+
"contentType": [
|
|
615
|
+
"video",
|
|
616
|
+
"product",
|
|
617
|
+
"article"
|
|
618
|
+
]
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"event": "rate item",
|
|
623
|
+
"weight": 4,
|
|
624
|
+
"properties": {
|
|
625
|
+
"rating": [
|
|
626
|
+
1,
|
|
627
|
+
2,
|
|
628
|
+
4,
|
|
629
|
+
3,
|
|
630
|
+
3,
|
|
631
|
+
2,
|
|
632
|
+
3,
|
|
633
|
+
1,
|
|
634
|
+
1,
|
|
635
|
+
2,
|
|
636
|
+
3,
|
|
637
|
+
3,
|
|
638
|
+
3,
|
|
639
|
+
3,
|
|
640
|
+
3,
|
|
641
|
+
2,
|
|
642
|
+
4,
|
|
643
|
+
2,
|
|
644
|
+
4,
|
|
645
|
+
4,
|
|
646
|
+
2,
|
|
647
|
+
2,
|
|
648
|
+
3,
|
|
649
|
+
1,
|
|
650
|
+
4,
|
|
651
|
+
3,
|
|
652
|
+
4,
|
|
653
|
+
3,
|
|
654
|
+
4,
|
|
655
|
+
3,
|
|
656
|
+
2,
|
|
657
|
+
3,
|
|
658
|
+
2,
|
|
659
|
+
2,
|
|
660
|
+
3,
|
|
661
|
+
4,
|
|
662
|
+
5,
|
|
663
|
+
2,
|
|
664
|
+
3,
|
|
665
|
+
3,
|
|
666
|
+
2,
|
|
667
|
+
3,
|
|
668
|
+
2,
|
|
669
|
+
3,
|
|
670
|
+
3,
|
|
671
|
+
4,
|
|
672
|
+
2,
|
|
673
|
+
2,
|
|
674
|
+
3,
|
|
675
|
+
3
|
|
676
|
+
],
|
|
677
|
+
"itemCategory": {
|
|
678
|
+
"functionName": "arrow",
|
|
679
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
680
|
+
},
|
|
681
|
+
"hasReviewText": [
|
|
682
|
+
true,
|
|
683
|
+
false,
|
|
684
|
+
false,
|
|
685
|
+
false
|
|
686
|
+
]
|
|
687
|
+
}
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"event": "support ticket",
|
|
691
|
+
"weight": 2,
|
|
692
|
+
"properties": {
|
|
693
|
+
"priority": {
|
|
694
|
+
"functionName": "arrow",
|
|
695
|
+
"body": "function generateWeightedArray() {\n\t\tconst weightedArray = [];\n\n\t\t// Add each value to the array the number of times specified by its weight\n\t\tweightedItems.forEach(({ value, weight }) => {\n\t\t\tif (!weight) weight = 1;\n\t\t\tfor (let i = 0; i < weight; i++) {\n\t\t\t\tweightedArray.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn weightedArray;\n\t}"
|
|
696
|
+
},
|
|
697
|
+
"category": [
|
|
698
|
+
"billing",
|
|
699
|
+
"technical",
|
|
700
|
+
"account",
|
|
701
|
+
"shipping",
|
|
702
|
+
"returns"
|
|
703
|
+
]
|
|
704
|
+
}
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"event": "add to wishlist",
|
|
708
|
+
"weight": 4,
|
|
709
|
+
"properties": {
|
|
710
|
+
"itemCategory": {
|
|
711
|
+
"functionName": "arrow",
|
|
712
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
713
|
+
},
|
|
714
|
+
"price": [
|
|
715
|
+
324,
|
|
716
|
+
144,
|
|
717
|
+
121,
|
|
718
|
+
184,
|
|
719
|
+
389,
|
|
720
|
+
141,
|
|
721
|
+
120,
|
|
722
|
+
360,
|
|
723
|
+
361,
|
|
724
|
+
352,
|
|
725
|
+
297,
|
|
726
|
+
133,
|
|
727
|
+
335,
|
|
728
|
+
169,
|
|
729
|
+
388,
|
|
730
|
+
121,
|
|
731
|
+
163,
|
|
732
|
+
175,
|
|
733
|
+
384,
|
|
734
|
+
215,
|
|
735
|
+
163,
|
|
736
|
+
132,
|
|
737
|
+
126,
|
|
738
|
+
345,
|
|
739
|
+
378,
|
|
740
|
+
332,
|
|
741
|
+
122,
|
|
742
|
+
139,
|
|
743
|
+
150,
|
|
744
|
+
357,
|
|
745
|
+
151,
|
|
746
|
+
138,
|
|
747
|
+
125,
|
|
748
|
+
120,
|
|
749
|
+
138,
|
|
750
|
+
125,
|
|
751
|
+
149,
|
|
752
|
+
113,
|
|
753
|
+
158,
|
|
754
|
+
125,
|
|
755
|
+
120,
|
|
756
|
+
368,
|
|
757
|
+
379,
|
|
758
|
+
114,
|
|
759
|
+
253,
|
|
760
|
+
127,
|
|
761
|
+
145,
|
|
762
|
+
340,
|
|
763
|
+
143,
|
|
764
|
+
381
|
|
765
|
+
]
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"event": "remove from cart",
|
|
770
|
+
"weight": 3,
|
|
771
|
+
"properties": {
|
|
772
|
+
"reason": {
|
|
773
|
+
"functionName": "arrow",
|
|
774
|
+
"body": "function generateWeightedArray() {\n\t\tconst weightedArray = [];\n\n\t\t// Add each value to the array the number of times specified by its weight\n\t\tweightedItems.forEach(({ value, weight }) => {\n\t\t\tif (!weight) weight = 1;\n\t\t\tfor (let i = 0; i < weight; i++) {\n\t\t\t\tweightedArray.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn weightedArray;\n\t}"
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"event": "apply coupon",
|
|
780
|
+
"weight": 2,
|
|
781
|
+
"properties": {
|
|
782
|
+
"couponCode": {
|
|
783
|
+
"functionName": "arrow",
|
|
784
|
+
"body": "function generateWeightedArray() {\n\t\tconst weightedArray = [];\n\n\t\t// Add each value to the array the number of times specified by its weight\n\t\tweightedItems.forEach(({ value, weight }) => {\n\t\t\tif (!weight) weight = 1;\n\t\t\tfor (let i = 0; i < weight; i++) {\n\t\t\t\tweightedArray.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn weightedArray;\n\t}"
|
|
785
|
+
},
|
|
786
|
+
"discountPercent": [
|
|
787
|
+
24,
|
|
788
|
+
7,
|
|
789
|
+
38,
|
|
790
|
+
19,
|
|
791
|
+
15,
|
|
792
|
+
25,
|
|
793
|
+
23,
|
|
794
|
+
28,
|
|
795
|
+
5,
|
|
796
|
+
17,
|
|
797
|
+
26,
|
|
798
|
+
23,
|
|
799
|
+
39,
|
|
800
|
+
32,
|
|
801
|
+
19,
|
|
802
|
+
38,
|
|
803
|
+
31,
|
|
804
|
+
29,
|
|
805
|
+
39,
|
|
806
|
+
21,
|
|
807
|
+
40,
|
|
808
|
+
13,
|
|
809
|
+
47,
|
|
810
|
+
19,
|
|
811
|
+
16,
|
|
812
|
+
24,
|
|
813
|
+
11,
|
|
814
|
+
15,
|
|
815
|
+
26,
|
|
816
|
+
24,
|
|
817
|
+
20,
|
|
818
|
+
15,
|
|
819
|
+
29,
|
|
820
|
+
28,
|
|
821
|
+
26,
|
|
822
|
+
14,
|
|
823
|
+
28,
|
|
824
|
+
35,
|
|
825
|
+
15,
|
|
826
|
+
37,
|
|
827
|
+
39,
|
|
828
|
+
35,
|
|
829
|
+
23,
|
|
830
|
+
9,
|
|
831
|
+
11,
|
|
832
|
+
31,
|
|
833
|
+
36,
|
|
834
|
+
21,
|
|
835
|
+
36,
|
|
836
|
+
25
|
|
837
|
+
]
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"event": "notification received",
|
|
842
|
+
"weight": 7,
|
|
843
|
+
"properties": {
|
|
844
|
+
"channel": [
|
|
845
|
+
"push",
|
|
846
|
+
"email",
|
|
847
|
+
"in-app",
|
|
848
|
+
"sms"
|
|
849
|
+
],
|
|
850
|
+
"type": [
|
|
851
|
+
"promo",
|
|
852
|
+
"order update",
|
|
853
|
+
"recommendation",
|
|
854
|
+
"reminder"
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
"event": "notification clicked",
|
|
860
|
+
"weight": 5,
|
|
861
|
+
"properties": {
|
|
862
|
+
"channel": [
|
|
863
|
+
"push",
|
|
864
|
+
"email",
|
|
865
|
+
"in-app",
|
|
866
|
+
"sms"
|
|
867
|
+
],
|
|
868
|
+
"type": [
|
|
869
|
+
"promo",
|
|
870
|
+
"order update",
|
|
871
|
+
"recommendation",
|
|
872
|
+
"reminder"
|
|
873
|
+
]
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
{
|
|
877
|
+
"event": "add payment method",
|
|
878
|
+
"weight": 1,
|
|
879
|
+
"properties": {
|
|
880
|
+
"type": [
|
|
881
|
+
"credit card",
|
|
882
|
+
"debit card",
|
|
883
|
+
"paypal",
|
|
884
|
+
"apple pay",
|
|
885
|
+
"google pay"
|
|
886
|
+
]
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"event": "update profile",
|
|
891
|
+
"weight": 3,
|
|
892
|
+
"properties": {
|
|
893
|
+
"field": [
|
|
894
|
+
"avatar",
|
|
895
|
+
"name",
|
|
896
|
+
"email",
|
|
897
|
+
"address",
|
|
898
|
+
"phone",
|
|
899
|
+
"preferences"
|
|
900
|
+
]
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
"event": "invite friend",
|
|
905
|
+
"weight": 1,
|
|
906
|
+
"properties": {
|
|
907
|
+
"method": [
|
|
908
|
+
"email",
|
|
909
|
+
"link",
|
|
910
|
+
"sms"
|
|
911
|
+
]
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"event": "view category",
|
|
916
|
+
"weight": 8,
|
|
917
|
+
"properties": {
|
|
918
|
+
"category": {
|
|
919
|
+
"functionName": "arrow",
|
|
920
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
921
|
+
},
|
|
922
|
+
"sortBy": [
|
|
923
|
+
"popular",
|
|
924
|
+
"newest",
|
|
925
|
+
"price low",
|
|
926
|
+
"price high",
|
|
927
|
+
"rating"
|
|
928
|
+
]
|
|
929
|
+
}
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
"event": "save address",
|
|
933
|
+
"weight": 1,
|
|
934
|
+
"properties": {
|
|
935
|
+
"type": [
|
|
936
|
+
"home",
|
|
937
|
+
"work",
|
|
938
|
+
"other"
|
|
939
|
+
]
|
|
940
|
+
}
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"event": "compare items",
|
|
944
|
+
"weight": 3,
|
|
945
|
+
"properties": {
|
|
946
|
+
"numItems": [
|
|
947
|
+
3,
|
|
948
|
+
3,
|
|
949
|
+
3,
|
|
950
|
+
4,
|
|
951
|
+
4,
|
|
952
|
+
3,
|
|
953
|
+
2,
|
|
954
|
+
5,
|
|
955
|
+
3,
|
|
956
|
+
4,
|
|
957
|
+
3,
|
|
958
|
+
3,
|
|
959
|
+
3,
|
|
960
|
+
2,
|
|
961
|
+
3,
|
|
962
|
+
4,
|
|
963
|
+
2,
|
|
964
|
+
5,
|
|
965
|
+
2,
|
|
966
|
+
5,
|
|
967
|
+
3,
|
|
968
|
+
3,
|
|
969
|
+
3,
|
|
970
|
+
4,
|
|
971
|
+
3,
|
|
972
|
+
3,
|
|
973
|
+
3,
|
|
974
|
+
3,
|
|
975
|
+
2,
|
|
976
|
+
4,
|
|
977
|
+
4,
|
|
978
|
+
3,
|
|
979
|
+
3,
|
|
980
|
+
5,
|
|
981
|
+
3,
|
|
982
|
+
4,
|
|
983
|
+
4,
|
|
984
|
+
3,
|
|
985
|
+
4,
|
|
986
|
+
3,
|
|
987
|
+
3,
|
|
988
|
+
3,
|
|
989
|
+
4,
|
|
990
|
+
3,
|
|
991
|
+
3,
|
|
992
|
+
3,
|
|
993
|
+
3,
|
|
994
|
+
3,
|
|
995
|
+
4,
|
|
996
|
+
3
|
|
997
|
+
],
|
|
998
|
+
"itemCategory": {
|
|
999
|
+
"functionName": "arrow",
|
|
1000
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"event": "subscribe newsletter",
|
|
1006
|
+
"weight": 1,
|
|
1007
|
+
"properties": {
|
|
1008
|
+
"frequency": [
|
|
1009
|
+
"daily",
|
|
1010
|
+
"weekly",
|
|
1011
|
+
"monthly"
|
|
1012
|
+
],
|
|
1013
|
+
"topics": {
|
|
1014
|
+
"functionName": "arrow",
|
|
1015
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
"event": "leave review",
|
|
1021
|
+
"weight": 2,
|
|
1022
|
+
"properties": {
|
|
1023
|
+
"rating": [
|
|
1024
|
+
3,
|
|
1025
|
+
2,
|
|
1026
|
+
4,
|
|
1027
|
+
1,
|
|
1028
|
+
4,
|
|
1029
|
+
2,
|
|
1030
|
+
3,
|
|
1031
|
+
4,
|
|
1032
|
+
2,
|
|
1033
|
+
2,
|
|
1034
|
+
2,
|
|
1035
|
+
1,
|
|
1036
|
+
3,
|
|
1037
|
+
3,
|
|
1038
|
+
4,
|
|
1039
|
+
2,
|
|
1040
|
+
3,
|
|
1041
|
+
3,
|
|
1042
|
+
2,
|
|
1043
|
+
2,
|
|
1044
|
+
3,
|
|
1045
|
+
3,
|
|
1046
|
+
2,
|
|
1047
|
+
2,
|
|
1048
|
+
2,
|
|
1049
|
+
1,
|
|
1050
|
+
2,
|
|
1051
|
+
3,
|
|
1052
|
+
2,
|
|
1053
|
+
3,
|
|
1054
|
+
2,
|
|
1055
|
+
2,
|
|
1056
|
+
4,
|
|
1057
|
+
3,
|
|
1058
|
+
4,
|
|
1059
|
+
2,
|
|
1060
|
+
2,
|
|
1061
|
+
3,
|
|
1062
|
+
2,
|
|
1063
|
+
2,
|
|
1064
|
+
2,
|
|
1065
|
+
3,
|
|
1066
|
+
2,
|
|
1067
|
+
2,
|
|
1068
|
+
2,
|
|
1069
|
+
3,
|
|
1070
|
+
3,
|
|
1071
|
+
3,
|
|
1072
|
+
2,
|
|
1073
|
+
1
|
|
1074
|
+
],
|
|
1075
|
+
"wordCount": [
|
|
1076
|
+
62,
|
|
1077
|
+
59,
|
|
1078
|
+
61,
|
|
1079
|
+
52,
|
|
1080
|
+
147,
|
|
1081
|
+
150,
|
|
1082
|
+
54,
|
|
1083
|
+
139,
|
|
1084
|
+
149,
|
|
1085
|
+
68,
|
|
1086
|
+
52,
|
|
1087
|
+
64,
|
|
1088
|
+
51,
|
|
1089
|
+
136,
|
|
1090
|
+
58,
|
|
1091
|
+
140,
|
|
1092
|
+
62,
|
|
1093
|
+
66,
|
|
1094
|
+
56,
|
|
1095
|
+
76,
|
|
1096
|
+
58,
|
|
1097
|
+
65,
|
|
1098
|
+
55,
|
|
1099
|
+
53,
|
|
1100
|
+
50,
|
|
1101
|
+
73,
|
|
1102
|
+
142,
|
|
1103
|
+
64,
|
|
1104
|
+
61,
|
|
1105
|
+
58,
|
|
1106
|
+
145,
|
|
1107
|
+
137,
|
|
1108
|
+
155,
|
|
1109
|
+
64,
|
|
1110
|
+
144,
|
|
1111
|
+
53,
|
|
1112
|
+
71,
|
|
1113
|
+
68,
|
|
1114
|
+
65,
|
|
1115
|
+
54,
|
|
1116
|
+
147,
|
|
1117
|
+
146,
|
|
1118
|
+
55,
|
|
1119
|
+
154,
|
|
1120
|
+
57,
|
|
1121
|
+
146,
|
|
1122
|
+
142,
|
|
1123
|
+
140,
|
|
1124
|
+
158,
|
|
1125
|
+
157
|
|
1126
|
+
],
|
|
1127
|
+
"hasPhotos": [
|
|
1128
|
+
true,
|
|
1129
|
+
false,
|
|
1130
|
+
false,
|
|
1131
|
+
false,
|
|
1132
|
+
false
|
|
1133
|
+
]
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
"event": "redeem reward",
|
|
1138
|
+
"weight": 1,
|
|
1139
|
+
"properties": {
|
|
1140
|
+
"rewardType": [
|
|
1141
|
+
"discount",
|
|
1142
|
+
"free shipping",
|
|
1143
|
+
"free item",
|
|
1144
|
+
"points bonus"
|
|
1145
|
+
],
|
|
1146
|
+
"pointsUsed": [
|
|
1147
|
+
1284,
|
|
1148
|
+
1556,
|
|
1149
|
+
1213,
|
|
1150
|
+
1347,
|
|
1151
|
+
1561,
|
|
1152
|
+
3771,
|
|
1153
|
+
1376,
|
|
1154
|
+
1385,
|
|
1155
|
+
3339,
|
|
1156
|
+
1451,
|
|
1157
|
+
1235,
|
|
1158
|
+
1958,
|
|
1159
|
+
1511,
|
|
1160
|
+
1497,
|
|
1161
|
+
1438,
|
|
1162
|
+
1569,
|
|
1163
|
+
1521,
|
|
1164
|
+
1467,
|
|
1165
|
+
2033,
|
|
1166
|
+
1481,
|
|
1167
|
+
1375,
|
|
1168
|
+
1567,
|
|
1169
|
+
1210,
|
|
1170
|
+
1432,
|
|
1171
|
+
3401,
|
|
1172
|
+
3784,
|
|
1173
|
+
2001,
|
|
1174
|
+
1975,
|
|
1175
|
+
1286,
|
|
1176
|
+
1548,
|
|
1177
|
+
1321,
|
|
1178
|
+
2238,
|
|
1179
|
+
1754,
|
|
1180
|
+
3566,
|
|
1181
|
+
1637,
|
|
1182
|
+
3673,
|
|
1183
|
+
3549,
|
|
1184
|
+
1253,
|
|
1185
|
+
1415,
|
|
1186
|
+
1060,
|
|
1187
|
+
1420,
|
|
1188
|
+
3876,
|
|
1189
|
+
1603,
|
|
1190
|
+
1306,
|
|
1191
|
+
1477,
|
|
1192
|
+
3648,
|
|
1193
|
+
1598,
|
|
1194
|
+
3816,
|
|
1195
|
+
3857,
|
|
1196
|
+
3760
|
|
1197
|
+
]
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
],
|
|
1201
|
+
"funnels": [
|
|
1202
|
+
{
|
|
1203
|
+
"sequence": [
|
|
1204
|
+
"page view",
|
|
1205
|
+
"sign up"
|
|
1206
|
+
],
|
|
1207
|
+
"conversionRate": 55,
|
|
1208
|
+
"order": "sequential",
|
|
1209
|
+
"weight": 5,
|
|
1210
|
+
"isFirstFunnel": true,
|
|
1211
|
+
"timeToConvert": 1,
|
|
1212
|
+
"name": "Signup Funnel"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"sequence": [
|
|
1216
|
+
"search",
|
|
1217
|
+
"view item",
|
|
1218
|
+
"add to cart",
|
|
1219
|
+
"checkout"
|
|
1220
|
+
],
|
|
1221
|
+
"conversionRate": 35,
|
|
1222
|
+
"order": "sequential",
|
|
1223
|
+
"weight": 8,
|
|
1224
|
+
"timeToConvert": 3,
|
|
1225
|
+
"name": "Purchase Funnel"
|
|
1226
|
+
},
|
|
1227
|
+
{
|
|
1228
|
+
"sequence": [
|
|
1229
|
+
"page view",
|
|
1230
|
+
"watch video",
|
|
1231
|
+
"share content"
|
|
1232
|
+
],
|
|
1233
|
+
"conversionRate": 40,
|
|
1234
|
+
"order": "sequential",
|
|
1235
|
+
"weight": 6,
|
|
1236
|
+
"timeToConvert": 2,
|
|
1237
|
+
"name": "Content Engagement"
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
"sequence": [
|
|
1241
|
+
"view item",
|
|
1242
|
+
"rate item"
|
|
1243
|
+
],
|
|
1244
|
+
"conversionRate": 25,
|
|
1245
|
+
"order": "sequential",
|
|
1246
|
+
"weight": 3,
|
|
1247
|
+
"timeToConvert": 5,
|
|
1248
|
+
"name": "Review Funnel"
|
|
1249
|
+
},
|
|
1250
|
+
{
|
|
1251
|
+
"sequence": [
|
|
1252
|
+
"view category",
|
|
1253
|
+
"view item",
|
|
1254
|
+
"compare items",
|
|
1255
|
+
"add to cart"
|
|
1256
|
+
],
|
|
1257
|
+
"conversionRate": 30,
|
|
1258
|
+
"order": "sequential",
|
|
1259
|
+
"weight": 7,
|
|
1260
|
+
"timeToConvert": 3,
|
|
1261
|
+
"name": "Browse to Cart"
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"sequence": [
|
|
1265
|
+
"notification received",
|
|
1266
|
+
"notification clicked",
|
|
1267
|
+
"view item"
|
|
1268
|
+
],
|
|
1269
|
+
"conversionRate": 45,
|
|
1270
|
+
"order": "sequential",
|
|
1271
|
+
"weight": 4,
|
|
1272
|
+
"timeToConvert": 1,
|
|
1273
|
+
"name": "Notification Engagement"
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
"sequence": [
|
|
1277
|
+
"view item",
|
|
1278
|
+
"add to wishlist",
|
|
1279
|
+
"apply coupon",
|
|
1280
|
+
"add to cart",
|
|
1281
|
+
"checkout"
|
|
1282
|
+
],
|
|
1283
|
+
"conversionRate": 20,
|
|
1284
|
+
"order": "sequential",
|
|
1285
|
+
"weight": 2,
|
|
1286
|
+
"timeToConvert": 7,
|
|
1287
|
+
"name": "Wishlist to Purchase"
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
"sequence": [
|
|
1291
|
+
"checkout",
|
|
1292
|
+
"leave review",
|
|
1293
|
+
"invite friend"
|
|
1294
|
+
],
|
|
1295
|
+
"conversionRate": 15,
|
|
1296
|
+
"order": "sequential",
|
|
1297
|
+
"weight": 1,
|
|
1298
|
+
"timeToConvert": 14,
|
|
1299
|
+
"name": "Post-Purchase Advocacy"
|
|
1300
|
+
},
|
|
1301
|
+
{
|
|
1302
|
+
"sequence": [
|
|
1303
|
+
"login",
|
|
1304
|
+
"view item",
|
|
1305
|
+
"add to cart",
|
|
1306
|
+
"apply coupon",
|
|
1307
|
+
"checkout"
|
|
1308
|
+
],
|
|
1309
|
+
"conversionRate": 30,
|
|
1310
|
+
"order": "sequential",
|
|
1311
|
+
"weight": 9,
|
|
1312
|
+
"timeToConvert": 2,
|
|
1313
|
+
"name": "Coupon Purchase Flow"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"sequence": [
|
|
1317
|
+
"subscribe newsletter",
|
|
1318
|
+
"notification received",
|
|
1319
|
+
"notification clicked",
|
|
1320
|
+
"checkout"
|
|
1321
|
+
],
|
|
1322
|
+
"conversionRate": 10,
|
|
1323
|
+
"order": "sequential",
|
|
1324
|
+
"weight": 3,
|
|
1325
|
+
"timeToConvert": 14,
|
|
1326
|
+
"name": "Newsletter to Purchase"
|
|
1327
|
+
},
|
|
1328
|
+
{
|
|
1329
|
+
"sequence": [
|
|
1330
|
+
"support ticket",
|
|
1331
|
+
"update profile",
|
|
1332
|
+
"checkout"
|
|
1333
|
+
],
|
|
1334
|
+
"conversionRate": 20,
|
|
1335
|
+
"order": "sequential",
|
|
1336
|
+
"weight": 10,
|
|
1337
|
+
"timeToConvert": 7,
|
|
1338
|
+
"name": "Support Recovery"
|
|
1339
|
+
}
|
|
1340
|
+
],
|
|
1341
|
+
"superProps": {
|
|
1342
|
+
"theme": {
|
|
1343
|
+
"functionName": "arrow",
|
|
1344
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
1345
|
+
}
|
|
1346
|
+
},
|
|
1347
|
+
"userProps": {
|
|
1348
|
+
"title": {
|
|
1349
|
+
"functionName": "arrow",
|
|
1350
|
+
"body": "function () { [native code] }"
|
|
1351
|
+
},
|
|
1352
|
+
"luckyNumber": [
|
|
1353
|
+
348,
|
|
1354
|
+
154,
|
|
1355
|
+
148,
|
|
1356
|
+
142,
|
|
1357
|
+
330,
|
|
1358
|
+
148,
|
|
1359
|
+
323,
|
|
1360
|
+
129,
|
|
1361
|
+
151,
|
|
1362
|
+
189,
|
|
1363
|
+
300,
|
|
1364
|
+
129,
|
|
1365
|
+
346,
|
|
1366
|
+
160,
|
|
1367
|
+
149,
|
|
1368
|
+
145,
|
|
1369
|
+
125,
|
|
1370
|
+
149,
|
|
1371
|
+
167,
|
|
1372
|
+
271,
|
|
1373
|
+
150,
|
|
1374
|
+
163,
|
|
1375
|
+
148,
|
|
1376
|
+
163,
|
|
1377
|
+
124,
|
|
1378
|
+
125,
|
|
1379
|
+
121,
|
|
1380
|
+
145,
|
|
1381
|
+
180,
|
|
1382
|
+
341,
|
|
1383
|
+
139,
|
|
1384
|
+
201,
|
|
1385
|
+
147,
|
|
1386
|
+
157,
|
|
1387
|
+
306,
|
|
1388
|
+
320,
|
|
1389
|
+
324,
|
|
1390
|
+
149,
|
|
1391
|
+
123,
|
|
1392
|
+
146,
|
|
1393
|
+
299,
|
|
1394
|
+
118,
|
|
1395
|
+
164,
|
|
1396
|
+
326,
|
|
1397
|
+
169,
|
|
1398
|
+
136,
|
|
1399
|
+
153,
|
|
1400
|
+
334,
|
|
1401
|
+
333,
|
|
1402
|
+
334
|
|
1403
|
+
],
|
|
1404
|
+
"spiritAnimal": {
|
|
1405
|
+
"functionName": "arrow",
|
|
1406
|
+
"body": "function () {\n\t\tconst weighted = [];\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tconst rand = chance.d10(); // Random number between 1 and 10\n\n\t\t\t// 35% chance to favor the most chosen index\n\t\t\tif (chance.bool({ likelihood: 35 })) {\n\t\t\t\t// 50% chance to slightly alter the index\n\t\t\t\tif (chance.bool({ likelihood: 50 })) {\n\t\t\t\t\tweighted.push(items[mostChosenIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addOrSubtract = chance.bool({ likelihood: 50 }) ? -rand : rand;\n\t\t\t\t\tlet newIndex = mostChosenIndex + addOrSubtract;\n\n\t\t\t\t\t// Ensure newIndex is within bounds\n\t\t\t\t\tif (newIndex < 0) newIndex = 0;\n\t\t\t\t\tif (newIndex >= items.length) newIndex = items.length - 1;\n\t\t\t\t\tweighted.push(items[newIndex]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 25% chance to favor the second most chosen index\n\t\t\telse if (chance.bool({ likelihood: 25 })) {\n\t\t\t\tweighted.push(items[secondMostChosenIndex]);\n\t\t\t}\n\t\t\t// 15% chance to favor the third most chosen index\n\t\t\telse if (chance.bool({ likelihood: 15 })) {\n\t\t\t\tweighted.push(items[thirdMostChosenIndex]);\n\t\t\t}\n\t\t\t// Otherwise, pick a random item from the list\n\t\t\telse {\n\t\t\t\tweighted.push(chance.pickone(items));\n\t\t\t}\n\t\t}\n\t\treturn weighted;\n\t}"
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
"scdProps": {},
|
|
1410
|
+
"mirrorProps": {},
|
|
1411
|
+
"groupKeys": [],
|
|
1412
|
+
"groupProps": {},
|
|
1413
|
+
"lookupTables": []
|
|
1414
|
+
},
|
|
1415
|
+
"hooks": "function (record, type, meta) {\n\n\t\t// no hooks!\n\t\treturn record;\n\t}",
|
|
1416
|
+
"timestamp": "2026-04-10T01:39:07.681Z",
|
|
1417
|
+
"version": "4.0"
|
|
1418
|
+
}
|