@ak--47/dungeon-master 1.0.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.
- package/README.md +518 -0
- package/dungeons/array-of-object-lookup-schema.json +327 -0
- package/dungeons/array-of-object-lookup.js +220 -0
- package/dungeons/ecommerce-schema.json +462 -0
- package/dungeons/ecommerce.js +447 -0
- package/dungeons/education-schema.json +2409 -0
- package/dungeons/education.js +768 -0
- package/dungeons/fintech-schema.json +14034 -0
- package/dungeons/fintech.js +696 -0
- package/dungeons/foobar-schema.json +403 -0
- package/dungeons/foobar.js +296 -0
- 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 +754 -0
- package/dungeons/gaming-schema.json +1270 -0
- package/dungeons/gaming.js +508 -0
- 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 +790 -0
- package/dungeons/retention-cadence-schema.json +78 -0
- package/dungeons/retention-cadence.js +244 -0
- package/dungeons/rpg-schema.json +4526 -0
- package/dungeons/rpg.js +919 -0
- package/dungeons/sanity-schema.json +255 -0
- package/dungeons/sanity.js +152 -0
- package/dungeons/sass-schema.json +1291 -0
- package/dungeons/sass.js +795 -0
- package/dungeons/scd-schema.json +919 -0
- package/dungeons/scd.js +277 -0
- package/dungeons/simple-schema.json +608 -0
- package/dungeons/simple.js +285 -0
- package/dungeons/simplest-schema.json +1418 -0
- package/dungeons/simplest.js +392 -0
- package/dungeons/social-schema.json +1118 -0
- package/dungeons/social.js +686 -0
- package/dungeons/text-generation-schema.json +3096 -0
- package/dungeons/text-generation.js +812 -0
- package/index.js +567 -0
- package/lib/core/config-validator.js +395 -0
- package/lib/core/context.js +204 -0
- package/lib/core/dungeon-loader.js +337 -0
- package/lib/core/storage.js +379 -0
- package/lib/generators/adspend.js +132 -0
- package/lib/generators/events.js +271 -0
- package/lib/generators/funnels.js +407 -0
- package/lib/generators/mirror.js +167 -0
- package/lib/generators/product-lookup.js +262 -0
- package/lib/generators/product-names.js +195 -0
- package/lib/generators/profiles.js +93 -0
- package/lib/generators/scd.js +124 -0
- package/lib/generators/text.js +1192 -0
- package/lib/orchestrators/mixpanel-sender.js +266 -0
- package/lib/orchestrators/user-loop.js +335 -0
- package/lib/templates/abbreviated.d.ts +169 -0
- package/lib/templates/defaults.js +1405 -0
- package/lib/templates/phrases.js +2526 -0
- package/lib/templates/schema.d.ts +173 -0
- package/lib/templates/soup-presets.js +188 -0
- package/lib/utils/function-registry.js +302 -0
- package/lib/utils/json-evaluator.js +172 -0
- package/lib/utils/logger.js +34 -0
- package/lib/utils/utils.js +1490 -0
- package/package.json +89 -0
- package/types.d.ts +865 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"token": "",
|
|
4
|
+
"seed": "0.5990981939869162",
|
|
5
|
+
"numDays": 30,
|
|
6
|
+
"numEvents": 2000000000,
|
|
7
|
+
"numUsers": 2000000,
|
|
8
|
+
"format": "json",
|
|
9
|
+
"region": "US",
|
|
10
|
+
"hasAnonIds": false,
|
|
11
|
+
"hasSessionIds": false,
|
|
12
|
+
"batchSize": 2500000,
|
|
13
|
+
"hasAdSpend": false,
|
|
14
|
+
"hasAvatar": false,
|
|
15
|
+
"hasBrowser": false,
|
|
16
|
+
"hasCampaigns": false,
|
|
17
|
+
"hasIOSDevices": false,
|
|
18
|
+
"hasLocation": false,
|
|
19
|
+
"isAnonymous": true,
|
|
20
|
+
"hasAndroidDevices": false,
|
|
21
|
+
"hasDesktopDevices": false,
|
|
22
|
+
"writeToDisk": false,
|
|
23
|
+
"concurrency": 1,
|
|
24
|
+
"events": [
|
|
25
|
+
{
|
|
26
|
+
"event": "foo",
|
|
27
|
+
"weight": 10,
|
|
28
|
+
"properties": {}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"event": "bar",
|
|
32
|
+
"weight": 9,
|
|
33
|
+
"properties": {}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"event": "baz",
|
|
37
|
+
"weight": 8,
|
|
38
|
+
"properties": {}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"event": "qux",
|
|
42
|
+
"weight": 7,
|
|
43
|
+
"properties": {}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"event": "garply",
|
|
47
|
+
"weight": 6,
|
|
48
|
+
"properties": {}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"event": "durtle",
|
|
52
|
+
"weight": 5,
|
|
53
|
+
"properties": {}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"event": "linny",
|
|
57
|
+
"weight": 4,
|
|
58
|
+
"properties": {}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"event": "fonk",
|
|
62
|
+
"weight": 3,
|
|
63
|
+
"properties": {}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"event": "crumn",
|
|
67
|
+
"weight": 2,
|
|
68
|
+
"properties": {}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"event": "yak",
|
|
72
|
+
"weight": 1,
|
|
73
|
+
"properties": {}
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"superProps": {
|
|
77
|
+
"string": [
|
|
78
|
+
"red",
|
|
79
|
+
"orange",
|
|
80
|
+
"yellow",
|
|
81
|
+
"green",
|
|
82
|
+
"blue",
|
|
83
|
+
"indigo",
|
|
84
|
+
"violet"
|
|
85
|
+
],
|
|
86
|
+
"number": {
|
|
87
|
+
"functionName": "integer",
|
|
88
|
+
"args": []
|
|
89
|
+
},
|
|
90
|
+
"boolean": [
|
|
91
|
+
true,
|
|
92
|
+
false
|
|
93
|
+
],
|
|
94
|
+
"date": [
|
|
95
|
+
"2024-09-18T21:48:28.173Z",
|
|
96
|
+
"2024-12-09T03:17:46.661Z",
|
|
97
|
+
"2024-02-26T07:52:14.943Z",
|
|
98
|
+
"2024-04-22T08:35:17.647Z",
|
|
99
|
+
"2024-11-25T17:03:58.061Z",
|
|
100
|
+
"2024-01-14T21:46:58.982Z",
|
|
101
|
+
"2024-06-20T12:47:25.687Z",
|
|
102
|
+
"2024-08-13T22:18:08.665Z",
|
|
103
|
+
"2024-08-09T07:47:18.321Z",
|
|
104
|
+
"2024-06-21T19:04:43.432Z",
|
|
105
|
+
"2024-03-09T00:18:37.705Z",
|
|
106
|
+
"2024-08-02T09:23:41.699Z",
|
|
107
|
+
"2024-11-26T13:25:08.673Z",
|
|
108
|
+
"2024-05-23T11:51:34.238Z",
|
|
109
|
+
"2024-10-24T20:14:05.106Z",
|
|
110
|
+
"2024-10-01T18:52:32.463Z",
|
|
111
|
+
"2024-10-15T19:22:40.675Z",
|
|
112
|
+
"2024-06-13T21:29:11.962Z",
|
|
113
|
+
"2024-08-29T12:02:48.632Z",
|
|
114
|
+
"2024-12-22T12:11:40.809Z",
|
|
115
|
+
"2024-01-03T03:39:19.446Z",
|
|
116
|
+
"2024-06-28T10:05:43.908Z",
|
|
117
|
+
"2024-12-01T18:49:00.447Z",
|
|
118
|
+
"2024-12-30T05:44:23.418Z",
|
|
119
|
+
"2024-03-14T22:38:40.833Z",
|
|
120
|
+
"2024-12-28T06:45:31.946Z",
|
|
121
|
+
"2024-07-20T21:40:19.498Z",
|
|
122
|
+
"2024-12-26T06:44:41.982Z",
|
|
123
|
+
"2024-10-28T13:45:35.409Z",
|
|
124
|
+
"2024-02-28T00:11:54.916Z",
|
|
125
|
+
"2024-07-08T10:01:57.834Z",
|
|
126
|
+
"2024-02-23T08:00:59.386Z",
|
|
127
|
+
"2024-08-20T05:23:33.024Z",
|
|
128
|
+
"2024-02-10T20:52:46.564Z",
|
|
129
|
+
"2024-08-24T21:32:15.202Z",
|
|
130
|
+
"2024-06-17T03:51:35.142Z",
|
|
131
|
+
"2024-04-09T13:13:45.218Z",
|
|
132
|
+
"2024-07-26T16:31:51.091Z",
|
|
133
|
+
"2024-05-26T04:06:33.013Z",
|
|
134
|
+
"2024-11-05T17:15:37.412Z",
|
|
135
|
+
"2024-10-20T17:01:38.205Z",
|
|
136
|
+
"2024-01-08T05:09:18.692Z",
|
|
137
|
+
"2024-08-24T13:52:14.774Z",
|
|
138
|
+
"2024-06-26T13:47:07.276Z",
|
|
139
|
+
"2024-06-19T15:05:53.246Z",
|
|
140
|
+
"2024-05-01T04:06:52.028Z",
|
|
141
|
+
"2024-05-26T22:45:59.626Z",
|
|
142
|
+
"2024-04-17T20:50:58.460Z",
|
|
143
|
+
"2024-07-28T04:32:04.578Z",
|
|
144
|
+
"2024-01-29T05:31:48.744Z",
|
|
145
|
+
"2024-08-06T18:47:29.190Z",
|
|
146
|
+
"2024-04-03T23:12:20.415Z",
|
|
147
|
+
"2024-09-13T08:47:35.938Z",
|
|
148
|
+
"2024-07-27T15:12:15.145Z",
|
|
149
|
+
"2024-10-24T00:39:21.835Z",
|
|
150
|
+
"2024-10-08T16:50:36.591Z",
|
|
151
|
+
"2024-02-27T15:53:19.204Z",
|
|
152
|
+
"2024-04-21T08:24:05.883Z",
|
|
153
|
+
"2024-03-08T10:07:46.720Z",
|
|
154
|
+
"2024-01-10T08:36:19.554Z",
|
|
155
|
+
"2024-02-17T12:56:00.562Z",
|
|
156
|
+
"2024-10-03T07:54:46.486Z",
|
|
157
|
+
"2024-05-29T10:18:36.289Z",
|
|
158
|
+
"2024-05-06T23:27:07.145Z",
|
|
159
|
+
"2024-05-27T08:41:47.787Z",
|
|
160
|
+
"2024-09-16T12:22:09.573Z",
|
|
161
|
+
"2024-05-03T00:31:06.036Z",
|
|
162
|
+
"2024-11-24T19:38:43.380Z",
|
|
163
|
+
"2024-06-03T04:01:56.328Z",
|
|
164
|
+
"2024-05-04T02:25:25.455Z",
|
|
165
|
+
"2024-12-19T18:35:25.052Z",
|
|
166
|
+
"2024-05-07T21:54:28.113Z",
|
|
167
|
+
"2024-11-24T09:58:08.766Z",
|
|
168
|
+
"2024-03-17T02:46:20.903Z",
|
|
169
|
+
"2024-09-04T09:20:24.930Z",
|
|
170
|
+
"2024-02-04T10:23:33.624Z",
|
|
171
|
+
"2024-01-26T02:42:06.668Z",
|
|
172
|
+
"2024-08-11T02:26:21.969Z",
|
|
173
|
+
"2024-07-11T13:34:51.283Z",
|
|
174
|
+
"2024-12-20T00:09:10.080Z",
|
|
175
|
+
"2024-05-28T00:20:07.079Z",
|
|
176
|
+
"2024-01-13T14:54:03.339Z",
|
|
177
|
+
"2024-08-10T17:18:12.759Z",
|
|
178
|
+
"2024-10-06T15:05:11.437Z",
|
|
179
|
+
"2024-11-18T03:53:12.932Z",
|
|
180
|
+
"2024-02-19T18:06:13.680Z",
|
|
181
|
+
"2024-08-03T11:48:00.207Z",
|
|
182
|
+
"2024-11-22T15:19:47.316Z",
|
|
183
|
+
"2024-06-30T19:56:49.636Z",
|
|
184
|
+
"2024-12-03T00:25:23.926Z",
|
|
185
|
+
"2024-07-30T15:27:18.198Z",
|
|
186
|
+
"2024-09-07T01:40:58.245Z",
|
|
187
|
+
"2024-05-16T05:24:14.727Z",
|
|
188
|
+
"2024-11-14T03:46:49.323Z",
|
|
189
|
+
"2024-02-16T09:18:23.473Z",
|
|
190
|
+
"2024-10-19T14:07:11.462Z",
|
|
191
|
+
"2024-02-09T08:52:04.735Z",
|
|
192
|
+
"2024-06-06T09:41:11.810Z",
|
|
193
|
+
"2024-05-07T23:14:05.114Z",
|
|
194
|
+
"2024-06-03T06:52:21.652Z"
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
"userProps": {
|
|
198
|
+
"luckyNumber": {
|
|
199
|
+
"functionName": "integer",
|
|
200
|
+
"args": []
|
|
201
|
+
},
|
|
202
|
+
"spiritAnimal": [
|
|
203
|
+
"duck",
|
|
204
|
+
"dog",
|
|
205
|
+
"otter",
|
|
206
|
+
"penguin",
|
|
207
|
+
"cat",
|
|
208
|
+
"elephant",
|
|
209
|
+
"lion",
|
|
210
|
+
"cheetah",
|
|
211
|
+
"giraffe",
|
|
212
|
+
"zebra",
|
|
213
|
+
"rhino",
|
|
214
|
+
"hippo",
|
|
215
|
+
"whale",
|
|
216
|
+
"dolphin",
|
|
217
|
+
"shark",
|
|
218
|
+
"octopus",
|
|
219
|
+
"squid",
|
|
220
|
+
"jellyfish",
|
|
221
|
+
"starfish",
|
|
222
|
+
"seahorse",
|
|
223
|
+
"crab",
|
|
224
|
+
"lobster",
|
|
225
|
+
"shrimp",
|
|
226
|
+
"clam",
|
|
227
|
+
"snail",
|
|
228
|
+
"slug",
|
|
229
|
+
"butterfly",
|
|
230
|
+
"moth",
|
|
231
|
+
"bee",
|
|
232
|
+
"wasp",
|
|
233
|
+
"ant",
|
|
234
|
+
"beetle",
|
|
235
|
+
"ladybug",
|
|
236
|
+
"caterpillar",
|
|
237
|
+
"centipede",
|
|
238
|
+
"millipede",
|
|
239
|
+
"scorpion",
|
|
240
|
+
"spider",
|
|
241
|
+
"tarantula",
|
|
242
|
+
"tick",
|
|
243
|
+
"mite",
|
|
244
|
+
"mosquito",
|
|
245
|
+
"fly",
|
|
246
|
+
"dragonfly",
|
|
247
|
+
"damselfly",
|
|
248
|
+
"grasshopper",
|
|
249
|
+
"cricket",
|
|
250
|
+
"locust",
|
|
251
|
+
"mantis",
|
|
252
|
+
"cockroach",
|
|
253
|
+
"termite",
|
|
254
|
+
"praying mantis",
|
|
255
|
+
"walking stick",
|
|
256
|
+
"stick bug",
|
|
257
|
+
"leaf insect",
|
|
258
|
+
"lacewing",
|
|
259
|
+
"aphid",
|
|
260
|
+
"cicada",
|
|
261
|
+
"thrips",
|
|
262
|
+
"psyllid",
|
|
263
|
+
"scale insect",
|
|
264
|
+
"whitefly",
|
|
265
|
+
"mealybug",
|
|
266
|
+
"planthopper",
|
|
267
|
+
"leafhopper",
|
|
268
|
+
"treehopper",
|
|
269
|
+
"flea",
|
|
270
|
+
"louse",
|
|
271
|
+
"bedbug",
|
|
272
|
+
"flea beetle",
|
|
273
|
+
"weevil",
|
|
274
|
+
"longhorn beetle",
|
|
275
|
+
"leaf beetle",
|
|
276
|
+
"tiger beetle",
|
|
277
|
+
"ground beetle",
|
|
278
|
+
"lady beetle",
|
|
279
|
+
"firefly",
|
|
280
|
+
"click beetle",
|
|
281
|
+
"rove beetle",
|
|
282
|
+
"scarab beetle",
|
|
283
|
+
"dung beetle",
|
|
284
|
+
"stag beetle",
|
|
285
|
+
"rhinoceros beetle",
|
|
286
|
+
"hercules beetle",
|
|
287
|
+
"goliath beetle",
|
|
288
|
+
"jewel beetle",
|
|
289
|
+
"tortoise beetle"
|
|
290
|
+
],
|
|
291
|
+
"created": [
|
|
292
|
+
"2024-09-18T21:48:28.173Z",
|
|
293
|
+
"2024-12-09T03:17:46.661Z",
|
|
294
|
+
"2024-02-26T07:52:14.943Z",
|
|
295
|
+
"2024-04-22T08:35:17.647Z",
|
|
296
|
+
"2024-11-25T17:03:58.061Z",
|
|
297
|
+
"2024-01-14T21:46:58.982Z",
|
|
298
|
+
"2024-06-20T12:47:25.687Z",
|
|
299
|
+
"2024-08-13T22:18:08.665Z",
|
|
300
|
+
"2024-08-09T07:47:18.321Z",
|
|
301
|
+
"2024-06-21T19:04:43.432Z",
|
|
302
|
+
"2024-03-09T00:18:37.705Z",
|
|
303
|
+
"2024-08-02T09:23:41.699Z",
|
|
304
|
+
"2024-11-26T13:25:08.673Z",
|
|
305
|
+
"2024-05-23T11:51:34.238Z",
|
|
306
|
+
"2024-10-24T20:14:05.106Z",
|
|
307
|
+
"2024-10-01T18:52:32.463Z",
|
|
308
|
+
"2024-10-15T19:22:40.675Z",
|
|
309
|
+
"2024-06-13T21:29:11.962Z",
|
|
310
|
+
"2024-08-29T12:02:48.632Z",
|
|
311
|
+
"2024-12-22T12:11:40.809Z",
|
|
312
|
+
"2024-01-03T03:39:19.446Z",
|
|
313
|
+
"2024-06-28T10:05:43.908Z",
|
|
314
|
+
"2024-12-01T18:49:00.447Z",
|
|
315
|
+
"2024-12-30T05:44:23.418Z",
|
|
316
|
+
"2024-03-14T22:38:40.833Z",
|
|
317
|
+
"2024-12-28T06:45:31.946Z",
|
|
318
|
+
"2024-07-20T21:40:19.498Z",
|
|
319
|
+
"2024-12-26T06:44:41.982Z",
|
|
320
|
+
"2024-10-28T13:45:35.409Z",
|
|
321
|
+
"2024-02-28T00:11:54.916Z",
|
|
322
|
+
"2024-07-08T10:01:57.834Z",
|
|
323
|
+
"2024-02-23T08:00:59.386Z",
|
|
324
|
+
"2024-08-20T05:23:33.024Z",
|
|
325
|
+
"2024-02-10T20:52:46.564Z",
|
|
326
|
+
"2024-08-24T21:32:15.202Z",
|
|
327
|
+
"2024-06-17T03:51:35.142Z",
|
|
328
|
+
"2024-04-09T13:13:45.218Z",
|
|
329
|
+
"2024-07-26T16:31:51.091Z",
|
|
330
|
+
"2024-05-26T04:06:33.013Z",
|
|
331
|
+
"2024-11-05T17:15:37.412Z",
|
|
332
|
+
"2024-10-20T17:01:38.205Z",
|
|
333
|
+
"2024-01-08T05:09:18.692Z",
|
|
334
|
+
"2024-08-24T13:52:14.774Z",
|
|
335
|
+
"2024-06-26T13:47:07.276Z",
|
|
336
|
+
"2024-06-19T15:05:53.246Z",
|
|
337
|
+
"2024-05-01T04:06:52.028Z",
|
|
338
|
+
"2024-05-26T22:45:59.626Z",
|
|
339
|
+
"2024-04-17T20:50:58.460Z",
|
|
340
|
+
"2024-07-28T04:32:04.578Z",
|
|
341
|
+
"2024-01-29T05:31:48.744Z",
|
|
342
|
+
"2024-08-06T18:47:29.190Z",
|
|
343
|
+
"2024-04-03T23:12:20.415Z",
|
|
344
|
+
"2024-09-13T08:47:35.938Z",
|
|
345
|
+
"2024-07-27T15:12:15.145Z",
|
|
346
|
+
"2024-10-24T00:39:21.835Z",
|
|
347
|
+
"2024-10-08T16:50:36.591Z",
|
|
348
|
+
"2024-02-27T15:53:19.204Z",
|
|
349
|
+
"2024-04-21T08:24:05.883Z",
|
|
350
|
+
"2024-03-08T10:07:46.720Z",
|
|
351
|
+
"2024-01-10T08:36:19.554Z",
|
|
352
|
+
"2024-02-17T12:56:00.562Z",
|
|
353
|
+
"2024-10-03T07:54:46.486Z",
|
|
354
|
+
"2024-05-29T10:18:36.289Z",
|
|
355
|
+
"2024-05-06T23:27:07.145Z",
|
|
356
|
+
"2024-05-27T08:41:47.787Z",
|
|
357
|
+
"2024-09-16T12:22:09.573Z",
|
|
358
|
+
"2024-05-03T00:31:06.036Z",
|
|
359
|
+
"2024-11-24T19:38:43.380Z",
|
|
360
|
+
"2024-06-03T04:01:56.328Z",
|
|
361
|
+
"2024-05-04T02:25:25.455Z",
|
|
362
|
+
"2024-12-19T18:35:25.052Z",
|
|
363
|
+
"2024-05-07T21:54:28.113Z",
|
|
364
|
+
"2024-11-24T09:58:08.766Z",
|
|
365
|
+
"2024-03-17T02:46:20.903Z",
|
|
366
|
+
"2024-09-04T09:20:24.930Z",
|
|
367
|
+
"2024-02-04T10:23:33.624Z",
|
|
368
|
+
"2024-01-26T02:42:06.668Z",
|
|
369
|
+
"2024-08-11T02:26:21.969Z",
|
|
370
|
+
"2024-07-11T13:34:51.283Z",
|
|
371
|
+
"2024-12-20T00:09:10.080Z",
|
|
372
|
+
"2024-05-28T00:20:07.079Z",
|
|
373
|
+
"2024-01-13T14:54:03.339Z",
|
|
374
|
+
"2024-08-10T17:18:12.759Z",
|
|
375
|
+
"2024-10-06T15:05:11.437Z",
|
|
376
|
+
"2024-11-18T03:53:12.932Z",
|
|
377
|
+
"2024-02-19T18:06:13.680Z",
|
|
378
|
+
"2024-08-03T11:48:00.207Z",
|
|
379
|
+
"2024-11-22T15:19:47.316Z",
|
|
380
|
+
"2024-06-30T19:56:49.636Z",
|
|
381
|
+
"2024-12-03T00:25:23.926Z",
|
|
382
|
+
"2024-07-30T15:27:18.198Z",
|
|
383
|
+
"2024-09-07T01:40:58.245Z",
|
|
384
|
+
"2024-05-16T05:24:14.727Z",
|
|
385
|
+
"2024-11-14T03:46:49.323Z",
|
|
386
|
+
"2024-02-16T09:18:23.473Z",
|
|
387
|
+
"2024-10-19T14:07:11.462Z",
|
|
388
|
+
"2024-02-09T08:52:04.735Z",
|
|
389
|
+
"2024-06-06T09:41:11.810Z",
|
|
390
|
+
"2024-05-07T23:14:05.114Z",
|
|
391
|
+
"2024-06-03T06:52:21.652Z"
|
|
392
|
+
]
|
|
393
|
+
},
|
|
394
|
+
"scdProps": {},
|
|
395
|
+
"mirrorProps": {},
|
|
396
|
+
"lookupTables": [],
|
|
397
|
+
"groupKeys": [],
|
|
398
|
+
"groupProps": {}
|
|
399
|
+
},
|
|
400
|
+
"hooks": "function (record, type, meta) {\n\t\t// event hook: high-weight events get a \"hot\" flag, low-weight get \"cold\"\n\t\tif (type === \"event\") {\n\t\t\tconst hotEvents = [\"foo\", \"bar\", \"baz\"];\n\t\t\tconst coldEvents = [\"crumn\", \"yak\"];\n\t\t\tif (hotEvents.includes(record.event)) {\n\t\t\t\trecord.temperature = \"hot\";\n\t\t\t} else if (coldEvents.includes(record.event)) {\n\t\t\t\trecord.temperature = \"cold\";\n\t\t\t} else {\n\t\t\t\trecord.temperature = \"warm\";\n\t\t\t}\n\t\t}\n\n\t\t// everything hook: hash-based cohort — 10% of users (by distinct_id) get doubled events\n\t\tif (type === \"everything\") {\n\t\t\tif (record.length > 0) {\n\t\t\t\tconst userId = record[0].user_id || record[0].distinct_id || \"\";\n\t\t\t\tif (userId && userId.charCodeAt(0) % 10 === 0) {\n\t\t\t\t\t// power user: duplicate each event with a slight time offset\n\t\t\t\t\tconst extras = record.slice(0, 3).map(e => ({\n\t\t\t\t\t\t...e,\n\t\t\t\t\t\tevent: e.event,\n\t\t\t\t\t\tuser_id: e.user_id,\n\t\t\t\t\t\ttime: e.time,\n\t\t\t\t\t\tis_duplicate: true,\n\t\t\t\t\t}));\n\t\t\t\t\treturn record.concat(extras);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn record;\n\t\t}\n\n\t\treturn record;\n\t}",
|
|
401
|
+
"timestamp": "2026-04-10T01:39:06.924Z",
|
|
402
|
+
"version": "4.0"
|
|
403
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ═══════════════════════════════════════════════════════════════
|
|
3
|
+
* DATASET OVERVIEW
|
|
4
|
+
* ═══════════════════════════════════════════════════════════════
|
|
5
|
+
*
|
|
6
|
+
* Foobar — minimal test/sanity dungeon with abstract event names.
|
|
7
|
+
* - Configurable scale (default 2 billion events for stress testing)
|
|
8
|
+
* - 10 events: foo, bar, baz, qux, garply, durtle, linny, fonk, crumn, yak
|
|
9
|
+
* - Super props: string, number, boolean, date
|
|
10
|
+
* - No funnels, no properties on events — pure weight-driven distribution
|
|
11
|
+
*
|
|
12
|
+
* ═══════════════════════════════════════════════════════════════
|
|
13
|
+
* ANALYTICS HOOKS (2 patterns)
|
|
14
|
+
* ═══════════════════════════════════════════════════════════════
|
|
15
|
+
*
|
|
16
|
+
* 1. TEMPERATURE TAGGING (event hook)
|
|
17
|
+
* foo/bar/baz = "hot", crumn/yak = "cold", everything else = "warm".
|
|
18
|
+
*
|
|
19
|
+
* Mixpanel Report:
|
|
20
|
+
* - Insights: any event, total events, breakdown by temperature
|
|
21
|
+
* Expected: "hot" dominates (highest-weight events)
|
|
22
|
+
*
|
|
23
|
+
* 2. HASH-BASED POWER USERS (everything hook)
|
|
24
|
+
* ~10% of users (by distinct_id hash) get 3 extra duplicate events.
|
|
25
|
+
*
|
|
26
|
+
* Mixpanel Report:
|
|
27
|
+
* - Insights: any event, total per user, breakdown by is_duplicate
|
|
28
|
+
* Expected: ~10% of users have extra events tagged is_duplicate=true
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
function integer(min = 1, max = 100) {
|
|
35
|
+
// If min equals max, just return the value
|
|
36
|
+
if (min === max) {
|
|
37
|
+
return min;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Swap min and max if min is greater than max
|
|
41
|
+
if (min > max) {
|
|
42
|
+
[min, max] = [max, min];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Generate a random integer between min and max (inclusive)
|
|
46
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
const dates = [
|
|
51
|
+
"2024-09-18T21:48:28.173Z",
|
|
52
|
+
"2024-12-09T03:17:46.661Z",
|
|
53
|
+
"2024-02-26T07:52:14.943Z",
|
|
54
|
+
"2024-04-22T08:35:17.647Z",
|
|
55
|
+
"2024-11-25T17:03:58.061Z",
|
|
56
|
+
"2024-01-14T21:46:58.982Z",
|
|
57
|
+
"2024-06-20T12:47:25.687Z",
|
|
58
|
+
"2024-08-13T22:18:08.665Z",
|
|
59
|
+
"2024-08-09T07:47:18.321Z",
|
|
60
|
+
"2024-06-21T19:04:43.432Z",
|
|
61
|
+
"2024-03-09T00:18:37.705Z",
|
|
62
|
+
"2024-08-02T09:23:41.699Z",
|
|
63
|
+
"2024-11-26T13:25:08.673Z",
|
|
64
|
+
"2024-05-23T11:51:34.238Z",
|
|
65
|
+
"2024-10-24T20:14:05.106Z",
|
|
66
|
+
"2024-10-01T18:52:32.463Z",
|
|
67
|
+
"2024-10-15T19:22:40.675Z",
|
|
68
|
+
"2024-06-13T21:29:11.962Z",
|
|
69
|
+
"2024-08-29T12:02:48.632Z",
|
|
70
|
+
"2024-12-22T12:11:40.809Z",
|
|
71
|
+
"2024-01-03T03:39:19.446Z",
|
|
72
|
+
"2024-06-28T10:05:43.908Z",
|
|
73
|
+
"2024-12-01T18:49:00.447Z",
|
|
74
|
+
"2024-12-30T05:44:23.418Z",
|
|
75
|
+
"2024-03-14T22:38:40.833Z",
|
|
76
|
+
"2024-12-28T06:45:31.946Z",
|
|
77
|
+
"2024-07-20T21:40:19.498Z",
|
|
78
|
+
"2024-12-26T06:44:41.982Z",
|
|
79
|
+
"2024-10-28T13:45:35.409Z",
|
|
80
|
+
"2024-02-28T00:11:54.916Z",
|
|
81
|
+
"2024-07-08T10:01:57.834Z",
|
|
82
|
+
"2024-02-23T08:00:59.386Z",
|
|
83
|
+
"2024-08-20T05:23:33.024Z",
|
|
84
|
+
"2024-02-10T20:52:46.564Z",
|
|
85
|
+
"2024-08-24T21:32:15.202Z",
|
|
86
|
+
"2024-06-17T03:51:35.142Z",
|
|
87
|
+
"2024-04-09T13:13:45.218Z",
|
|
88
|
+
"2024-07-26T16:31:51.091Z",
|
|
89
|
+
"2024-05-26T04:06:33.013Z",
|
|
90
|
+
"2024-11-05T17:15:37.412Z",
|
|
91
|
+
"2024-10-20T17:01:38.205Z",
|
|
92
|
+
"2024-01-08T05:09:18.692Z",
|
|
93
|
+
"2024-08-24T13:52:14.774Z",
|
|
94
|
+
"2024-06-26T13:47:07.276Z",
|
|
95
|
+
"2024-06-19T15:05:53.246Z",
|
|
96
|
+
"2024-05-01T04:06:52.028Z",
|
|
97
|
+
"2024-05-26T22:45:59.626Z",
|
|
98
|
+
"2024-04-17T20:50:58.460Z",
|
|
99
|
+
"2024-07-28T04:32:04.578Z",
|
|
100
|
+
"2024-01-29T05:31:48.744Z",
|
|
101
|
+
"2024-08-06T18:47:29.190Z",
|
|
102
|
+
"2024-04-03T23:12:20.415Z",
|
|
103
|
+
"2024-09-13T08:47:35.938Z",
|
|
104
|
+
"2024-07-27T15:12:15.145Z",
|
|
105
|
+
"2024-10-24T00:39:21.835Z",
|
|
106
|
+
"2024-10-08T16:50:36.591Z",
|
|
107
|
+
"2024-02-27T15:53:19.204Z",
|
|
108
|
+
"2024-04-21T08:24:05.883Z",
|
|
109
|
+
"2024-03-08T10:07:46.720Z",
|
|
110
|
+
"2024-01-10T08:36:19.554Z",
|
|
111
|
+
"2024-02-17T12:56:00.562Z",
|
|
112
|
+
"2024-10-03T07:54:46.486Z",
|
|
113
|
+
"2024-05-29T10:18:36.289Z",
|
|
114
|
+
"2024-05-06T23:27:07.145Z",
|
|
115
|
+
"2024-05-27T08:41:47.787Z",
|
|
116
|
+
"2024-09-16T12:22:09.573Z",
|
|
117
|
+
"2024-05-03T00:31:06.036Z",
|
|
118
|
+
"2024-11-24T19:38:43.380Z",
|
|
119
|
+
"2024-06-03T04:01:56.328Z",
|
|
120
|
+
"2024-05-04T02:25:25.455Z",
|
|
121
|
+
"2024-12-19T18:35:25.052Z",
|
|
122
|
+
"2024-05-07T21:54:28.113Z",
|
|
123
|
+
"2024-11-24T09:58:08.766Z",
|
|
124
|
+
"2024-03-17T02:46:20.903Z",
|
|
125
|
+
"2024-09-04T09:20:24.930Z",
|
|
126
|
+
"2024-02-04T10:23:33.624Z",
|
|
127
|
+
"2024-01-26T02:42:06.668Z",
|
|
128
|
+
"2024-08-11T02:26:21.969Z",
|
|
129
|
+
"2024-07-11T13:34:51.283Z",
|
|
130
|
+
"2024-12-20T00:09:10.080Z",
|
|
131
|
+
"2024-05-28T00:20:07.079Z",
|
|
132
|
+
"2024-01-13T14:54:03.339Z",
|
|
133
|
+
"2024-08-10T17:18:12.759Z",
|
|
134
|
+
"2024-10-06T15:05:11.437Z",
|
|
135
|
+
"2024-11-18T03:53:12.932Z",
|
|
136
|
+
"2024-02-19T18:06:13.680Z",
|
|
137
|
+
"2024-08-03T11:48:00.207Z",
|
|
138
|
+
"2024-11-22T15:19:47.316Z",
|
|
139
|
+
"2024-06-30T19:56:49.636Z",
|
|
140
|
+
"2024-12-03T00:25:23.926Z",
|
|
141
|
+
"2024-07-30T15:27:18.198Z",
|
|
142
|
+
"2024-09-07T01:40:58.245Z",
|
|
143
|
+
"2024-05-16T05:24:14.727Z",
|
|
144
|
+
"2024-11-14T03:46:49.323Z",
|
|
145
|
+
"2024-02-16T09:18:23.473Z",
|
|
146
|
+
"2024-10-19T14:07:11.462Z",
|
|
147
|
+
"2024-02-09T08:52:04.735Z",
|
|
148
|
+
"2024-06-06T09:41:11.810Z",
|
|
149
|
+
"2024-05-07T23:14:05.114Z",
|
|
150
|
+
"2024-06-03T06:52:21.652Z"
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
const billionsOfEvents = 2
|
|
154
|
+
|
|
155
|
+
const numEvents = billionsOfEvents * 1_000_000_000;
|
|
156
|
+
const eventPerUser = 1_000;
|
|
157
|
+
const numUsers = Math.floor(numEvents / eventPerUser);
|
|
158
|
+
const seed = Math.random().toString()
|
|
159
|
+
|
|
160
|
+
/** @type {import('../types').Dungeon} */
|
|
161
|
+
const config = {
|
|
162
|
+
token: "",
|
|
163
|
+
seed: seed,
|
|
164
|
+
numDays: 30, //how many days worth of data
|
|
165
|
+
numEvents: numEvents, //how many events
|
|
166
|
+
numUsers: numUsers, //how many users
|
|
167
|
+
format: 'json', //csv or json
|
|
168
|
+
region: "US",
|
|
169
|
+
hasAnonIds: false, //if true, anonymousIds are created for each user
|
|
170
|
+
hasSessionIds: false, //if true, hasSessionIds are created for each user
|
|
171
|
+
batchSize: 2_500_000,
|
|
172
|
+
hasAdSpend: false,
|
|
173
|
+
hasAvatar: false,
|
|
174
|
+
hasBrowser: false,
|
|
175
|
+
hasCampaigns: false,
|
|
176
|
+
hasIOSDevices: false,
|
|
177
|
+
hasLocation: false,
|
|
178
|
+
isAnonymous: true,
|
|
179
|
+
hasAndroidDevices: false,
|
|
180
|
+
hasDesktopDevices: false,
|
|
181
|
+
writeToDisk: false,
|
|
182
|
+
concurrency: 1,
|
|
183
|
+
|
|
184
|
+
events: [
|
|
185
|
+
{
|
|
186
|
+
event: "foo",
|
|
187
|
+
weight: 10,
|
|
188
|
+
properties: {}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
event: "bar",
|
|
192
|
+
weight: 9,
|
|
193
|
+
properties: {}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
event: "baz",
|
|
197
|
+
weight: 8,
|
|
198
|
+
properties: {}
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
event: "qux",
|
|
202
|
+
weight: 7,
|
|
203
|
+
properties: {}
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
event: "garply",
|
|
207
|
+
weight: 6,
|
|
208
|
+
properties: {}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
event: "durtle",
|
|
212
|
+
weight: 5,
|
|
213
|
+
properties: {}
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
event: "linny",
|
|
217
|
+
weight: 4,
|
|
218
|
+
properties: {}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
event: "fonk",
|
|
222
|
+
weight: 3,
|
|
223
|
+
properties: {}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
event: "crumn",
|
|
227
|
+
weight: 2,
|
|
228
|
+
properties: {}
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
event: "yak",
|
|
232
|
+
weight: 1,
|
|
233
|
+
properties: {}
|
|
234
|
+
}
|
|
235
|
+
],
|
|
236
|
+
superProps: {
|
|
237
|
+
string: ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
|
|
238
|
+
number: integer,
|
|
239
|
+
boolean: [true, false],
|
|
240
|
+
date: dates,
|
|
241
|
+
|
|
242
|
+
},
|
|
243
|
+
userProps: {
|
|
244
|
+
luckyNumber: integer,
|
|
245
|
+
spiritAnimal: ["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"],
|
|
246
|
+
created: dates,
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
scdProps: {},
|
|
250
|
+
mirrorProps: {},
|
|
251
|
+
lookupTables: [],
|
|
252
|
+
groupKeys: [
|
|
253
|
+
],
|
|
254
|
+
groupProps: {
|
|
255
|
+
},
|
|
256
|
+
|
|
257
|
+
hook: function (record, type, meta) {
|
|
258
|
+
// event hook: high-weight events get a "hot" flag, low-weight get "cold"
|
|
259
|
+
if (type === "event") {
|
|
260
|
+
const hotEvents = ["foo", "bar", "baz"];
|
|
261
|
+
const coldEvents = ["crumn", "yak"];
|
|
262
|
+
if (hotEvents.includes(record.event)) {
|
|
263
|
+
record.temperature = "hot";
|
|
264
|
+
} else if (coldEvents.includes(record.event)) {
|
|
265
|
+
record.temperature = "cold";
|
|
266
|
+
} else {
|
|
267
|
+
record.temperature = "warm";
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// everything hook: hash-based cohort — 10% of users (by distinct_id) get doubled events
|
|
272
|
+
if (type === "everything") {
|
|
273
|
+
if (record.length > 0) {
|
|
274
|
+
const userId = record[0].user_id || record[0].distinct_id || "";
|
|
275
|
+
if (userId && userId.charCodeAt(0) % 10 === 0) {
|
|
276
|
+
// power user: duplicate each event with a slight time offset
|
|
277
|
+
const extras = record.slice(0, 3).map(e => ({
|
|
278
|
+
...e,
|
|
279
|
+
event: e.event,
|
|
280
|
+
user_id: e.user_id,
|
|
281
|
+
time: e.time,
|
|
282
|
+
is_duplicate: true,
|
|
283
|
+
}));
|
|
284
|
+
return record.concat(extras);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return record;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return record;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
export default config;
|