@ak--47/dungeon-master 1.0.0 → 1.2.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 (104) hide show
  1. package/README.md +7 -7
  2. package/dungeons/technical/ad-spend-schema.json +128 -0
  3. package/dungeons/technical/ad-spend.js +116 -0
  4. package/dungeons/technical/anonymous-users-schema.json +92 -0
  5. package/dungeons/technical/anonymous-users.js +102 -0
  6. package/dungeons/technical/array-of-object-lookup-schema.json +191 -0
  7. package/dungeons/{array-of-object-lookup.js → technical/array-of-object-lookup.js} +12 -5
  8. package/dungeons/technical/experiments-schema.json +203 -0
  9. package/dungeons/technical/experiments.js +168 -0
  10. package/dungeons/technical/foobar-schema.json +362 -0
  11. package/dungeons/{foobar.js → technical/foobar.js} +3 -3
  12. package/dungeons/technical/group-analytics-schema.json +241 -0
  13. package/dungeons/technical/group-analytics.js +151 -0
  14. package/dungeons/technical/mirror-strategies-schema.json +84 -0
  15. package/dungeons/technical/mirror-strategies.js +126 -0
  16. package/dungeons/technical/nested-objects-schema.json +145 -0
  17. package/dungeons/technical/nested-objects.js +207 -0
  18. package/dungeons/technical/retention-cadence-schema.json +37 -0
  19. package/dungeons/{retention-cadence.js → technical/retention-cadence.js} +2 -3
  20. package/dungeons/technical/sanity-schema.json +185 -0
  21. package/dungeons/{sanity.js → technical/sanity.js} +4 -2
  22. package/dungeons/technical/scale-test-schema.json +70 -0
  23. package/dungeons/technical/scale-test.js +90 -0
  24. package/dungeons/technical/scd-schema.json +467 -0
  25. package/dungeons/{scd.js → technical/scd.js} +20 -10
  26. package/dungeons/technical/simple-schema.json +362 -0
  27. package/dungeons/{simple.js → technical/simple.js} +7 -7
  28. package/dungeons/technical/simplest-schema.json +724 -0
  29. package/dungeons/{simplest.js → technical/simplest.js} +7 -7
  30. package/dungeons/technical/text-generation-schema.json +1062 -0
  31. package/dungeons/{text-generation.js → technical/text-generation.js} +24 -11
  32. package/dungeons/vertical/community-schema.json +579 -0
  33. package/dungeons/vertical/community.js +794 -0
  34. package/dungeons/vertical/devtools-schema.json +601 -0
  35. package/dungeons/vertical/devtools.js +843 -0
  36. package/dungeons/vertical/ecommerce-schema.json +604 -0
  37. package/dungeons/{ecommerce.js → vertical/ecommerce.js} +43 -5
  38. package/dungeons/vertical/education-schema.json +5686 -0
  39. package/dungeons/{education.js → vertical/education.js} +70 -39
  40. package/dungeons/vertical/fintech-schema.json +630 -0
  41. package/dungeons/{fintech.js → vertical/fintech.js} +107 -56
  42. package/dungeons/vertical/fitness-schema.json +530 -0
  43. package/dungeons/vertical/fitness.js +808 -0
  44. package/dungeons/vertical/food-delivery-schema.json +36728 -0
  45. package/dungeons/{food.js → vertical/food-delivery.js} +67 -26
  46. package/dungeons/vertical/gaming-schema.json +438 -0
  47. package/dungeons/{gaming.js → vertical/gaming.js} +29 -16
  48. package/dungeons/vertical/healthcare-schema.json +549 -0
  49. package/dungeons/vertical/healthcare.js +775 -0
  50. package/dungeons/vertical/insurance-application-schema.json +485 -0
  51. package/dungeons/{insurance-application.js → vertical/insurance-application.js} +41 -31
  52. package/dungeons/vertical/logistics-schema.json +574 -0
  53. package/dungeons/vertical/logistics.js +799 -0
  54. package/dungeons/vertical/marketplace-schema.json +533 -0
  55. package/dungeons/vertical/marketplace.js +850 -0
  56. package/dungeons/vertical/media-schema.json +4749 -0
  57. package/dungeons/{media.js → vertical/media.js} +103 -19
  58. package/dungeons/vertical/rpg-schema.json +2491 -0
  59. package/dungeons/{rpg.js → vertical/rpg.js} +87 -60
  60. package/dungeons/vertical/sass-schema.json +3128 -0
  61. package/dungeons/{sass.js → vertical/sass.js} +65 -26
  62. package/dungeons/vertical/social-schema.json +620 -0
  63. package/dungeons/{social.js → vertical/social.js} +76 -17
  64. package/dungeons/vertical/travel-schema.json +580 -0
  65. package/dungeons/vertical/travel.js +742 -0
  66. package/index.js +20 -16
  67. package/lib/core/config-validator.js +286 -1
  68. package/lib/core/context.js +16 -5
  69. package/lib/core/storage.js +2 -0
  70. package/lib/generators/adspend.js +3 -3
  71. package/lib/generators/events.js +141 -14
  72. package/lib/generators/funnels.js +67 -7
  73. package/lib/generators/text.js +2 -2
  74. package/lib/orchestrators/user-loop.js +444 -22
  75. package/lib/templates/soup-presets.js +2 -2
  76. package/lib/utils/utils.js +4 -5
  77. package/package.json +4 -3
  78. package/scripts/dungeon-to-json.mjs +163 -0
  79. package/scripts/extract-dungeon-schema.mjs +343 -0
  80. package/scripts/json-to-dungeon.mjs +200 -0
  81. package/scripts/run-dungeon.mjs +76 -0
  82. package/scripts/run-many.mjs +118 -0
  83. package/scripts/verify-runner.mjs +42 -0
  84. package/types.d.ts +316 -1
  85. package/dungeons/array-of-object-lookup-schema.json +0 -327
  86. package/dungeons/ecommerce-schema.json +0 -462
  87. package/dungeons/education-schema.json +0 -2409
  88. package/dungeons/fintech-schema.json +0 -14034
  89. package/dungeons/foobar-schema.json +0 -403
  90. package/dungeons/food-delivery-schema.json +0 -192
  91. package/dungeons/food-delivery.js +0 -602
  92. package/dungeons/food-schema.json +0 -1152
  93. package/dungeons/gaming-schema.json +0 -1270
  94. package/dungeons/insurance-application-schema.json +0 -204
  95. package/dungeons/media-schema.json +0 -906
  96. package/dungeons/retention-cadence-schema.json +0 -78
  97. package/dungeons/rpg-schema.json +0 -4526
  98. package/dungeons/sanity-schema.json +0 -255
  99. package/dungeons/sass-schema.json +0 -1291
  100. package/dungeons/scd-schema.json +0 -919
  101. package/dungeons/simple-schema.json +0 -608
  102. package/dungeons/simplest-schema.json +0 -1418
  103. package/dungeons/social-schema.json +0 -1118
  104. package/dungeons/text-generation-schema.json +0 -3096
@@ -0,0 +1,604 @@
1
+ {
2
+ "events": [
3
+ {
4
+ "event": "checkout",
5
+ "weight": 2,
6
+ "properties": {
7
+ "currency": [
8
+ "USD",
9
+ "CAD",
10
+ "EUR",
11
+ "BTC",
12
+ "ETH",
13
+ "JPY"
14
+ ],
15
+ "coupon": [
16
+ "none",
17
+ "10%OFF",
18
+ "20%OFF",
19
+ "30%OFF",
20
+ "40%OFF",
21
+ "50%OFF"
22
+ ],
23
+ "cart": {
24
+ "$type": "object[]",
25
+ "$keys": [
26
+ "amount",
27
+ "quantity",
28
+ "total_value",
29
+ "featured",
30
+ "category",
31
+ "descriptor",
32
+ "slug",
33
+ "assetPreview",
34
+ "assetType"
35
+ ]
36
+ }
37
+ }
38
+ },
39
+ {
40
+ "event": "add to cart",
41
+ "weight": 4,
42
+ "properties": {
43
+ "item": {
44
+ "$type": "object[]",
45
+ "$keys": [
46
+ "amount",
47
+ "quantity",
48
+ "total_value",
49
+ "featured",
50
+ "category",
51
+ "descriptor",
52
+ "slug",
53
+ "assetPreview",
54
+ "assetType"
55
+ ]
56
+ },
57
+ "amount": {
58
+ "$range": [
59
+ 21,
60
+ 80
61
+ ]
62
+ },
63
+ "quantity": {
64
+ "$range": [
65
+ 2,
66
+ 4
67
+ ]
68
+ },
69
+ "total_value": {
70
+ "$range": [
71
+ 102,
72
+ 399
73
+ ]
74
+ },
75
+ "featured": [
76
+ true,
77
+ false
78
+ ],
79
+ "category": [
80
+ "electronics",
81
+ "books",
82
+ "clothing",
83
+ "home",
84
+ "garden",
85
+ "toys",
86
+ "sports",
87
+ "automotive",
88
+ "beauty",
89
+ "health",
90
+ "grocery",
91
+ "jewelry",
92
+ "shoes",
93
+ "tools",
94
+ "office supplies"
95
+ ],
96
+ "descriptor": [
97
+ "brand new",
98
+ "open box",
99
+ "refurbished",
100
+ "used",
101
+ "like new",
102
+ "vintage",
103
+ "antique",
104
+ "collectible"
105
+ ],
106
+ "slug": [
107
+ "item"
108
+ ],
109
+ "assetPreview": [
110
+ "https://example.com/assets/item.png"
111
+ ],
112
+ "assetType": [
113
+ ".png",
114
+ ".jpg",
115
+ ".jpeg",
116
+ ".heic",
117
+ ".mp4",
118
+ ".mov",
119
+ ".avi"
120
+ ]
121
+ }
122
+ },
123
+ {
124
+ "event": "view item",
125
+ "weight": 8,
126
+ "properties": {
127
+ "item": {
128
+ "$type": "object[]",
129
+ "$keys": [
130
+ "amount",
131
+ "quantity",
132
+ "total_value",
133
+ "featured",
134
+ "category",
135
+ "descriptor",
136
+ "slug",
137
+ "assetPreview",
138
+ "assetType"
139
+ ]
140
+ },
141
+ "amount": {
142
+ "$range": [
143
+ 21,
144
+ 80
145
+ ]
146
+ },
147
+ "quantity": {
148
+ "$range": [
149
+ 2,
150
+ 4
151
+ ]
152
+ },
153
+ "total_value": {
154
+ "$range": [
155
+ 99,
156
+ 390
157
+ ]
158
+ },
159
+ "featured": [
160
+ true,
161
+ false
162
+ ],
163
+ "category": [
164
+ "electronics",
165
+ "books",
166
+ "clothing",
167
+ "home",
168
+ "garden",
169
+ "toys",
170
+ "sports",
171
+ "automotive",
172
+ "beauty",
173
+ "health",
174
+ "grocery",
175
+ "jewelry",
176
+ "shoes",
177
+ "tools",
178
+ "office supplies"
179
+ ],
180
+ "descriptor": [
181
+ "brand new",
182
+ "open box",
183
+ "refurbished",
184
+ "used",
185
+ "like new",
186
+ "vintage",
187
+ "antique",
188
+ "collectible"
189
+ ],
190
+ "slug": [
191
+ "item"
192
+ ],
193
+ "assetPreview": [
194
+ "https://example.com/assets/item.png"
195
+ ],
196
+ "assetType": [
197
+ ".png",
198
+ ".jpg",
199
+ ".jpeg",
200
+ ".heic",
201
+ ".mp4",
202
+ ".mov",
203
+ ".avi"
204
+ ]
205
+ }
206
+ },
207
+ {
208
+ "event": "save item",
209
+ "weight": 5,
210
+ "properties": {
211
+ "item": {
212
+ "$type": "object[]",
213
+ "$keys": [
214
+ "amount",
215
+ "quantity",
216
+ "total_value",
217
+ "featured",
218
+ "category",
219
+ "descriptor",
220
+ "slug",
221
+ "assetPreview",
222
+ "assetType"
223
+ ]
224
+ },
225
+ "amount": {
226
+ "$range": [
227
+ 20,
228
+ 77
229
+ ]
230
+ },
231
+ "quantity": {
232
+ "$range": [
233
+ 2,
234
+ 4
235
+ ]
236
+ },
237
+ "total_value": {
238
+ "$range": [
239
+ 93,
240
+ 413
241
+ ]
242
+ },
243
+ "featured": [
244
+ true,
245
+ false
246
+ ],
247
+ "category": [
248
+ "electronics",
249
+ "books",
250
+ "clothing",
251
+ "home",
252
+ "garden",
253
+ "toys",
254
+ "sports",
255
+ "automotive",
256
+ "beauty",
257
+ "health",
258
+ "grocery",
259
+ "jewelry",
260
+ "shoes",
261
+ "tools",
262
+ "office supplies"
263
+ ],
264
+ "descriptor": [
265
+ "brand new",
266
+ "open box",
267
+ "refurbished",
268
+ "used",
269
+ "like new",
270
+ "vintage",
271
+ "antique",
272
+ "collectible"
273
+ ],
274
+ "slug": [
275
+ "item"
276
+ ],
277
+ "assetPreview": [
278
+ "https://example.com/assets/item.png"
279
+ ],
280
+ "assetType": [
281
+ ".png",
282
+ ".jpg",
283
+ ".jpeg",
284
+ ".heic",
285
+ ".mp4",
286
+ ".mov",
287
+ ".avi"
288
+ ]
289
+ }
290
+ },
291
+ {
292
+ "event": "page view",
293
+ "weight": 10,
294
+ "properties": {
295
+ "page": [
296
+ "/",
297
+ "/help",
298
+ "/account",
299
+ "/watch",
300
+ "/listen",
301
+ "/product",
302
+ "/people",
303
+ "/peace"
304
+ ]
305
+ }
306
+ },
307
+ {
308
+ "event": "watch video",
309
+ "weight": 8,
310
+ "properties": {
311
+ "watchTimeSec": {
312
+ "$range": [
313
+ 128,
314
+ 485
315
+ ]
316
+ },
317
+ "quality": [
318
+ "2160p",
319
+ "1440p",
320
+ "1080p",
321
+ "720p",
322
+ "480p",
323
+ "360p",
324
+ "240p"
325
+ ],
326
+ "format": [
327
+ "mp4",
328
+ "avi",
329
+ "mov",
330
+ "mpg"
331
+ ],
332
+ "uploader_id": {
333
+ "$type": "string"
334
+ }
335
+ }
336
+ },
337
+ {
338
+ "event": "like video",
339
+ "weight": 6
340
+ },
341
+ {
342
+ "event": "dislike video",
343
+ "weight": 4
344
+ },
345
+ {
346
+ "event": "sign up",
347
+ "isFirstEvent": true,
348
+ "properties": {
349
+ "signupMethod": [
350
+ "email",
351
+ "google",
352
+ "facebook",
353
+ "twitter",
354
+ "linkedin",
355
+ "github"
356
+ ],
357
+ "referral": [
358
+ "none",
359
+ "friend",
360
+ "ad"
361
+ ],
362
+ "signup_flow": [
363
+ "v1"
364
+ ]
365
+ }
366
+ }
367
+ ],
368
+ "funnels": [
369
+ {
370
+ "sequence": [
371
+ "page view",
372
+ "view item",
373
+ "save item",
374
+ "page view",
375
+ "sign up"
376
+ ],
377
+ "name": "Signup Flow",
378
+ "isFirstFunnel": true,
379
+ "conversionRate": 50,
380
+ "timeToConvert": 2,
381
+ "order": "first-and-last-fixed"
382
+ },
383
+ {
384
+ "sequence": [
385
+ "watch video",
386
+ "like video",
387
+ "watch video",
388
+ "like video"
389
+ ],
390
+ "name": "Video Likes",
391
+ "conversionRate": 60,
392
+ "props": {
393
+ "videoCategory": [
394
+ "funny",
395
+ "educational",
396
+ "inspirational",
397
+ "music",
398
+ "news",
399
+ "sports",
400
+ "cooking",
401
+ "DIY",
402
+ "travel",
403
+ "gaming"
404
+ ],
405
+ "quality": [
406
+ "2160p",
407
+ "1440p",
408
+ "1080p",
409
+ "720p",
410
+ "480p",
411
+ "360p",
412
+ "240p"
413
+ ],
414
+ "format": [
415
+ "mp4",
416
+ "avi",
417
+ "mov",
418
+ "mpg"
419
+ ],
420
+ "uploader_id": {
421
+ "$type": "string"
422
+ }
423
+ }
424
+ },
425
+ {
426
+ "sequence": [
427
+ "watch video",
428
+ "dislike video",
429
+ "watch video",
430
+ "dislike video"
431
+ ],
432
+ "name": "Video Dislikes",
433
+ "conversionRate": 20,
434
+ "props": {
435
+ "videoCategory": [
436
+ "funny",
437
+ "educational",
438
+ "inspirational",
439
+ "music",
440
+ "news",
441
+ "sports",
442
+ "cooking",
443
+ "DIY",
444
+ "travel",
445
+ "gaming"
446
+ ],
447
+ "quality": [
448
+ "2160p",
449
+ "1440p",
450
+ "1080p",
451
+ "720p",
452
+ "480p",
453
+ "360p",
454
+ "240p"
455
+ ],
456
+ "format": [
457
+ "mp4",
458
+ "avi",
459
+ "mov",
460
+ "mpg"
461
+ ],
462
+ "uploader_id": {
463
+ "$type": "string"
464
+ }
465
+ }
466
+ },
467
+ {
468
+ "sequence": [
469
+ "view item",
470
+ "view item",
471
+ "add to cart",
472
+ "view item",
473
+ "add to cart",
474
+ "checkout"
475
+ ],
476
+ "name": "eCommerce Purchase",
477
+ "conversionRate": 15,
478
+ "order": "last-fixed",
479
+ "weight": 10,
480
+ "requireRepeats": true
481
+ }
482
+ ],
483
+ "superProps": {
484
+ "theme": [
485
+ "light",
486
+ "dark",
487
+ "custom"
488
+ ]
489
+ },
490
+ "userProps": {
491
+ "title": {
492
+ "$type": "string"
493
+ },
494
+ "luckyNumber": {
495
+ "$range": [
496
+ 102,
497
+ 338
498
+ ]
499
+ },
500
+ "spiritAnimal": [
501
+ "duck",
502
+ "dog",
503
+ "otter",
504
+ "penguin",
505
+ "cat",
506
+ "elephant",
507
+ "lion",
508
+ "cheetah",
509
+ "giraffe",
510
+ "zebra",
511
+ "rhino",
512
+ "hippo",
513
+ "whale",
514
+ "dolphin",
515
+ "shark",
516
+ "octopus",
517
+ "squid",
518
+ "jellyfish",
519
+ "starfish",
520
+ "seahorse",
521
+ "crab",
522
+ "lobster",
523
+ "shrimp",
524
+ "clam",
525
+ "snail",
526
+ "slug",
527
+ "butterfly",
528
+ "moth",
529
+ "bee",
530
+ "wasp",
531
+ "ant",
532
+ "beetle",
533
+ "ladybug",
534
+ "caterpillar",
535
+ "centipede",
536
+ "millipede",
537
+ "scorpion",
538
+ "spider",
539
+ "tarantula",
540
+ "tick",
541
+ "mite",
542
+ "mosquito",
543
+ "fly",
544
+ "dragonfly",
545
+ "damselfly",
546
+ "grasshopper",
547
+ "cricket",
548
+ "locust",
549
+ "mantis",
550
+ "cockroach",
551
+ "termite",
552
+ "praying mantis",
553
+ "walking stick",
554
+ "stick bug",
555
+ "leaf insect",
556
+ "lacewing",
557
+ "aphid",
558
+ "cicada",
559
+ "thrips",
560
+ "psyllid",
561
+ "scale insect",
562
+ "whitefly",
563
+ "mealybug",
564
+ "planthopper",
565
+ "leafhopper",
566
+ "treehopper",
567
+ "flea",
568
+ "louse",
569
+ "bedbug",
570
+ "flea beetle",
571
+ "weevil",
572
+ "longhorn beetle",
573
+ "leaf beetle",
574
+ "tiger beetle",
575
+ "ground beetle",
576
+ "lady beetle",
577
+ "firefly",
578
+ "click beetle",
579
+ "rove beetle",
580
+ "scarab beetle",
581
+ "dung beetle",
582
+ "stag beetle",
583
+ "rhinoceros beetle",
584
+ "hercules beetle",
585
+ "goliath beetle",
586
+ "jewel beetle",
587
+ "tortoise beetle"
588
+ ]
589
+ },
590
+ "scdProps": {
591
+ "loyalty_tier": {
592
+ "type": "user",
593
+ "frequency": "month",
594
+ "timing": "fuzzy",
595
+ "max": 8,
596
+ "values": [
597
+ "bronze",
598
+ "silver",
599
+ "gold",
600
+ "platinum"
601
+ ]
602
+ }
603
+ }
604
+ }
@@ -4,8 +4,9 @@ import dayjs from "dayjs";
4
4
  import utc from "dayjs/plugin/utc.js";
5
5
  dayjs.extend(utc);
6
6
  import { uid, comma } from 'ak-tools';
7
- import { pickAWinner, weighNumRange, date, integer, weighChoices, decimal } from "../lib/utils/utils.js";
7
+ import { weighNumRange, date, integer, weighChoices, decimal } from "../../lib/utils/utils.js";
8
8
 
9
+ /** @typedef {import("../../types").Dungeon} Config */
9
10
  const itemCategories = ["Books", "Movies", "Music", "Games", "Electronics", "Computers", "Smart Home", "Home", "Garden", "Pet", "Beauty", "Health", "Toys", "Kids", "Baby", "Handmade", "Sports", "Outdoors", "Automotive", "Industrial", "Entertainment", "Art", "Food", "Appliances", "Office", "Wedding", "Software"];
10
11
  const videoCategories = ["funny", "educational", "inspirational", "music", "news", "sports", "cooking", "DIY", "travel", "gaming"];
11
12
  const spiritAnimals = ["duck", "dog", "otter", "penguin", "cat", "elephant", "lion", "cheetah", "giraffe", "zebra", "rhino", "hippo", "whale", "dolphin", "shark", "octopus", "squid", "jellyfish", "starfish", "seahorse", "crab", "lobster", "shrimp", "clam", "snail", "slug", "butterfly", "moth", "bee", "wasp", "ant", "beetle", "ladybug", "caterpillar", "centipede", "millipede", "scorpion", "spider", "tarantula", "tick", "mite", "mosquito", "fly", "dragonfly", "damselfly", "grasshopper", "cricket", "locust", "mantis", "cockroach", "termite", "praying mantis", "walking stick", "stick bug", "leaf insect", "lacewing", "aphid", "cicada", "thrips", "psyllid", "scale insect", "whitefly", "mealybug", "planthopper", "leafhopper", "treehopper", "flea", "louse", "bedbug", "flea beetle", "weevil", "longhorn beetle", "leaf beetle", "tiger beetle", "ground beetle", "lady beetle", "firefly", "click beetle", "rove beetle", "scarab beetle", "dung beetle", "stag beetle", "rhinoceros beetle", "hercules beetle", "goliath beetle", "jewel beetle", "tortoise beetle"];
@@ -148,7 +149,6 @@ const config = {
148
149
  isAnonymous: false,
149
150
  alsoInferFunnels: false,
150
151
  concurrency: 1,
151
- batchSize: 2_500_000,
152
152
  percentUsersBornInDataset: 25,
153
153
  events: [
154
154
  {
@@ -165,13 +165,31 @@ const config = {
165
165
  weight: 4,
166
166
  properties: {
167
167
  item: makeProducts(1),
168
+ amount: weighNumRange(1, 100, 0.3),
169
+ quantity: weighNumRange(1, 5, 0.3),
170
+ total_value: weighNumRange(1, 500, 0.3),
171
+ featured: [true, false, false],
172
+ category: ["electronics", "books", "clothing", "home", "garden", "toys", "sports", "automotive", "beauty", "health", "grocery", "jewelry", "shoes", "tools", "office supplies"],
173
+ descriptor: ["brand new", "open box", "refurbished", "used", "like new", "vintage", "antique", "collectible"],
174
+ slug: ["item"],
175
+ assetPreview: ["https://example.com/assets/item.png"],
176
+ assetType: [".png", ".jpg", ".jpeg", ".heic", ".mp4", ".mov", ".avi"],
168
177
  }
169
178
  },
170
179
  {
171
180
  event: "view item",
172
181
  weight: 8,
173
182
  properties: {
174
- item: makeProducts(1)
183
+ item: makeProducts(1),
184
+ amount: weighNumRange(1, 100, 0.3),
185
+ quantity: weighNumRange(1, 5, 0.3),
186
+ total_value: weighNumRange(1, 500, 0.3),
187
+ featured: [true, false, false],
188
+ category: ["electronics", "books", "clothing", "home", "garden", "toys", "sports", "automotive", "beauty", "health", "grocery", "jewelry", "shoes", "tools", "office supplies"],
189
+ descriptor: ["brand new", "open box", "refurbished", "used", "like new", "vintage", "antique", "collectible"],
190
+ slug: ["item"],
191
+ assetPreview: ["https://example.com/assets/item.png"],
192
+ assetType: [".png", ".jpg", ".jpeg", ".heic", ".mp4", ".mov", ".avi"],
175
193
  }
176
194
  },
177
195
  {
@@ -179,6 +197,15 @@ const config = {
179
197
  weight: 5,
180
198
  properties: {
181
199
  item: makeProducts(1),
200
+ amount: weighNumRange(1, 100, 0.3),
201
+ quantity: weighNumRange(1, 5, 0.3),
202
+ total_value: weighNumRange(1, 500, 0.3),
203
+ featured: [true, false, false],
204
+ category: ["electronics", "books", "clothing", "home", "garden", "toys", "sports", "automotive", "beauty", "health", "grocery", "jewelry", "shoes", "tools", "office supplies"],
205
+ descriptor: ["brand new", "open box", "refurbished", "used", "like new", "vintage", "antique", "collectible"],
206
+ slug: ["item"],
207
+ assetPreview: ["https://example.com/assets/item.png"],
208
+ assetType: [".png", ".jpg", ".jpeg", ".heic", ".mp4", ".mov", ".avi"],
182
209
  }
183
210
  },
184
211
  {
@@ -193,6 +220,9 @@ const config = {
193
220
  weight: 8,
194
221
  properties: {
195
222
  watchTimeSec: weighNumRange(10, 600, .25),
223
+ quality: ["2160p", "1440p", "1080p", "720p", "480p", "360p", "240p"],
224
+ format: ["mp4", "avi", "mov", "mpg"],
225
+ uploader_id: chance.guid.bind(chance),
196
226
  }
197
227
  },
198
228
  {
@@ -216,6 +246,7 @@ const config = {
216
246
  properties: {
217
247
  signupMethod: ["email", "google", "facebook", "twitter", "linkedin", "github"],
218
248
  referral: weighChoices(["none", "none", "none", "friend", "ad", "ad", "ad", "friend", "friend", "friend", "friend"]),
249
+ signup_flow: ["v1"],
219
250
  }
220
251
  },
221
252
 
@@ -265,7 +296,7 @@ const config = {
265
296
 
266
297
  ],
267
298
  superProps: {
268
- theme: pickAWinner(["light", "dark", "custom", "light", "dark"]),
299
+ theme: ["light", "dark", "custom", "light", "dark"],
269
300
  },
270
301
  /*
271
302
  user properties work the same as event properties
@@ -276,7 +307,14 @@ const config = {
276
307
  luckyNumber: weighNumRange(42, 420, .3),
277
308
  spiritAnimal: spiritAnimals
278
309
  },
279
- scdProps: {},
310
+ scdProps: {
311
+ loyalty_tier: {
312
+ values: ["bronze", "silver", "gold", "platinum"],
313
+ frequency: "month",
314
+ timing: "fuzzy",
315
+ max: 8
316
+ }
317
+ },
280
318
  mirrorProps: {},
281
319
 
282
320
  /*