@live-change/db-server 0.8.14 → 0.8.16

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.
@@ -0,0 +1,2786 @@
1
+ {
2
+ "databases": {
3
+ "system": {
4
+ "tables": {
5
+ "test_tables": {
6
+ "uid": "703901ace97bf6dd"
7
+ },
8
+ "test_logs": {
9
+ "uid": "70f22e7eb9d13d8b"
10
+ },
11
+ "test_indexes": {
12
+ "uid": "b4fb466f4cdddcf4"
13
+ }
14
+ },
15
+ "indexes": {},
16
+ "logs": {}
17
+ },
18
+ "test": {
19
+ "tables": {
20
+ "services": {
21
+ "uid": "720a48eeaeaad3e38ae12b013cd79666"
22
+ },
23
+ "eventConsumers": {
24
+ "uid": "fe845903d45dd9a90173def5585245bc"
25
+ },
26
+ "commands": {
27
+ "uid": "c96f085077feea8800bc733a47b4499f"
28
+ },
29
+ "blog_Post": {
30
+ "uid": "295975c49391f723a4217204480ca4f9"
31
+ },
32
+ "session_Session": {
33
+ "uid": "b39987b7b9a9e4e17b9c8c5560d97844"
34
+ },
35
+ "tags_Tag": {
36
+ "uid": "7faffffa4c0b7ef584096c0b663561a3"
37
+ },
38
+ "timer_Timer": {
39
+ "uid": "ac7525dffaa47c34605b9d9a441aa189"
40
+ },
41
+ "tags_SelectedTags": {
42
+ "uid": "cad1cb95ac47302a648f9c11c3ff0ab3"
43
+ },
44
+ "slugs_Slug": {
45
+ "uid": "a636658b006df2758ec54f27ae1b7875"
46
+ },
47
+ "notifications_Notification": {
48
+ "uid": "fd47a9557ec02f30ed554b1e57b9d9ec"
49
+ },
50
+ "email_SentEmail": {
51
+ "uid": "4291a408f61fa2a0d7d8973a4393d3f3"
52
+ },
53
+ "categories_Category": {
54
+ "uid": "b09d96ab8c8a28b0318e693c06005b59"
55
+ },
56
+ "comments_Comment": {
57
+ "uid": "122b7254ba7c5d8f402208435deae13f"
58
+ },
59
+ "xmlSearch_DataSet": {
60
+ "uid": "58dab9b4ae7dc42da48475f9fda217c3"
61
+ },
62
+ "users_User": {
63
+ "uid": "6a9cd68bc85df5a01fdf52d40c342814"
64
+ },
65
+ "emailPassword_EmailPassword": {
66
+ "uid": "17b5f77528776ee2843bb098031fc687"
67
+ },
68
+ "emailPassword_EmailKey": {
69
+ "uid": "d33adcd10694db2a2e719f7319166619"
70
+ },
71
+ "emailPassword_startRegister_draft": {
72
+ "uid": "96fa90d1e60adb6eb3066f056b14cca5"
73
+ },
74
+ "googleLogin_Login": {
75
+ "uid": "16b69f6733b56d0586a040f5cd595917"
76
+ },
77
+ "facebookLogin_Login": {
78
+ "uid": "6f1fdb041c61bb9d15cdcc4c328cbe24"
79
+ },
80
+ "xmlSearch_Search": {
81
+ "uid": "ad45d2a4696a232c40ac3a8d7afd2982"
82
+ },
83
+ "pictures_Picture": {
84
+ "uid": "9e90b809165f367d88feb3b628cd9f0f"
85
+ },
86
+ "members_Membership": {
87
+ "uid": "1abddc607dcbb1858e00f97f24b1d0b8"
88
+ },
89
+ "members_Invitation": {
90
+ "uid": "a459af4455849e417979e1428215900c"
91
+ },
92
+ "room_Room": {
93
+ "uid": "8c81c1eabb29e930a34d51196743a949"
94
+ },
95
+ "accessControl_Access": {
96
+ "uid": "3c88e6b42b677e60bab94b622949d4ef"
97
+ },
98
+ "accessControl_PublicSessionInfo": {
99
+ "uid": "4985177ba5371e8821b1c632f1a0955c"
100
+ },
101
+ "accessControl_SessionAccess": {
102
+ "uid": "ef36d161c77db9515a3192c82e5f0f8c"
103
+ },
104
+ "members_JoinRequest": {
105
+ "uid": "d5631026ba4e77c8e10941487437e419"
106
+ },
107
+ "members_EmailInvitation": {
108
+ "uid": "463d22226aa3165ab421810333e07aa1"
109
+ },
110
+ "members_SessionInvitations": {
111
+ "uid": "a15ee09632d5ec6264c3162a3d714f72"
112
+ },
113
+ "uploads": {
114
+ "uid": "19d605feb5eb6efb6d256c2bf85731da"
115
+ },
116
+ "partials_Partial": {
117
+ "uid": "482ec692a513b2c6fecbdf54137a814f"
118
+ },
119
+ "accessControl_SessionAccessOnline": {
120
+ "uid": "4bd5aff4322074fa65b69eef6a2d953a"
121
+ },
122
+ "accessControl_UserAccessOnline": {
123
+ "uid": "22b40366dfa2b948ae219b454dd66da6"
124
+ },
125
+ "messages_Message": {
126
+ "uid": "1bff7e4ed28648490e685722597f5e11"
127
+ },
128
+ "readHistory_ReadHistory": {
129
+ "uid": "944f1b5bee9114c2bf26080b711951da"
130
+ },
131
+ "messages_PrivateConversation": {
132
+ "uid": "cf797a0b019d901e5d3eea1e3c5c93f9"
133
+ },
134
+ "xmlAlert_Scanner": {
135
+ "uid": "bf7d9a98b228736fae0b6deb432b45cd"
136
+ },
137
+ "xmlAlert_Scan": {
138
+ "uid": "00200e9a3fbee39e3a99afc17f384305"
139
+ },
140
+ "eventReports": {
141
+ "uid": "ce58087523d6c6f7a72317c97025c511"
142
+ },
143
+ "searchIndexes": {
144
+ "uid": "a7d207e408376babe0caa2cf05b87c69"
145
+ },
146
+ "peerConnection_Peer": {
147
+ "uid": "88af15629cf01917022978973b2bbfe3"
148
+ },
149
+ "peerConnection_Message": {
150
+ "uid": "807766a2410b94bd3420ed9207cf07b3"
151
+ },
152
+ "xmlAlert_Result": {
153
+ "uid": "0ec8aa409a21a9a820bb6aee3fad5d32"
154
+ },
155
+ "smsConfirm_Code": {
156
+ "uid": "9dfb0f2813992472d1687d84c7f468e6"
157
+ },
158
+ "smsapi_SentSms": {
159
+ "uid": "cc9003fdc930bc31ea1bb9bea0323e5e"
160
+ },
161
+ "peerConnection_PeerState": {
162
+ "uid": "7e6f3dd44e8dfd5e97b7f94dd9ab9269"
163
+ },
164
+ "urlChecker_Checker": {
165
+ "uid": "000210093002099036492"
166
+ },
167
+ "urlChecker_Check": {
168
+ "uid": "568054240004712045550000"
169
+ },
170
+ "xmlSearch_Generator": {
171
+ "uid": "00011009678008200000"
172
+ },
173
+ "xmlCsvExclusions_ExclusionsList": {
174
+ "uid": "00020000280000448300"
175
+ },
176
+ "xmlCsvExclusions_ExclusionsCheck": {
177
+ "uid": "342000640077500000036"
178
+ },
179
+ "adsApi_ApiAccess": {
180
+ "uid": "20510021590110005744044"
181
+ },
182
+ "adsApi_Account": {
183
+ "uid": "0037670000544506900093"
184
+ },
185
+ "adsApi_UserOwnedAccount": {
186
+ "uid": "08100800800360000000"
187
+ },
188
+ "adsApi_Campaign": {
189
+ "uid": "0007600677594250268006"
190
+ },
191
+ "adsApi_UserState": {
192
+ "uid": "1ca2e5864f99da04"
193
+ },
194
+ "triggerRoutes": {
195
+ "uid": "c3dfc65f19fdb66b"
196
+ },
197
+ "triggers": {
198
+ "uid": "b51ff846d62344e1"
199
+ }
200
+ },
201
+ "indexes": {
202
+ "blog_Post_postsByDate": {
203
+ "uid": "7d1548240b2720848899d26ce2f2db95",
204
+ "sources": [
205
+ {
206
+ "type": "table",
207
+ "name": "blog_Post"
208
+ }
209
+ ],
210
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
211
+ "parameters": {
212
+ "properties": [
213
+ [
214
+ "date"
215
+ ]
216
+ ],
217
+ "table": "blog_Post"
218
+ }
219
+ },
220
+ "tags_SelectedTags_user": {
221
+ "uid": "43268a7632955e45a1979ea51e0c6c7b",
222
+ "sources": [
223
+ {
224
+ "type": "table",
225
+ "name": "tags_SelectedTags"
226
+ }
227
+ ],
228
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
229
+ "parameters": {
230
+ "properties": [
231
+ [
232
+ "user"
233
+ ]
234
+ ],
235
+ "table": "tags_SelectedTags"
236
+ }
237
+ },
238
+ "tags_SelectedTags_session": {
239
+ "uid": "0c62d0561aa146a47af9742aca57712a",
240
+ "sources": [
241
+ {
242
+ "type": "table",
243
+ "name": "tags_SelectedTags"
244
+ }
245
+ ],
246
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
247
+ "parameters": {
248
+ "properties": [
249
+ [
250
+ "session"
251
+ ]
252
+ ],
253
+ "table": "tags_SelectedTags"
254
+ }
255
+ },
256
+ "slugs_Slug_slugByPath": {
257
+ "uid": "996e841c22d58f3d19ce5b59ef186514",
258
+ "sources": [
259
+ {
260
+ "type": "table",
261
+ "name": "slugs_Slug"
262
+ }
263
+ ],
264
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
265
+ "parameters": {
266
+ "properties": [
267
+ [
268
+ "group"
269
+ ],
270
+ [
271
+ "path"
272
+ ]
273
+ ],
274
+ "table": "slugs_Slug"
275
+ }
276
+ },
277
+ "categories_Category_subcategories": {
278
+ "uid": "afce43127e33f536e1e28a10fe7d1457",
279
+ "sources": [
280
+ {
281
+ "type": "table",
282
+ "name": "categories_Category"
283
+ }
284
+ ],
285
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
286
+ "parameters": {
287
+ "properties": [
288
+ [
289
+ "parent"
290
+ ]
291
+ ],
292
+ "table": "categories_Category"
293
+ }
294
+ },
295
+ "comments_Comment_commentsBySubject": {
296
+ "uid": "d4cb57e24477354ac1b04731e9d59098",
297
+ "sources": [
298
+ {
299
+ "type": "table",
300
+ "name": "comments_Comment"
301
+ }
302
+ ],
303
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
304
+ "parameters": {
305
+ "properties": [
306
+ [
307
+ "subjectType"
308
+ ],
309
+ [
310
+ "subject"
311
+ ],
312
+ [
313
+ "addTime"
314
+ ]
315
+ ],
316
+ "table": "comments_Comment"
317
+ }
318
+ },
319
+ "users_User_email": {
320
+ "uid": "cd36bc5f2354e2a7bae4ba04662d5789",
321
+ "sources": [
322
+ {
323
+ "type": "table",
324
+ "name": "users_User"
325
+ }
326
+ ],
327
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
328
+ "parameters": {
329
+ "properties": [
330
+ [
331
+ "userData",
332
+ "email"
333
+ ]
334
+ ],
335
+ "table": "users_User"
336
+ }
337
+ },
338
+ "blog_Post_userPostsWithDate": {
339
+ "uid": "3ad501c8bf2ea01da828024e7e726bff",
340
+ "sources": [
341
+ {
342
+ "type": "table",
343
+ "name": "blog_Post"
344
+ }
345
+ ],
346
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
347
+ "parameters": {
348
+ "properties": [
349
+ [
350
+ "author"
351
+ ],
352
+ [
353
+ "date"
354
+ ]
355
+ ],
356
+ "table": "blog_Post"
357
+ }
358
+ },
359
+ "notifications_Notification_userNotificationsByReadState": {
360
+ "uid": "2297215b6b197c7bddcee3e18dec76c3",
361
+ "sources": [
362
+ {
363
+ "type": "table",
364
+ "name": "notifications_Notification"
365
+ }
366
+ ],
367
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
368
+ "parameters": {
369
+ "properties": [
370
+ [
371
+ "user"
372
+ ],
373
+ [
374
+ "readState"
375
+ ]
376
+ ],
377
+ "table": "notifications_Notification"
378
+ }
379
+ },
380
+ "xmlSearch_Search_bySession": {
381
+ "uid": "9f5fb25093c615ec8712b3ee604cfb67",
382
+ "sources": [
383
+ {
384
+ "type": "table",
385
+ "name": "xmlSearch_Search"
386
+ }
387
+ ],
388
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
389
+ "parameters": {
390
+ "properties": [
391
+ [
392
+ "session"
393
+ ],
394
+ [
395
+ "timestamp"
396
+ ]
397
+ ],
398
+ "table": "xmlSearch_Search"
399
+ }
400
+ },
401
+ "xmlSearch_Search_byUser": {
402
+ "uid": "002c5e134a3109845fedc6580768a654",
403
+ "sources": [
404
+ {
405
+ "type": "table",
406
+ "name": "xmlSearch_Search"
407
+ }
408
+ ],
409
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
410
+ "parameters": {
411
+ "properties": [
412
+ [
413
+ "user"
414
+ ],
415
+ [
416
+ "timestamp"
417
+ ]
418
+ ],
419
+ "table": "xmlSearch_Search"
420
+ }
421
+ },
422
+ "xmlSearch_Search_bySessionDataSet": {
423
+ "uid": "8dbc0385d9f40e843fb81b0deb3a8939",
424
+ "sources": [
425
+ {
426
+ "type": "table",
427
+ "name": "xmlSearch_Search"
428
+ }
429
+ ],
430
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
431
+ "parameters": {
432
+ "properties": [
433
+ [
434
+ "session"
435
+ ],
436
+ [
437
+ "dataSet"
438
+ ],
439
+ [
440
+ "timestamp"
441
+ ]
442
+ ],
443
+ "table": "xmlSearch_Search"
444
+ }
445
+ },
446
+ "xmlSearch_Search_byUserDataSet": {
447
+ "uid": "7a5f68fbcfdaae2a3e3ea741729c8137",
448
+ "sources": [
449
+ {
450
+ "type": "table",
451
+ "name": "xmlSearch_Search"
452
+ }
453
+ ],
454
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
455
+ "parameters": {
456
+ "properties": [
457
+ [
458
+ "user"
459
+ ],
460
+ [
461
+ "dataSet"
462
+ ],
463
+ [
464
+ "timestamp"
465
+ ]
466
+ ],
467
+ "table": "xmlSearch_Search"
468
+ }
469
+ },
470
+ "xmlSearch_Search_byDataSet": {
471
+ "uid": "9c603bd6514a473a4aa442f40bb61636",
472
+ "sources": [
473
+ {
474
+ "type": "table",
475
+ "name": "xmlSearch_Search"
476
+ }
477
+ ],
478
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
479
+ "parameters": {
480
+ "properties": [
481
+ [
482
+ "dataSet"
483
+ ]
484
+ ],
485
+ "table": "xmlSearch_Search"
486
+ }
487
+ },
488
+ "xmlSearch_Search_user": {
489
+ "uid": "a0e6d2897e1c8338b48adacfb4a36036",
490
+ "sources": [
491
+ {
492
+ "type": "table",
493
+ "name": "xmlSearch_Search"
494
+ }
495
+ ],
496
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
497
+ "parameters": {
498
+ "properties": [
499
+ [
500
+ "user"
501
+ ]
502
+ ],
503
+ "table": "xmlSearch_Search"
504
+ }
505
+ },
506
+ "xmlSearch_Search_session": {
507
+ "uid": "90a2df85a8b818379136ca7c03b57ecb",
508
+ "sources": [
509
+ {
510
+ "type": "table",
511
+ "name": "xmlSearch_Search"
512
+ }
513
+ ],
514
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
515
+ "parameters": {
516
+ "properties": [
517
+ [
518
+ "session"
519
+ ]
520
+ ],
521
+ "table": "xmlSearch_Search"
522
+ }
523
+ },
524
+ "members_Membership_userMemberships": {
525
+ "uid": "4a314e7ee611f5f192ac9977d3415e61",
526
+ "sources": [
527
+ {
528
+ "type": "table",
529
+ "name": "members_Membership"
530
+ }
531
+ ],
532
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
533
+ "parameters": {
534
+ "properties": [
535
+ [
536
+ "user"
537
+ ]
538
+ ],
539
+ "table": "members_Membership"
540
+ }
541
+ },
542
+ "members_Membership_userMembershipsByType": {
543
+ "uid": "c97e420e2b5b35a4ec261e8e03a9d2fa",
544
+ "sources": [
545
+ {
546
+ "type": "table",
547
+ "name": "members_Membership"
548
+ }
549
+ ],
550
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
551
+ "parameters": {
552
+ "properties": [
553
+ [
554
+ "user"
555
+ ],
556
+ [
557
+ "listType"
558
+ ]
559
+ ],
560
+ "table": "members_Membership"
561
+ }
562
+ },
563
+ "members_Membership_userMembershipsByTypeTime": {
564
+ "uid": "af0b08287a0d6eba37912f92bfcd50fd",
565
+ "sources": [
566
+ {
567
+ "type": "table",
568
+ "name": "members_Membership"
569
+ }
570
+ ],
571
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
572
+ "parameters": {
573
+ "properties": [
574
+ [
575
+ "user"
576
+ ],
577
+ [
578
+ "listType"
579
+ ],
580
+ [
581
+ "time"
582
+ ]
583
+ ],
584
+ "table": "members_Membership"
585
+ }
586
+ },
587
+ "members_Membership_userMembershipsByTypeRole": {
588
+ "uid": "2459979fa5d5d2e1e9879f2868d0d3e6",
589
+ "sources": [
590
+ {
591
+ "type": "table",
592
+ "name": "members_Membership"
593
+ }
594
+ ],
595
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
596
+ "parameters": {
597
+ "properties": [
598
+ [
599
+ "user"
600
+ ],
601
+ [
602
+ "listType"
603
+ ],
604
+ [
605
+ "role"
606
+ ]
607
+ ],
608
+ "table": "members_Membership"
609
+ }
610
+ },
611
+ "members_Membership_listMembershipsByTypeRole": {
612
+ "uid": "02a105fdcc805ad656efeb5f4584902b",
613
+ "sources": [
614
+ {
615
+ "type": "table",
616
+ "name": "members_Membership"
617
+ }
618
+ ],
619
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
620
+ "parameters": {
621
+ "properties": [
622
+ [
623
+ "listType"
624
+ ],
625
+ [
626
+ "list"
627
+ ],
628
+ [
629
+ "role"
630
+ ]
631
+ ],
632
+ "table": "members_Membership"
633
+ }
634
+ },
635
+ "members_Membership_userMembershipsByTypeRoleTime": {
636
+ "uid": "c2fff98ffe0ff864a936e514f5eb10f3",
637
+ "sources": [
638
+ {
639
+ "type": "table",
640
+ "name": "members_Membership"
641
+ }
642
+ ],
643
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
644
+ "parameters": {
645
+ "properties": [
646
+ [
647
+ "user"
648
+ ],
649
+ [
650
+ "listType"
651
+ ],
652
+ [
653
+ "role"
654
+ ],
655
+ [
656
+ "time"
657
+ ]
658
+ ],
659
+ "table": "members_Membership"
660
+ }
661
+ },
662
+ "members_Membership_listMembers": {
663
+ "uid": "6e3ccc81732b7b8315e1a0f489a5dfe0",
664
+ "sources": [
665
+ {
666
+ "type": "table",
667
+ "name": "members_Membership"
668
+ }
669
+ ],
670
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
671
+ "parameters": {
672
+ "properties": [
673
+ [
674
+ "listType"
675
+ ],
676
+ [
677
+ "list"
678
+ ]
679
+ ],
680
+ "table": "members_Membership"
681
+ }
682
+ },
683
+ "members_Membership_membership": {
684
+ "uid": "8c006f9472686672a063eaee6745e180",
685
+ "sources": [
686
+ {
687
+ "type": "table",
688
+ "name": "members_Membership"
689
+ }
690
+ ],
691
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
692
+ "parameters": {
693
+ "properties": [
694
+ [
695
+ "user"
696
+ ],
697
+ [
698
+ "listType"
699
+ ],
700
+ [
701
+ "list"
702
+ ]
703
+ ],
704
+ "table": "members_Membership"
705
+ }
706
+ },
707
+ "members_Invitation_receivedInvitations": {
708
+ "uid": "d5bc3adda3a39a299765c8b615359963",
709
+ "sources": [
710
+ {
711
+ "type": "table",
712
+ "name": "members_Invitation"
713
+ }
714
+ ],
715
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
716
+ "parameters": {
717
+ "properties": [
718
+ [
719
+ "to"
720
+ ]
721
+ ],
722
+ "table": "members_Invitation"
723
+ }
724
+ },
725
+ "members_Invitation_sentInvitations": {
726
+ "uid": "bd35122c0841e7a3f1dcb67176cd3b10",
727
+ "sources": [
728
+ {
729
+ "type": "table",
730
+ "name": "members_Invitation"
731
+ }
732
+ ],
733
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
734
+ "parameters": {
735
+ "properties": [
736
+ [
737
+ "from"
738
+ ]
739
+ ],
740
+ "table": "members_Invitation"
741
+ }
742
+ },
743
+ "members_Invitation_receivedInvitationsByType": {
744
+ "uid": "ee5aff34615e4736b465e4a1bc6c63ab",
745
+ "sources": [
746
+ {
747
+ "type": "table",
748
+ "name": "members_Invitation"
749
+ }
750
+ ],
751
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
752
+ "parameters": {
753
+ "properties": [
754
+ [
755
+ "to"
756
+ ],
757
+ [
758
+ "listType"
759
+ ]
760
+ ],
761
+ "table": "members_Invitation"
762
+ }
763
+ },
764
+ "accessControl_Access_byTo": {
765
+ "uid": "bf4eab63c29b578486b4c1d5164675fb",
766
+ "sources": [
767
+ {
768
+ "type": "table",
769
+ "name": "accessControl_Access"
770
+ }
771
+ ],
772
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
773
+ "parameters": {
774
+ "properties": [
775
+ [
776
+ "toType"
777
+ ],
778
+ [
779
+ "toId"
780
+ ]
781
+ ],
782
+ "table": "accessControl_Access"
783
+ }
784
+ },
785
+ "members_Invitation_sentInvitationsByType": {
786
+ "uid": "8c12129c85caf42a8aaddec5f463cfae",
787
+ "sources": [
788
+ {
789
+ "type": "table",
790
+ "name": "members_Invitation"
791
+ }
792
+ ],
793
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
794
+ "parameters": {
795
+ "properties": [
796
+ [
797
+ "from"
798
+ ],
799
+ [
800
+ "listType"
801
+ ]
802
+ ],
803
+ "table": "members_Invitation"
804
+ }
805
+ },
806
+ "members_Invitation_listInvitations": {
807
+ "uid": "e54ee4fcb99528001cc1913461b32c48",
808
+ "sources": [
809
+ {
810
+ "type": "table",
811
+ "name": "members_Invitation"
812
+ }
813
+ ],
814
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
815
+ "parameters": {
816
+ "properties": [
817
+ [
818
+ "listType"
819
+ ],
820
+ [
821
+ "list"
822
+ ]
823
+ ],
824
+ "table": "members_Invitation"
825
+ }
826
+ },
827
+ "accessControl_PublicSessionInfo_bySession": {
828
+ "uid": "7af6b44923fb123d8a87fa45b38565a8",
829
+ "sources": [
830
+ {
831
+ "type": "table",
832
+ "name": "accessControl_PublicSessionInfo"
833
+ }
834
+ ],
835
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
836
+ "parameters": {
837
+ "properties": [
838
+ [
839
+ "session"
840
+ ]
841
+ ],
842
+ "table": "accessControl_PublicSessionInfo"
843
+ }
844
+ },
845
+ "members_Invitation_invitation": {
846
+ "uid": "b4210a2958d4da0cfe83dd479b5c1ec7",
847
+ "sources": [
848
+ {
849
+ "type": "table",
850
+ "name": "members_Invitation"
851
+ }
852
+ ],
853
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
854
+ "parameters": {
855
+ "properties": [
856
+ [
857
+ "to"
858
+ ],
859
+ [
860
+ "listType"
861
+ ],
862
+ [
863
+ "list"
864
+ ]
865
+ ],
866
+ "table": "members_Invitation"
867
+ }
868
+ },
869
+ "accessControl_SessionAccess_byAccess": {
870
+ "uid": "3d65b6c0ae37e73cdade1b6538d2ba06",
871
+ "sources": [
872
+ {
873
+ "type": "table",
874
+ "name": "accessControl_SessionAccess"
875
+ }
876
+ ],
877
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
878
+ "parameters": {
879
+ "properties": [
880
+ [
881
+ "access"
882
+ ]
883
+ ],
884
+ "table": "accessControl_SessionAccess"
885
+ }
886
+ },
887
+ "members_JoinRequest_receivedJoinRequests": {
888
+ "uid": "32cecbbad72a61330cb08b291163cb26",
889
+ "sources": [
890
+ {
891
+ "type": "table",
892
+ "name": "members_JoinRequest"
893
+ }
894
+ ],
895
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
896
+ "parameters": {
897
+ "properties": [
898
+ [
899
+ "to"
900
+ ]
901
+ ],
902
+ "table": "members_JoinRequest"
903
+ }
904
+ },
905
+ "accessControl_SessionAccess_bySession": {
906
+ "uid": "fc37f4efaa7bbd94807d0cf8262418c1",
907
+ "sources": [
908
+ {
909
+ "type": "table",
910
+ "name": "accessControl_SessionAccess"
911
+ }
912
+ ],
913
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
914
+ "parameters": {
915
+ "properties": [
916
+ [
917
+ "session"
918
+ ]
919
+ ],
920
+ "table": "accessControl_SessionAccess"
921
+ }
922
+ },
923
+ "members_JoinRequest_sentJoinRequests": {
924
+ "uid": "7f7175a9dc40e174617de94a50bd1f02",
925
+ "sources": [
926
+ {
927
+ "type": "table",
928
+ "name": "members_JoinRequest"
929
+ }
930
+ ],
931
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
932
+ "parameters": {
933
+ "properties": [
934
+ [
935
+ "from"
936
+ ]
937
+ ],
938
+ "table": "members_JoinRequest"
939
+ }
940
+ },
941
+ "accessControl_SessionAccess_bySessionAccess": {
942
+ "uid": "731fca19f3f19a4311e0a3bd9ad94ac9",
943
+ "sources": [
944
+ {
945
+ "type": "table",
946
+ "name": "accessControl_SessionAccess"
947
+ }
948
+ ],
949
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
950
+ "parameters": {
951
+ "properties": [
952
+ [
953
+ "session"
954
+ ],
955
+ [
956
+ "access"
957
+ ]
958
+ ],
959
+ "table": "accessControl_SessionAccess"
960
+ }
961
+ },
962
+ "members_JoinRequest_receivedJoinRequestsByType": {
963
+ "uid": "1e39a3f5a88cfc07283fa68e056fdf60",
964
+ "sources": [
965
+ {
966
+ "type": "table",
967
+ "name": "members_JoinRequest"
968
+ }
969
+ ],
970
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
971
+ "parameters": {
972
+ "properties": [
973
+ [
974
+ "to"
975
+ ],
976
+ [
977
+ "listType"
978
+ ]
979
+ ],
980
+ "table": "members_JoinRequest"
981
+ }
982
+ },
983
+ "members_JoinRequest_sentJoinRequestsByType": {
984
+ "uid": "a4ada1df44c4bde808ae142cb94586e3",
985
+ "sources": [
986
+ {
987
+ "type": "table",
988
+ "name": "members_JoinRequest"
989
+ }
990
+ ],
991
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
992
+ "parameters": {
993
+ "properties": [
994
+ [
995
+ "from"
996
+ ],
997
+ [
998
+ "listType"
999
+ ]
1000
+ ],
1001
+ "table": "members_JoinRequest"
1002
+ }
1003
+ },
1004
+ "members_JoinRequest_sentJoinRequestsByTypeList": {
1005
+ "uid": "c3c82435a84c683e8ce44a0529150234",
1006
+ "sources": [
1007
+ {
1008
+ "type": "table",
1009
+ "name": "members_JoinRequest"
1010
+ }
1011
+ ],
1012
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1013
+ "parameters": {
1014
+ "properties": [
1015
+ [
1016
+ "from"
1017
+ ],
1018
+ [
1019
+ "listType"
1020
+ ],
1021
+ [
1022
+ "list"
1023
+ ]
1024
+ ],
1025
+ "table": "members_JoinRequest"
1026
+ }
1027
+ },
1028
+ "members_JoinRequest_listJoinRequests": {
1029
+ "uid": "b0c1a14faac1bbcd14370b4e991fd73c",
1030
+ "sources": [
1031
+ {
1032
+ "type": "table",
1033
+ "name": "members_JoinRequest"
1034
+ }
1035
+ ],
1036
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1037
+ "parameters": {
1038
+ "properties": [
1039
+ [
1040
+ "listType"
1041
+ ],
1042
+ [
1043
+ "list"
1044
+ ]
1045
+ ],
1046
+ "table": "members_JoinRequest"
1047
+ }
1048
+ },
1049
+ "members_JoinRequest_joinRequest": {
1050
+ "uid": "4c71b599615897f3f6fa8dc6f38fa713",
1051
+ "sources": [
1052
+ {
1053
+ "type": "table",
1054
+ "name": "members_JoinRequest"
1055
+ }
1056
+ ],
1057
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1058
+ "parameters": {
1059
+ "properties": [
1060
+ [
1061
+ "to"
1062
+ ],
1063
+ [
1064
+ "listType"
1065
+ ],
1066
+ [
1067
+ "list"
1068
+ ]
1069
+ ],
1070
+ "table": "members_JoinRequest"
1071
+ }
1072
+ },
1073
+ "members_EmailInvitation_sentInvitations": {
1074
+ "uid": "f82f3e866d94b426061f80e643431a83",
1075
+ "sources": [
1076
+ {
1077
+ "type": "table",
1078
+ "name": "members_EmailInvitation"
1079
+ }
1080
+ ],
1081
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1082
+ "parameters": {
1083
+ "properties": [
1084
+ [
1085
+ "from"
1086
+ ]
1087
+ ],
1088
+ "table": "members_EmailInvitation"
1089
+ }
1090
+ },
1091
+ "members_EmailInvitation_sentInvitationsByType": {
1092
+ "uid": "db9a8db72c3248bd824a896fed511272",
1093
+ "sources": [
1094
+ {
1095
+ "type": "table",
1096
+ "name": "members_EmailInvitation"
1097
+ }
1098
+ ],
1099
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1100
+ "parameters": {
1101
+ "properties": [
1102
+ [
1103
+ "from"
1104
+ ],
1105
+ [
1106
+ "listType"
1107
+ ]
1108
+ ],
1109
+ "table": "members_EmailInvitation"
1110
+ }
1111
+ },
1112
+ "members_EmailInvitation_invitationByCode": {
1113
+ "uid": "a2c99a4e8003e426315d24b79c5e257e",
1114
+ "sources": [
1115
+ {
1116
+ "type": "table",
1117
+ "name": "members_EmailInvitation"
1118
+ }
1119
+ ],
1120
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1121
+ "parameters": {
1122
+ "properties": [
1123
+ [
1124
+ "code"
1125
+ ]
1126
+ ],
1127
+ "table": "members_EmailInvitation"
1128
+ }
1129
+ },
1130
+ "members_EmailInvitation_invitationsByEmail": {
1131
+ "uid": "35b736c56ade0c19fef3ec0313cacd77",
1132
+ "sources": [
1133
+ {
1134
+ "type": "table",
1135
+ "name": "members_EmailInvitation"
1136
+ }
1137
+ ],
1138
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1139
+ "parameters": {
1140
+ "properties": [
1141
+ [
1142
+ "email"
1143
+ ]
1144
+ ],
1145
+ "table": "members_EmailInvitation"
1146
+ }
1147
+ },
1148
+ "members_EmailInvitation_listInvitations": {
1149
+ "uid": "a234c91c783526c7172a56cc8fec9c33",
1150
+ "sources": [
1151
+ {
1152
+ "type": "table",
1153
+ "name": "members_EmailInvitation"
1154
+ }
1155
+ ],
1156
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1157
+ "parameters": {
1158
+ "properties": [
1159
+ [
1160
+ "listType"
1161
+ ],
1162
+ [
1163
+ "list"
1164
+ ]
1165
+ ],
1166
+ "table": "members_EmailInvitation"
1167
+ }
1168
+ },
1169
+ "members_EmailInvitation_emailInvitation": {
1170
+ "uid": "299114e84caaa9a2d4b04d62c31dda50",
1171
+ "sources": [
1172
+ {
1173
+ "type": "table",
1174
+ "name": "members_EmailInvitation"
1175
+ }
1176
+ ],
1177
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1178
+ "parameters": {
1179
+ "properties": [
1180
+ [
1181
+ "email"
1182
+ ],
1183
+ [
1184
+ "listType"
1185
+ ],
1186
+ [
1187
+ "list"
1188
+ ]
1189
+ ],
1190
+ "table": "members_EmailInvitation"
1191
+ }
1192
+ },
1193
+ "partials_Partial_byName": {
1194
+ "uid": "fe3c7d55237b9766aad7a30fdc37a725",
1195
+ "sources": [
1196
+ {
1197
+ "type": "table",
1198
+ "name": "partials_Partial"
1199
+ }
1200
+ ],
1201
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1202
+ "parameters": {
1203
+ "properties": [
1204
+ [
1205
+ "name"
1206
+ ]
1207
+ ],
1208
+ "table": "partials_Partial"
1209
+ }
1210
+ },
1211
+ "accessControl_SessionAccessOnline_byAccess": {
1212
+ "uid": "301b2a27dc3a454a6f6289de3b3dd64d",
1213
+ "sources": [
1214
+ {
1215
+ "type": "table",
1216
+ "name": "accessControl_SessionAccessOnline"
1217
+ }
1218
+ ],
1219
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1220
+ "parameters": {
1221
+ "properties": [
1222
+ [
1223
+ "access"
1224
+ ]
1225
+ ],
1226
+ "table": "accessControl_SessionAccessOnline"
1227
+ }
1228
+ },
1229
+ "accessControl_SessionAccessOnline_byPublicInfo": {
1230
+ "uid": "874d8a9cda81eb9d1d0ffa1ef974a59d",
1231
+ "sources": [
1232
+ {
1233
+ "type": "table",
1234
+ "name": "accessControl_SessionAccessOnline"
1235
+ }
1236
+ ],
1237
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1238
+ "parameters": {
1239
+ "properties": [
1240
+ [
1241
+ "publicInfo"
1242
+ ]
1243
+ ],
1244
+ "table": "accessControl_SessionAccessOnline"
1245
+ }
1246
+ },
1247
+ "accessControl_SessionAccessOnline_byPublicInfoAccess": {
1248
+ "uid": "9c9a11a3c9345995a31f1fa6458d36a4",
1249
+ "sources": [
1250
+ {
1251
+ "type": "table",
1252
+ "name": "accessControl_SessionAccessOnline"
1253
+ }
1254
+ ],
1255
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1256
+ "parameters": {
1257
+ "properties": [
1258
+ [
1259
+ "publicInfo"
1260
+ ],
1261
+ [
1262
+ "access"
1263
+ ]
1264
+ ],
1265
+ "table": "accessControl_SessionAccessOnline"
1266
+ }
1267
+ },
1268
+ "accessControl_UserAccessOnline_byAccess": {
1269
+ "uid": "0fdf21a72bb82d9294413c0aeb498c14",
1270
+ "sources": [
1271
+ {
1272
+ "type": "table",
1273
+ "name": "accessControl_UserAccessOnline"
1274
+ }
1275
+ ],
1276
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1277
+ "parameters": {
1278
+ "properties": [
1279
+ [
1280
+ "access"
1281
+ ]
1282
+ ],
1283
+ "table": "accessControl_UserAccessOnline"
1284
+ }
1285
+ },
1286
+ "accessControl_UserAccessOnline_byUser": {
1287
+ "uid": "68f6c7bf047d9d0ee920390ac3af066a",
1288
+ "sources": [
1289
+ {
1290
+ "type": "table",
1291
+ "name": "accessControl_UserAccessOnline"
1292
+ }
1293
+ ],
1294
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1295
+ "parameters": {
1296
+ "properties": [
1297
+ [
1298
+ "user"
1299
+ ]
1300
+ ],
1301
+ "table": "accessControl_UserAccessOnline"
1302
+ }
1303
+ },
1304
+ "accessControl_UserAccessOnline_byUserAccess": {
1305
+ "uid": "6039ef56f3cb3b1c3715ee805408b7e8",
1306
+ "sources": [
1307
+ {
1308
+ "type": "table",
1309
+ "name": "accessControl_UserAccessOnline"
1310
+ }
1311
+ ],
1312
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1313
+ "parameters": {
1314
+ "properties": [
1315
+ [
1316
+ "user"
1317
+ ],
1318
+ [
1319
+ "access"
1320
+ ]
1321
+ ],
1322
+ "table": "accessControl_UserAccessOnline"
1323
+ }
1324
+ },
1325
+ "messages_Message_byToTypeIdTimestamp": {
1326
+ "uid": "04ba4e4ce8013a6c340a9fb86b582098",
1327
+ "sources": [
1328
+ {
1329
+ "type": "table",
1330
+ "name": "messages_Message"
1331
+ }
1332
+ ],
1333
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1334
+ "parameters": {
1335
+ "properties": [
1336
+ [
1337
+ "toType"
1338
+ ],
1339
+ [
1340
+ "toId"
1341
+ ],
1342
+ [
1343
+ "timestamp"
1344
+ ]
1345
+ ],
1346
+ "table": "messages_Message"
1347
+ }
1348
+ },
1349
+ "readHistory_ReadHistory_userReadHistory": {
1350
+ "uid": "1003ac8390f6fa8abdc01cc9e274acc9",
1351
+ "sources": [
1352
+ {
1353
+ "type": "table",
1354
+ "name": "readHistory_ReadHistory"
1355
+ }
1356
+ ],
1357
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1358
+ "parameters": {
1359
+ "properties": [
1360
+ [
1361
+ "user"
1362
+ ],
1363
+ [
1364
+ "toType"
1365
+ ],
1366
+ [
1367
+ "toId"
1368
+ ]
1369
+ ],
1370
+ "table": "readHistory_ReadHistory"
1371
+ }
1372
+ },
1373
+ "messages_PrivateConversation_byUserUser": {
1374
+ "uid": "c1986acb0fab172b943fdba4e1194613",
1375
+ "sources": [
1376
+ {
1377
+ "type": "table",
1378
+ "name": "messages_PrivateConversation"
1379
+ }
1380
+ ],
1381
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1382
+ "parameters": {
1383
+ "properties": [
1384
+ [
1385
+ "user1"
1386
+ ],
1387
+ [
1388
+ "user2"
1389
+ ]
1390
+ ],
1391
+ "table": "messages_PrivateConversation"
1392
+ }
1393
+ },
1394
+ "messages_PrivateConversation_bySessionSession": {
1395
+ "uid": "835ef6f856f72a460f660fbec4a7cb69",
1396
+ "sources": [
1397
+ {
1398
+ "type": "table",
1399
+ "name": "messages_PrivateConversation"
1400
+ }
1401
+ ],
1402
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1403
+ "parameters": {
1404
+ "properties": [
1405
+ [
1406
+ "session1"
1407
+ ],
1408
+ [
1409
+ "session2"
1410
+ ]
1411
+ ],
1412
+ "table": "messages_PrivateConversation"
1413
+ }
1414
+ },
1415
+ "readHistory_ReadHistory_sessionReadHistory": {
1416
+ "uid": "c79e05cd7d7a00c77a9d2acfa44ea25f",
1417
+ "sources": [
1418
+ {
1419
+ "type": "table",
1420
+ "name": "readHistory_ReadHistory"
1421
+ }
1422
+ ],
1423
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1424
+ "parameters": {
1425
+ "properties": [
1426
+ [
1427
+ "publicSessionInfo"
1428
+ ],
1429
+ [
1430
+ "toType"
1431
+ ],
1432
+ [
1433
+ "toId"
1434
+ ]
1435
+ ],
1436
+ "table": "readHistory_ReadHistory"
1437
+ }
1438
+ },
1439
+ "messages_PrivateConversation_byUserSession": {
1440
+ "uid": "8b83fd7d470e113d77d762d28127d3a0",
1441
+ "sources": [
1442
+ {
1443
+ "type": "table",
1444
+ "name": "messages_PrivateConversation"
1445
+ }
1446
+ ],
1447
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1448
+ "parameters": {
1449
+ "properties": [
1450
+ [
1451
+ "user1"
1452
+ ],
1453
+ [
1454
+ "session2"
1455
+ ]
1456
+ ],
1457
+ "table": "messages_PrivateConversation"
1458
+ }
1459
+ },
1460
+ "messages_PrivateConversation_bySessionUser": {
1461
+ "uid": "1f4f1ad6967b62382e153862705679df",
1462
+ "sources": [
1463
+ {
1464
+ "type": "table",
1465
+ "name": "messages_PrivateConversation"
1466
+ }
1467
+ ],
1468
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1469
+ "parameters": {
1470
+ "properties": [
1471
+ [
1472
+ "session1"
1473
+ ],
1474
+ [
1475
+ "user2"
1476
+ ]
1477
+ ],
1478
+ "table": "messages_PrivateConversation"
1479
+ }
1480
+ },
1481
+ "readHistory_ReadHistory_readHistories": {
1482
+ "uid": "31eb8bfd114df21f3ee71fac00b2b788",
1483
+ "sources": [
1484
+ {
1485
+ "type": "table",
1486
+ "name": "readHistory_ReadHistory"
1487
+ }
1488
+ ],
1489
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1490
+ "parameters": {
1491
+ "properties": [
1492
+ [
1493
+ "toType"
1494
+ ],
1495
+ [
1496
+ "toId"
1497
+ ]
1498
+ ],
1499
+ "table": "readHistory_ReadHistory"
1500
+ }
1501
+ },
1502
+ "timer_Timer_timestamp": {
1503
+ "uid": "c2c7badb698af5eea7365f20db865134",
1504
+ "sources": [
1505
+ {
1506
+ "type": "table",
1507
+ "name": "timer_Timer"
1508
+ }
1509
+ ],
1510
+ "code": "(async function(input, output) {\n const mapper = (obj) => ({ id: (''+obj.timestamp).padStart(16, '0') + '_' + obj.id, to: obj.id })\n await input.table('timer_Timer').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1511
+ "parameters": {}
1512
+ },
1513
+ "accessControl_SessionAccessOnline_online": {
1514
+ "uid": "5e124e01cc7639bacf81cacc9bfc6ecc",
1515
+ "sources": [
1516
+ {
1517
+ "type": "table",
1518
+ "name": "accessControl_SessionAccessOnline"
1519
+ }
1520
+ ],
1521
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.online &&\n ({ id: obj.id, to: obj.id, publicInfo: obj.publicInfo })\n await input.table('accessControl_SessionAccessOnline').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1522
+ "parameters": {}
1523
+ },
1524
+ "accessControl_UserAccessOnline_online": {
1525
+ "uid": "24942749dd48ae715b98650c7c9389ea",
1526
+ "sources": [
1527
+ {
1528
+ "type": "table",
1529
+ "name": "accessControl_UserAccessOnline"
1530
+ }
1531
+ ],
1532
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.online &&\n ({ id: obj.id, to: obj.id, user: obj.user })\n await input.table('accessControl_UserAccessOnline').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1533
+ "parameters": {}
1534
+ },
1535
+ "xmlSearch_Search_notDeletedByTimestamp": {
1536
+ "uid": "bab2ca61833ccca5de93708bf653d519",
1537
+ "sources": [
1538
+ {
1539
+ "type": "table",
1540
+ "name": "xmlSearch_Search"
1541
+ }
1542
+ ],
1543
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.timestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1544
+ "parameters": {}
1545
+ },
1546
+ "partials_Partial_dataByName": {
1547
+ "uid": "77e6f378dcc59b9b38d08418ad459206",
1548
+ "sources": [
1549
+ {
1550
+ "type": "table",
1551
+ "name": "partials_Partial"
1552
+ }
1553
+ ],
1554
+ "code": "(async (input, output, { }) => {\n const mapper = (obj) => ({ id: obj.name, data: obj.data })\n await input.table(\"partials_Partial\").onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1555
+ "parameters": {}
1556
+ },
1557
+ "users_User_online": {
1558
+ "uid": "3d4a5745b861c2486edf4f9c681a4faf",
1559
+ "sources": [
1560
+ {
1561
+ "type": "table",
1562
+ "name": "users_User"
1563
+ }
1564
+ ],
1565
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.online &&\n ({ id: `${obj.id}`, to: obj.id })\n await input.table('users_User').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1566
+ "parameters": {}
1567
+ },
1568
+ "notifications_Notification_userNotifications": {
1569
+ "uid": "145a97166226f21e1e79e4aa0d8b66bd",
1570
+ "sources": [
1571
+ {
1572
+ "type": "table",
1573
+ "name": "notifications_Notification"
1574
+ }
1575
+ ],
1576
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1577
+ "parameters": {
1578
+ "properties": [
1579
+ [
1580
+ "user"
1581
+ ],
1582
+ [
1583
+ "time"
1584
+ ]
1585
+ ],
1586
+ "table": "notifications_Notification"
1587
+ }
1588
+ },
1589
+ "notifications_Notification_userNotificationsByEmailState": {
1590
+ "uid": "baa8b10027514acf3ae9cdfea2147e4e",
1591
+ "sources": [
1592
+ {
1593
+ "type": "table",
1594
+ "name": "notifications_Notification"
1595
+ }
1596
+ ],
1597
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1598
+ "parameters": {
1599
+ "properties": [
1600
+ [
1601
+ "user"
1602
+ ],
1603
+ [
1604
+ "emailState"
1605
+ ]
1606
+ ],
1607
+ "table": "notifications_Notification"
1608
+ }
1609
+ },
1610
+ "notifications_Notification_sessionNotifications": {
1611
+ "uid": "e3c4ca1b7c9a0a4dbbf797e46eaf0c09",
1612
+ "sources": [
1613
+ {
1614
+ "type": "table",
1615
+ "name": "notifications_Notification"
1616
+ }
1617
+ ],
1618
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1619
+ "parameters": {
1620
+ "properties": [
1621
+ [
1622
+ "session"
1623
+ ],
1624
+ [
1625
+ "time"
1626
+ ]
1627
+ ],
1628
+ "table": "notifications_Notification"
1629
+ }
1630
+ },
1631
+ "notifications_Notification_sessionNotificationsByReadState": {
1632
+ "uid": "64cdd72d32e8b249ffa633541584e065",
1633
+ "sources": [
1634
+ {
1635
+ "type": "table",
1636
+ "name": "notifications_Notification"
1637
+ }
1638
+ ],
1639
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1640
+ "parameters": {
1641
+ "properties": [
1642
+ [
1643
+ "session"
1644
+ ],
1645
+ [
1646
+ "readState"
1647
+ ]
1648
+ ],
1649
+ "table": "notifications_Notification"
1650
+ }
1651
+ },
1652
+ "peerConnection_Peer_byChannel": {
1653
+ "uid": "79174d1939b3149803bca7ff9399b409",
1654
+ "sources": [
1655
+ {
1656
+ "type": "table",
1657
+ "name": "peerConnection_Peer"
1658
+ }
1659
+ ],
1660
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1661
+ "parameters": {
1662
+ "properties": [
1663
+ [
1664
+ "toType"
1665
+ ],
1666
+ [
1667
+ "toId"
1668
+ ]
1669
+ ],
1670
+ "table": "peerConnection_Peer"
1671
+ }
1672
+ },
1673
+ "peerConnection_Peer_byChannelInstance": {
1674
+ "uid": "c795688b678eec577fd755cf136756e5",
1675
+ "sources": [
1676
+ {
1677
+ "type": "table",
1678
+ "name": "peerConnection_Peer"
1679
+ }
1680
+ ],
1681
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1682
+ "parameters": {
1683
+ "properties": [
1684
+ [
1685
+ "toType"
1686
+ ],
1687
+ [
1688
+ "toId"
1689
+ ],
1690
+ [
1691
+ "instance"
1692
+ ]
1693
+ ],
1694
+ "table": "peerConnection_Peer"
1695
+ }
1696
+ },
1697
+ "xmlAlert_Scan_byScannerTs": {
1698
+ "uid": "5d37ade02a82227a5c576b0e428ccbb4",
1699
+ "sources": [
1700
+ {
1701
+ "type": "table",
1702
+ "name": "xmlAlert_Scan"
1703
+ }
1704
+ ],
1705
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1706
+ "parameters": {
1707
+ "properties": [
1708
+ [
1709
+ "scanner"
1710
+ ],
1711
+ [
1712
+ "timestamp"
1713
+ ]
1714
+ ],
1715
+ "table": "xmlAlert_Scan"
1716
+ }
1717
+ },
1718
+ "xmlAlert_Scan_byScanner": {
1719
+ "uid": "4b031a0e0dc213c44a3ad653c10290be",
1720
+ "sources": [
1721
+ {
1722
+ "type": "table",
1723
+ "name": "xmlAlert_Scan"
1724
+ }
1725
+ ],
1726
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1727
+ "parameters": {
1728
+ "properties": [
1729
+ [
1730
+ "scanner"
1731
+ ]
1732
+ ],
1733
+ "table": "xmlAlert_Scan"
1734
+ }
1735
+ },
1736
+ "xmlAlert_Scanner_byUser": {
1737
+ "uid": "cdb3bff29ad30b10081b15e4c4f54416",
1738
+ "sources": [
1739
+ {
1740
+ "type": "table",
1741
+ "name": "xmlAlert_Scanner"
1742
+ }
1743
+ ],
1744
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1745
+ "parameters": {
1746
+ "properties": [
1747
+ [
1748
+ "user"
1749
+ ],
1750
+ [
1751
+ "timestamp"
1752
+ ]
1753
+ ],
1754
+ "table": "xmlAlert_Scanner"
1755
+ }
1756
+ },
1757
+ "xmlAlert_Result_byScan": {
1758
+ "uid": "83e32f7af0e53682dbcf97055742eb16",
1759
+ "sources": [
1760
+ {
1761
+ "type": "table",
1762
+ "name": "xmlAlert_Result"
1763
+ }
1764
+ ],
1765
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1766
+ "parameters": {
1767
+ "properties": [
1768
+ [
1769
+ "scan"
1770
+ ]
1771
+ ],
1772
+ "table": "xmlAlert_Result"
1773
+ }
1774
+ },
1775
+ "xmlAlert_Result_bySeverityStageItemField": {
1776
+ "uid": "3dfa163f7abb5762c66fdc800585f8b6",
1777
+ "sources": [
1778
+ {
1779
+ "type": "table",
1780
+ "name": "xmlAlert_Result"
1781
+ }
1782
+ ],
1783
+ "code": "(async function(input, output) {\n function mapper(obj) {\n if(!obj) return obj\n const severity = `${['fatal', 'error', 'warning', 'notice'].indexOf(obj.severity)}.${obj.severity}`\n const s = v => JSON.stringify(v)\n return {\n id: `${s(obj.scan)}:${s(severity)}_${obj.id}`,\n to: obj.id\n }\n }\n await input.table('xmlAlert_Result').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1784
+ "parameters": {}
1785
+ },
1786
+ "blog_Post_categoryPostsWithDate": {
1787
+ "uid": "73160000004000054000",
1788
+ "sources": [
1789
+ {
1790
+ "type": "table",
1791
+ "name": "blog_Post"
1792
+ }
1793
+ ],
1794
+ "code": "(async (input, output, { table }) => {\n await input.table(\"blog_Post\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n let pointers = new Set(obj.category\n && obj.category.map(p => JSON.stringify(p)+':'+JSON.stringify(obj.date)))\n let oldPointers = new Set(oldObj.category\n && oldObj.category.map(p => JSON.stringify(p)+':'+JSON.stringify(oldObj.date)))\n output.debug(\"CATEGORY POINTERS\", pointers)\n output.debug(\"OLD CATEGORY POINTERS\", oldPointers)\n for(let pointer of pointers) {\n if(!oldPointers.has(pointer)) {\n output.debug(\"ADD NEW POINTER\", pointers)\n output.change(\n { id: pointer+'_'+obj.id, to: obj.id }, null)\n } else {\n output.debug(\"IGNORE NEW POINTER\", pointers)\n }\n }\n for(let pointer of oldPointers) {\n if(!pointers.has(pointer)) {\n output.change(\n null, { id: pointer+'_'+obj.id, to: obj.id })\n }\n }\n } else if(obj) {\n obj.category && obj.category.forEach(p => output.change(\n { id: JSON.stringify(p)+':'+JSON.stringify(obj.date)+'_'+obj.id, to: obj.id }, null))\n } else if(oldObj) {\n oldObj.category && oldObj.category.forEach(p => output.change(\n null, { id: JSON.stringify(p)+':'+JSON.stringify(oldObj.date)+'_'+oldObj.id, to: oldObj.id }))\n }\n })\n })",
1795
+ "parameters": {}
1796
+ },
1797
+ "blog_Post_tagPostsWithDate": {
1798
+ "uid": "000055425354000000089",
1799
+ "sources": [
1800
+ {
1801
+ "type": "table",
1802
+ "name": "blog_Post"
1803
+ }
1804
+ ],
1805
+ "code": "(async (input, output, { table }) => {\n await input.table(\"blog_Post\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n let pointers = new Set(obj.tags\n && obj.tags.map(p => JSON.stringify(p)+':'+JSON.stringify(obj.date)))\n let oldPointers = new Set(oldObj.tags &&\n oldObj.tags.map(p => JSON.stringify(p)+':'+JSON.stringify(oldObj.date)))\n for(let pointer of pointers) {\n if(!oldPointers.has(pointer)) output.change(\n { id: pointer+'_'+obj.id, to: obj.id }, null)\n }\n for(let pointer of oldPointers) {\n if(!pointers.has(pointer)) output.change(\n null, { id: pointer+'_'+obj.id, to: obj.id })\n }\n } else if(obj) {\n obj.tags && obj.tags.forEach(p => output.change(\n { id: JSON.stringify(p)+':'+JSON.stringify(obj.date)+'_'+obj.id, to: obj.id }, null))\n } else if(oldObj) {\n oldObj.tags && oldObj.tags.forEach(p => output.change(\n null, { id: JSON.stringify(p)+':'+JSON.stringify(oldObj.date)+'_'+oldObj.id, to: oldObj.id }))\n }\n })\n })",
1806
+ "parameters": {}
1807
+ },
1808
+ "blog_Post_listPostsWithDate": {
1809
+ "uid": "0075000710333305220660",
1810
+ "sources": [
1811
+ {
1812
+ "type": "table",
1813
+ "name": "blog_Post"
1814
+ }
1815
+ ],
1816
+ "code": "(async (input, output, { table }) => {\n await input.table(\"blog_Post\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n let pointers = obj && new Set(obj.lists\n && obj.lists.map(p => JSON.stringify(p) + ':' + JSON.stringify(obj.date)))\n let oldPointers = oldObj && new Set(oldObj.lists\n && oldObj.lists.map(p => JSON.stringify(p) + ':' + JSON.stringify(oldObj.date)))\n for(let pointer of pointers) {\n if(!oldPointers.has(pointer)) output.change(\n { id: pointer + '_' + obj.id, to: obj.id }, null)\n }\n for(let pointer of oldPointers) {\n if(!pointers.has(pointer)) output.change(\n null, { id: pointer + '_' + obj.id, to: obj.id })\n }\n } else if(obj) {\n obj.lists && obj.lists.forEach(p => output.change(\n { id: JSON.stringify(p) + ':' + JSON.stringify(obj.date) + '_' + obj.id, to: obj.id }, null))\n } else if(oldObj) {\n oldObj.lists && oldObj.lists.forEach(p => output.change(\n null, { id: JSON.stringify(p) + ':' + JSON.stringify(oldObj.date) + '_' + oldObj.id, to: oldObj.id }))\n }\n })\n })",
1817
+ "parameters": {}
1818
+ },
1819
+ "commands_new": {
1820
+ "uid": "016000000000420000",
1821
+ "sources": [
1822
+ {
1823
+ "type": "table",
1824
+ "name": "commands"
1825
+ }
1826
+ ],
1827
+ "code": "(async function(input, output, { tableName }) {\n await input.table(tableName).onChange((obj, oldObj) =>\n output.change(\n obj && obj.state == 'new' ? { ...obj, id: obj.service+'_'+obj.id } : null,\n oldObj && oldObj.state == 'new' ? { ...oldObj, id: oldObj.service+'_'+oldObj.id } : null\n )\n )\n })",
1828
+ "parameters": {
1829
+ "tableName": "commands"
1830
+ }
1831
+ },
1832
+ "xmlAlert_Scan_notDone": {
1833
+ "uid": "0000110000869400000",
1834
+ "sources": [
1835
+ {
1836
+ "type": "table",
1837
+ "name": "xmlAlert_Scan"
1838
+ }
1839
+ ],
1840
+ "code": "(async function(input, output) {\n const tryChange = (obj, oldObj) => (obj || oldObj) && output.change(obj, oldObj)\n const mapper =\n (obj) => obj.state != 'done' && obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.timestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlAlert_Scan').onChange(\n (obj, oldObj) => tryChange(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1841
+ "parameters": {}
1842
+ },
1843
+ "xmlAlert_Scan_doneByTimestamp": {
1844
+ "uid": "000000130490613047890",
1845
+ "sources": [
1846
+ {
1847
+ "type": "table",
1848
+ "name": "xmlAlert_Scan"
1849
+ }
1850
+ ],
1851
+ "code": "(async function(input, output) {\n const tryChange = (obj, oldObj) => (obj || oldObj) && output.change(obj, oldObj)\n const mapper =\n (obj) => obj.state == 'done' && obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.finishedTimestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlAlert_Scan').onChange(\n (obj, oldObj) => tryChange(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1852
+ "parameters": {}
1853
+ },
1854
+ "xmlAlert_Scan_notDeletedByTimestamp": {
1855
+ "uid": "00770958122062121159730110",
1856
+ "sources": [
1857
+ {
1858
+ "type": "table",
1859
+ "name": "xmlAlert_Scan"
1860
+ }
1861
+ ],
1862
+ "code": "(async function(input, output) {\n const tryChange = (obj, oldObj) => (obj || oldObj) && output.change(obj, oldObj)\n const mapper =\n (obj) => obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.finishedTimestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlAlert_Scan').onChange(\n (obj, oldObj) => tryChange(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1863
+ "parameters": {}
1864
+ },
1865
+ "xmlAlert_Result_bySeverityCount": {
1866
+ "uid": "0971109909483730430000",
1867
+ "sources": [
1868
+ {
1869
+ "type": "table",
1870
+ "name": "xmlAlert_Result"
1871
+ }
1872
+ ],
1873
+ "code": "(async function(input, output) {\n await input.table('xmlAlert_Result').onChange(\n (obj, oldObj, id, ts) => {\n const oldSeverity = oldObj && oldObj.severity\n const severity = obj && obj.severity\n if(severity != oldSeverity) {\n if(oldSeverity) output.update(`${oldObj.scan}_${oldSeverity}`, [\n { op: \"conditional\",\n conditions: [\n { test: 'lt', property: 'lastUpdate', value: ts }\n ],\n operations: [\n { op: 'add', property: 'count', value: -1 }\n ]\n }\n ])\n if(severity) output.update(`${obj.scan}_${severity}`, [\n { op: \"conditional\",\n conditions: [\n { test: 'notExist', property: 'count' }\n ],\n operations: [\n { op: 'set', property: 'count', value: 1 },\n { op: 'set', property: 'lastUpdate', value: ts }\n ]\n },\n { op: \"conditional\",\n conditions: [\n { test: 'lt', property: 'lastUpdate', value: ts }\n ],\n operations: [\n { op: 'add', property: 'count', value: 1 }\n ]\n },\n { op: 'merge', value: { severity: obj.severity, scan: obj.scan, lastUpdate: ts } },\n ])\n }\n }\n )\n })",
1874
+ "parameters": {}
1875
+ },
1876
+ "xmlAlert_Result_byItemSeverity": {
1877
+ "uid": "3900066007000458986000",
1878
+ "sources": [
1879
+ {
1880
+ "type": "table",
1881
+ "name": "xmlAlert_Result"
1882
+ }
1883
+ ],
1884
+ "code": "(async function(input, output) {\n function mapper(obj) {\n if(!obj) return obj\n const severity = `${['fatal', 'error', 'warning', 'notice'].indexOf(obj.severity)}.${obj.severity}`\n const s = v => JSON.stringify(v)\n return {\n id: `${s(obj.scan)}:${obj.id.split('_')[2]}:${s(severity)}_${obj.id}`,\n to: obj.id\n }\n }\n await input.table('xmlAlert_Result').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1885
+ "parameters": {}
1886
+ },
1887
+ "notifications_Notification_bySeverityCount": {
1888
+ "uid": "00012000088650000069",
1889
+ "sources": [
1890
+ {
1891
+ "type": "table",
1892
+ "name": "xmlAlert_Result"
1893
+ }
1894
+ ],
1895
+ "code": "(async function(input, output) {\n await input.table('xmlAlert_Result').onChange(\n (obj, oldObj, id, ts) => {\n const oldSeverity = oldObj && oldObj.severity\n const severity = obj && obj.severity\n if(severity != oldSeverity) {\n if(oldSeverity) output.update(`${oldObj.scan}_${oldSeverity}`, [\n { op: \"conditional\",\n conditions: [\n { test: 'lt', property: 'lastUpdate', value: ts }\n ],\n operations: [\n { op: 'add', property: 'count', value: -1 }\n ]\n }\n ])\n if(severity) output.update(`${obj.scan}_${severity}`, [\n { op: \"conditional\",\n conditions: [\n { test: 'notExist', property: 'count' }\n ],\n operations: [\n { op: 'set', property: 'count', value: 1 },\n { op: 'set', property: 'lastUpdate', value: ts }\n ]\n },\n { op: \"conditional\",\n conditions: [\n { test: 'lt', property: 'lastUpdate', value: ts }\n ],\n operations: [\n { op: 'add', property: 'count', value: 1 }\n ]\n },\n { op: 'merge', value: { severity: obj.severity, scan: obj.scan, lastUpdate: ts } },\n ])\n }\n }\n )\n })",
1896
+ "parameters": {}
1897
+ },
1898
+ "notifications_Notification_userUnreadNotifications": {
1899
+ "uid": "69000005900000204000",
1900
+ "sources": [
1901
+ {
1902
+ "type": "table",
1903
+ "name": "notifications_Notification"
1904
+ }
1905
+ ],
1906
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj && obj.readState == 'new' && obj.user &&\n ({ id: `${obj.user}_${obj.id}`, user: obj.user, to: obj.id })\n await input.table('notifications_Notification').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1907
+ "parameters": {}
1908
+ },
1909
+ "notifications_Notification_sessionUnreadNotifications": {
1910
+ "uid": "02501340000780009300",
1911
+ "sources": [
1912
+ {
1913
+ "type": "table",
1914
+ "name": "notifications_Notification"
1915
+ }
1916
+ ],
1917
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.readState == 'new' && obj.session &&\n ({ id: `${obj.session}_${obj.id}`, session: obj.session, to: obj.id })\n await input.table('notifications_Notification').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1918
+ "parameters": {}
1919
+ },
1920
+ "readHistory_ReadHistory_userUnreadHistories": {
1921
+ "uid": "257139300000000470000",
1922
+ "sources": [
1923
+ {
1924
+ "type": "table",
1925
+ "name": "readHistory_ReadHistory"
1926
+ }
1927
+ ],
1928
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj && ((obj.read||'') < (obj.last||'')) && obj.user &&\n ({ id: `${obj.user}_${obj.toType}_${obj.toId}`, user: obj.user, to: obj.id })\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1929
+ "parameters": {}
1930
+ },
1931
+ "readHistory_ReadHistory_sessionUnreadHistories": {
1932
+ "uid": "0005907037082006007001",
1933
+ "sources": [
1934
+ {
1935
+ "type": "table",
1936
+ "name": "readHistory_ReadHistory"
1937
+ }
1938
+ ],
1939
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj && ((obj.read||'') < (obj.last||'')) && obj.publicSessionInfo &&\n ({ id: `${obj.publicSessionInfo}_${obj.toType}_${obj.toId}`, publicSessionInfo: obj.publicSessionInfo, to: obj.id })\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1940
+ "parameters": {}
1941
+ },
1942
+ "readHistory_ReadHistory_userUnreadHistoriesByType": {
1943
+ "uid": "0832100046006607100012",
1944
+ "sources": [
1945
+ {
1946
+ "type": "table",
1947
+ "name": "readHistory_ReadHistory"
1948
+ }
1949
+ ],
1950
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj && ((obj.read||'') < (obj.last||'')) && obj.user &&\n ({ id: `${obj.user}_${obj.toType}_${obj.toId}`,\n user: obj.user, toType: obj.toType, toId: obj.toId })\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1951
+ "parameters": {}
1952
+ },
1953
+ "readHistory_ReadHistory_sessionUnreadHistoriesByType": {
1954
+ "uid": "8510078000000006430",
1955
+ "sources": [
1956
+ {
1957
+ "type": "table",
1958
+ "name": "readHistory_ReadHistory"
1959
+ }
1960
+ ],
1961
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj && ((obj.read||'') < (obj.last||'')) && obj.publicSessionInfo &&\n ({ id: `${obj.publicSessionInfo}_${obj.toType}_${obj.toId}`,\n publicSessionInfo: obj.publicSessionInfo, toType: obj.toType, toId: obj.toId })\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
1962
+ "parameters": {}
1963
+ },
1964
+ "readHistory_ReadHistory_sessionReadHistories": {
1965
+ "uid": "0370506185000000000",
1966
+ "sources": [
1967
+ {
1968
+ "type": "table",
1969
+ "name": "readHistory_ReadHistory"
1970
+ }
1971
+ ],
1972
+ "code": "(async function(input, output) {\n function mapper(obj) {\n const lastTime = (obj && obj.last && obj.last.split(\"_\").pop()) || ''\n const writeTime = (obj && obj.write && obj.write.split(\"_\").pop()) || ''\n return obj && obj.publicSessionInfo && {\n id: `\"${obj.publicSessionInfo}\":\"${lastTime > writeTime ? lastTime : writeTime}\"_${obj.id}`,\n to: obj.id,\n session: obj.publicSessionInfo\n }\n }\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1973
+ "parameters": {}
1974
+ },
1975
+ "readHistory_ReadHistory_userReadHistoriesByType": {
1976
+ "uid": "019008644009500000016",
1977
+ "sources": [
1978
+ {
1979
+ "type": "table",
1980
+ "name": "readHistory_ReadHistory"
1981
+ }
1982
+ ],
1983
+ "code": "(async function(input, output) {\n function mapper(obj) {\n const lastTime = (obj && obj.last && obj.last.split(\"_\").pop()) || ''\n const writeTime = (obj && obj.write && obj.write.split(\"_\").pop()) || ''\n return obj && obj.user && {\n id: `\"${obj.user}\"_\"${obj.toType}\":\"${lastTime > writeTime ? lastTime : writeTime}\"_${obj.id}`,\n to: obj.id,\n user: obj.user,\n toType: obj.toType\n }\n }\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1984
+ "parameters": {}
1985
+ },
1986
+ "readHistory_ReadHistory_sessionReadHistoriesByType": {
1987
+ "uid": "00059000000974005142",
1988
+ "sources": [
1989
+ {
1990
+ "type": "table",
1991
+ "name": "readHistory_ReadHistory"
1992
+ }
1993
+ ],
1994
+ "code": "(async function(input, output) {\n function mapper(obj) {\n const lastTime = (obj && obj.last && obj.last.split(\"_\").pop()) || ''\n const writeTime = (obj && obj.write && obj.write.split(\"_\").pop()) || ''\n return obj && obj.publicSessionInfo && {\n id: `\"${obj.publicSessionInfo}\"_\"${obj.toType}\":\"${lastTime > writeTime ? lastTime : writeTime}\"_${obj.id}`,\n to: obj.id,\n session: obj.publicSessionInfo,\n toType: obj.toType\n }\n }\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1995
+ "parameters": {}
1996
+ },
1997
+ "xmlAlert_Scan_notDeletedByScannerTs": {
1998
+ "uid": "97061513000088090000",
1999
+ "sources": [
2000
+ {
2001
+ "type": "table",
2002
+ "name": "xmlAlert_Scan"
2003
+ }
2004
+ ],
2005
+ "code": "(async function(input, output) {\n const tryChange = (obj, oldObj) => (obj || oldObj) && output.change(obj, oldObj)\n const mapper =\n (obj) => obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.scanner)}:${JSON.stringify(obj.finishedTimestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlAlert_Scan').onChange(\n (obj, oldObj) => tryChange(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2006
+ "parameters": {}
2007
+ },
2008
+ "urlChecker_Checker_byUser": {
2009
+ "uid": "0000000950023650000",
2010
+ "sources": [
2011
+ {
2012
+ "type": "table",
2013
+ "name": "urlChecker_Checker"
2014
+ }
2015
+ ],
2016
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2017
+ "parameters": {
2018
+ "properties": [
2019
+ [
2020
+ "user"
2021
+ ],
2022
+ [
2023
+ "timestamp"
2024
+ ]
2025
+ ],
2026
+ "table": "urlChecker_Checker"
2027
+ }
2028
+ },
2029
+ "urlChecker_Check_byUrlHashTs": {
2030
+ "uid": "4688645087005374588003000",
2031
+ "sources": [
2032
+ {
2033
+ "type": "table",
2034
+ "name": "urlChecker_Check"
2035
+ }
2036
+ ],
2037
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => ({\n id: `\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\":\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('urlChecker_Check').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2038
+ "parameters": {}
2039
+ },
2040
+ "urlChecker_Check_byTs": {
2041
+ "uid": "03327400580008600000",
2042
+ "sources": [
2043
+ {
2044
+ "type": "table",
2045
+ "name": "urlChecker_Check"
2046
+ }
2047
+ ],
2048
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2049
+ "parameters": {
2050
+ "properties": [
2051
+ [
2052
+ "timestamp"
2053
+ ]
2054
+ ],
2055
+ "table": "urlChecker_Check"
2056
+ }
2057
+ },
2058
+ "xmlSearch_DataSet_byUrlHashTimestamp": {
2059
+ "uid": "006027741500001203580",
2060
+ "sources": [
2061
+ {
2062
+ "type": "table",
2063
+ "name": "xmlSearch_DataSet"
2064
+ }
2065
+ ],
2066
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_DataSet').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2067
+ "parameters": {}
2068
+ },
2069
+ "xmlSearch_DataSet_notDeletedByTimestamp": {
2070
+ "uid": "00659100001527905383870",
2071
+ "sources": [
2072
+ {
2073
+ "type": "table",
2074
+ "name": "xmlSearch_DataSet"
2075
+ }
2076
+ ],
2077
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && ({\n id: `\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_DataSet').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2078
+ "parameters": {}
2079
+ },
2080
+ "xmlSearch_DataSet_notDeletedByUrlHashTimestamp": {
2081
+ "uid": "8401100418200640879448640",
2082
+ "sources": [
2083
+ {
2084
+ "type": "table",
2085
+ "name": "xmlSearch_DataSet"
2086
+ }
2087
+ ],
2088
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && obj.url && ({\n id: `\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id })\n await input.table('xmlSearch_DataSet').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2089
+ "parameters": {}
2090
+ },
2091
+ "xmlSearch_Generator_bySession": {
2092
+ "uid": "590525408572003629078080",
2093
+ "sources": [
2094
+ {
2095
+ "type": "table",
2096
+ "name": "xmlSearch_Generator"
2097
+ }
2098
+ ],
2099
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2100
+ "parameters": {
2101
+ "properties": [
2102
+ [
2103
+ "session"
2104
+ ],
2105
+ [
2106
+ "timestamp"
2107
+ ]
2108
+ ],
2109
+ "table": "xmlSearch_Generator"
2110
+ }
2111
+ },
2112
+ "xmlSearch_Generator_byUser": {
2113
+ "uid": "005490036031000000560",
2114
+ "sources": [
2115
+ {
2116
+ "type": "table",
2117
+ "name": "xmlSearch_Generator"
2118
+ }
2119
+ ],
2120
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2121
+ "parameters": {
2122
+ "properties": [
2123
+ [
2124
+ "user"
2125
+ ],
2126
+ [
2127
+ "timestamp"
2128
+ ]
2129
+ ],
2130
+ "table": "xmlSearch_Generator"
2131
+ }
2132
+ },
2133
+ "xmlSearch_Generator_bySessionUrlHashQueryHash": {
2134
+ "uid": "0000008600093400019",
2135
+ "sources": [
2136
+ {
2137
+ "type": "table",
2138
+ "name": "xmlSearch_Generator"
2139
+ }
2140
+ ],
2141
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.session}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query)).digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Generator').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2142
+ "parameters": {}
2143
+ },
2144
+ "xmlSearch_Generator_byUserUrlHashQueryHash": {
2145
+ "uid": "01000100002600022000",
2146
+ "sources": [
2147
+ {
2148
+ "type": "table",
2149
+ "name": "xmlSearch_Generator"
2150
+ }
2151
+ ],
2152
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.user}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query)).digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Generator').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2153
+ "parameters": {}
2154
+ },
2155
+ "xmlSearch_Generator_byDataSet": {
2156
+ "uid": "5807833009541000000069",
2157
+ "sources": [
2158
+ {
2159
+ "type": "table",
2160
+ "name": "xmlSearch_Generator"
2161
+ }
2162
+ ],
2163
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2164
+ "parameters": {
2165
+ "properties": [
2166
+ [
2167
+ "dataSet"
2168
+ ]
2169
+ ],
2170
+ "table": "xmlSearch_Generator"
2171
+ }
2172
+ },
2173
+ "xmlSearch_Generator_notDeletedByTimestamp": {
2174
+ "uid": "00800029083004300590",
2175
+ "sources": [
2176
+ {
2177
+ "type": "table",
2178
+ "name": "xmlSearch_Generator"
2179
+ }
2180
+ ],
2181
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' &&\n ({ id: `${JSON.stringify(obj.timestamp)}_${obj.id}`, to: obj.id })\n await input.table('xmlSearch_Generator').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2182
+ "parameters": {}
2183
+ },
2184
+ "xmlSearch_Generator_user": {
2185
+ "uid": "5000009318980360000046",
2186
+ "sources": [
2187
+ {
2188
+ "type": "table",
2189
+ "name": "xmlSearch_Generator"
2190
+ }
2191
+ ],
2192
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2193
+ "parameters": {
2194
+ "properties": [
2195
+ [
2196
+ "user"
2197
+ ]
2198
+ ],
2199
+ "table": "xmlSearch_Generator"
2200
+ }
2201
+ },
2202
+ "xmlSearch_Generator_session": {
2203
+ "uid": "820000000640003840062",
2204
+ "sources": [
2205
+ {
2206
+ "type": "table",
2207
+ "name": "xmlSearch_Generator"
2208
+ }
2209
+ ],
2210
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2211
+ "parameters": {
2212
+ "properties": [
2213
+ [
2214
+ "session"
2215
+ ]
2216
+ ],
2217
+ "table": "xmlSearch_Generator"
2218
+ }
2219
+ },
2220
+ "xmlSearch_Generator_bySessionUrlHash": {
2221
+ "uid": "00629135602800200710041",
2222
+ "sources": [
2223
+ {
2224
+ "type": "table",
2225
+ "name": "xmlSearch_Generator"
2226
+ }
2227
+ ],
2228
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.session}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Generator').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2229
+ "parameters": {}
2230
+ },
2231
+ "xmlSearch_Generator_byUserUrlHash": {
2232
+ "uid": "001700370067530000078",
2233
+ "sources": [
2234
+ {
2235
+ "type": "table",
2236
+ "name": "xmlSearch_Generator"
2237
+ }
2238
+ ],
2239
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.user}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Generator').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2240
+ "parameters": {}
2241
+ },
2242
+ "urlChecker_Checker_byUserUrlHash": {
2243
+ "uid": "0011910002842099543162077",
2244
+ "sources": [
2245
+ {
2246
+ "type": "table",
2247
+ "name": "urlChecker_Checker"
2248
+ }
2249
+ ],
2250
+ "code": "(async function(input, output) {\n input.table('urlChecker_Checker').filter(obj => obj.url).indexBy(obj => [\n obj.user,\n hash(obj.url)\n ]).to(output)\n })",
2251
+ "parameters": {}
2252
+ },
2253
+ "facebookLogin_Login_byUser": {
2254
+ "uid": "1803220010087413002700",
2255
+ "sources": [
2256
+ {
2257
+ "type": "table",
2258
+ "name": "facebookLogin_Login"
2259
+ }
2260
+ ],
2261
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2262
+ "parameters": {
2263
+ "properties": [
2264
+ [
2265
+ "user"
2266
+ ]
2267
+ ],
2268
+ "table": "facebookLogin_Login"
2269
+ }
2270
+ },
2271
+ "emailPassword_EmailPassword_byUser": {
2272
+ "uid": "0040300007005901513000",
2273
+ "sources": [
2274
+ {
2275
+ "type": "table",
2276
+ "name": "emailPassword_EmailPassword"
2277
+ }
2278
+ ],
2279
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2280
+ "parameters": {
2281
+ "properties": [
2282
+ [
2283
+ "user"
2284
+ ]
2285
+ ],
2286
+ "table": "emailPassword_EmailPassword"
2287
+ }
2288
+ },
2289
+ "readHistory_ReadHistory_userReadHistories": {
2290
+ "uid": "0383159544000075000080",
2291
+ "sources": [
2292
+ {
2293
+ "type": "table",
2294
+ "name": "readHistory_ReadHistory"
2295
+ }
2296
+ ],
2297
+ "code": "(async function(input, output) {\n function mapper(obj) {\n const lastTime = (obj && obj.last && obj.last.split(\"_\").pop()) || ''\n const writeTime = (obj && obj.write && obj.write.split(\"_\").pop()) || ''\n if(obj && obj.user && typeof obj.user != 'string') {\n output.debug('TABLE readHistory_ReadHistory ', obj.id, 'user', JSON.stringify(obj))\n throw new Error(\"USER IS NOT STRING in \"+obj.id+\" TYPE \", typeof (obj.user),\n \" OBJ \"+ JSON.stringify(obj))\n }\n return obj && obj.user && {\n id: `\"${obj.user}\":\"${lastTime > writeTime ? lastTime : writeTime}\"_${obj.id}`,\n to: obj.id,\n user: obj.user\n }\n }\n await input.table('readHistory_ReadHistory').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
2298
+ "parameters": {}
2299
+ },
2300
+ "googleLogin_Login_byUser": {
2301
+ "uid": "3901885005176034505796100",
2302
+ "sources": [
2303
+ {
2304
+ "type": "table",
2305
+ "name": "googleLogin_Login"
2306
+ }
2307
+ ],
2308
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2309
+ "parameters": {
2310
+ "properties": [
2311
+ [
2312
+ "user"
2313
+ ]
2314
+ ],
2315
+ "table": "googleLogin_Login"
2316
+ }
2317
+ },
2318
+ "accessControl_PublicSessionInfo_online": {
2319
+ "uid": "530000580037000007123",
2320
+ "sources": [
2321
+ {
2322
+ "type": "table",
2323
+ "name": "accessControl_PublicSessionInfo"
2324
+ }
2325
+ ],
2326
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.online && ({ id: obj.id, to: obj.id })\n await input.table('accessControl_PublicSessionInfo').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2327
+ "parameters": {}
2328
+ },
2329
+ "xmlSearch_Search_bySessionDataSetQueryHash": {
2330
+ "uid": "67000220458868004700041",
2331
+ "sources": [
2332
+ {
2333
+ "type": "table",
2334
+ "name": "xmlSearch_Search"
2335
+ }
2336
+ ],
2337
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && ({\n id: `\"${obj.session}\":\"${obj.dataSet}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query) || '').digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2338
+ "parameters": {}
2339
+ },
2340
+ "accessControl_PublicSessionInfo_neverOnline": {
2341
+ "uid": "0175900004001400756582",
2342
+ "sources": [
2343
+ {
2344
+ "type": "table",
2345
+ "name": "accessControl_PublicSessionInfo"
2346
+ }
2347
+ ],
2348
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => (!obj.online) && (!obj.lastOnline) &&\n ({ id: obj.id, to: obj.id })\n await input.table('accessControl_PublicSessionInfo').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2349
+ "parameters": {}
2350
+ },
2351
+ "accessControl_PublicSessionInfo_wasOnline": {
2352
+ "uid": "140000000520590006828",
2353
+ "sources": [
2354
+ {
2355
+ "type": "table",
2356
+ "name": "accessControl_PublicSessionInfo"
2357
+ }
2358
+ ],
2359
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => (obj.online || obj.lastOnline) &&\n ({ id: obj.id, to: obj.id })\n await input.table('accessControl_PublicSessionInfo').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2360
+ "parameters": {}
2361
+ },
2362
+ "xmlSearch_Search_byUserDataSetQueryHash": {
2363
+ "uid": "813433710028102410069394800",
2364
+ "sources": [
2365
+ {
2366
+ "type": "table",
2367
+ "name": "xmlSearch_Search"
2368
+ }
2369
+ ],
2370
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && ({\n id: `\"${obj.user}\":\"${obj.dataSet}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query) || '').digest('hex')}\"`+\n `_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2371
+ "parameters": {}
2372
+ },
2373
+ "xmlSearch_Search_bySessionUrlHash": {
2374
+ "uid": "3573091073740503736000620",
2375
+ "sources": [
2376
+ {
2377
+ "type": "table",
2378
+ "name": "xmlSearch_Search"
2379
+ }
2380
+ ],
2381
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.session}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url || '').digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2382
+ "parameters": {}
2383
+ },
2384
+ "xmlSearch_Search_byUserUrlHash": {
2385
+ "uid": "001703721702101600000",
2386
+ "sources": [
2387
+ {
2388
+ "type": "table",
2389
+ "name": "xmlSearch_Search"
2390
+ }
2391
+ ],
2392
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${obj.user}\"`+\n `:\"${crypto.createHash('sha1').update(obj.url || '').digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2393
+ "parameters": {}
2394
+ },
2395
+ "xmlSearch_Search_bySessionQueryHash": {
2396
+ "uid": "000675500240610000440",
2397
+ "sources": [
2398
+ {
2399
+ "type": "table",
2400
+ "name": "xmlSearch_Search"
2401
+ }
2402
+ ],
2403
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && ({\n id: `\"${obj.session}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query) || '').digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2404
+ "parameters": {}
2405
+ },
2406
+ "xmlSearch_Search_byUserQueryHash": {
2407
+ "uid": "84000966500000834608219",
2408
+ "sources": [
2409
+ {
2410
+ "type": "table",
2411
+ "name": "xmlSearch_Search"
2412
+ }
2413
+ ],
2414
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && ({\n id: `\"${obj.user}\"`+\n `:\"${crypto.createHash('sha1').update(JSON.stringify(obj.query) || '').digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2415
+ "parameters": {}
2416
+ },
2417
+ "xmlSearch_Search_byUrlHashTimestamp": {
2418
+ "uid": "44350000283100668200950",
2419
+ "sources": [
2420
+ {
2421
+ "type": "table",
2422
+ "name": "xmlSearch_Search"
2423
+ }
2424
+ ],
2425
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.url && ({\n id: `\"${crypto.createHash('sha1').update(obj.url || '').digest('hex')}\"`+\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2426
+ "parameters": {}
2427
+ },
2428
+ "xmlSearch_Search_notDeletedByUrlHashTimestamp": {
2429
+ "uid": "260005807348313581049886234",
2430
+ "sources": [
2431
+ {
2432
+ "type": "table",
2433
+ "name": "xmlSearch_Search"
2434
+ }
2435
+ ],
2436
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => obj.state != 'deleted' && obj.url && ({\n id: `\"${crypto.createHash('sha1').update(obj.url || '').digest('hex')}\"` +\n `:\"${obj.timestamp}\"_${obj.id}`,\n to: obj.id\n })\n await input.table('xmlSearch_Search').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2437
+ "parameters": {}
2438
+ },
2439
+ "xmlAlert_Scanner_byUserUrlHash": {
2440
+ "uid": "06606380400000029000",
2441
+ "sources": [
2442
+ {
2443
+ "type": "table",
2444
+ "name": "xmlAlert_Scanner"
2445
+ }
2446
+ ],
2447
+ "code": "(async function(input, output) {\n const mapper =\n (obj) => (obj && obj.url) ? ({\n id: `\"${obj.user}\":\"${crypto.createHash('sha1').update(obj.url).digest('hex')}\"_${obj.id}`,\n to: obj.id\n }) : null\n await input.table('xmlAlert_Scanner').onChange(\n (obj, oldObj) => output.change(obj && mapper(obj), oldObj && mapper(oldObj))\n )\n })",
2448
+ "parameters": {}
2449
+ },
2450
+ "xmlCsvExclusions_ExclusionsCheck_user": {
2451
+ "uid": "57000046000564360400",
2452
+ "sources": [
2453
+ {
2454
+ "type": "table",
2455
+ "name": "xmlCsvExclusions_ExclusionsCheck"
2456
+ }
2457
+ ],
2458
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2459
+ "parameters": {
2460
+ "properties": [
2461
+ [
2462
+ "user"
2463
+ ]
2464
+ ],
2465
+ "table": "xmlCsvExclusions_ExclusionsCheck"
2466
+ }
2467
+ },
2468
+ "xmlCsvExclusions_ExclusionsCheck_session": {
2469
+ "uid": "0080205078605877000009748",
2470
+ "sources": [
2471
+ {
2472
+ "type": "table",
2473
+ "name": "xmlCsvExclusions_ExclusionsCheck"
2474
+ }
2475
+ ],
2476
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2477
+ "parameters": {
2478
+ "properties": [
2479
+ [
2480
+ "session"
2481
+ ]
2482
+ ],
2483
+ "table": "xmlCsvExclusions_ExclusionsCheck"
2484
+ }
2485
+ },
2486
+ "session_Session_byUser": {
2487
+ "uid": "000960677300000009221",
2488
+ "sources": [
2489
+ {
2490
+ "type": "table",
2491
+ "name": "session_Session"
2492
+ }
2493
+ ],
2494
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2495
+ "parameters": {
2496
+ "properties": [
2497
+ [
2498
+ "user"
2499
+ ]
2500
+ ],
2501
+ "table": "session_Session"
2502
+ }
2503
+ },
2504
+ "xmlCsvExclusions_ExclusionsCheck_bySessionDataSetExclusionsListStrict": {
2505
+ "uid": "0055906160000076090078",
2506
+ "sources": [
2507
+ {
2508
+ "type": "table",
2509
+ "name": "xmlCsvExclusions_ExclusionsCheck"
2510
+ }
2511
+ ],
2512
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2513
+ "parameters": {
2514
+ "properties": [
2515
+ [
2516
+ "session"
2517
+ ],
2518
+ [
2519
+ "dataSet"
2520
+ ],
2521
+ [
2522
+ "exclusionsList"
2523
+ ],
2524
+ [
2525
+ "useStrict"
2526
+ ]
2527
+ ],
2528
+ "table": "xmlCsvExclusions_ExclusionsCheck"
2529
+ }
2530
+ },
2531
+ "xmlCsvExclusions_ExclusionsCheck_byUserDataSetExclusionsListStrict": {
2532
+ "uid": "046000054979218000000",
2533
+ "sources": [
2534
+ {
2535
+ "type": "table",
2536
+ "name": "xmlCsvExclusions_ExclusionsCheck"
2537
+ }
2538
+ ],
2539
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2540
+ "parameters": {
2541
+ "properties": [
2542
+ [
2543
+ "user"
2544
+ ],
2545
+ [
2546
+ "dataSet"
2547
+ ],
2548
+ [
2549
+ "exclusionsList"
2550
+ ],
2551
+ [
2552
+ "useStrict"
2553
+ ]
2554
+ ],
2555
+ "table": "xmlCsvExclusions_ExclusionsCheck"
2556
+ }
2557
+ },
2558
+ "xmlSearch_DataSet_bySnapshot": {
2559
+ "uid": "40610000000838400389473",
2560
+ "sources": [
2561
+ {
2562
+ "type": "table",
2563
+ "name": "xmlSearch_DataSet"
2564
+ }
2565
+ ],
2566
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2567
+ "parameters": {
2568
+ "properties": [
2569
+ [
2570
+ "snapshot"
2571
+ ]
2572
+ ],
2573
+ "table": "xmlSearch_DataSet"
2574
+ }
2575
+ },
2576
+ "adsApi_ApiAccess_byUser": {
2577
+ "uid": "70092700199800870615308876",
2578
+ "sources": [
2579
+ {
2580
+ "type": "table",
2581
+ "name": "adsApi_ApiAccess"
2582
+ }
2583
+ ],
2584
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2585
+ "parameters": {
2586
+ "properties": [
2587
+ [
2588
+ "user"
2589
+ ]
2590
+ ],
2591
+ "table": "adsApi_ApiAccess"
2592
+ }
2593
+ },
2594
+ "adsApi_UserOwnedAccount_byUser": {
2595
+ "uid": "0047830860007681900021",
2596
+ "sources": [
2597
+ {
2598
+ "type": "table",
2599
+ "name": "adsApi_UserOwnedAccount"
2600
+ }
2601
+ ],
2602
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2603
+ "parameters": {
2604
+ "properties": [
2605
+ [
2606
+ "user"
2607
+ ]
2608
+ ],
2609
+ "table": "adsApi_UserOwnedAccount"
2610
+ }
2611
+ },
2612
+ "adsApi_UserOwnedAccount_byAccount": {
2613
+ "uid": "240380067000920000025",
2614
+ "sources": [
2615
+ {
2616
+ "type": "table",
2617
+ "name": "adsApi_UserOwnedAccount"
2618
+ }
2619
+ ],
2620
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2621
+ "parameters": {
2622
+ "properties": [
2623
+ [
2624
+ "account"
2625
+ ]
2626
+ ],
2627
+ "table": "adsApi_UserOwnedAccount"
2628
+ }
2629
+ },
2630
+ "adsApi_Campaign_byAccount": {
2631
+ "uid": "7107500081440000400046",
2632
+ "sources": [
2633
+ {
2634
+ "type": "table",
2635
+ "name": "adsApi_Campaign"
2636
+ }
2637
+ ],
2638
+ "code": "(async function(input, output, { table, properties }) {\n const mapper = (obj) => ({\n id: properties.map(path => {\n let at = obj\n for(const p of path) at = at && at[p]\n return at === undefined ? '' : JSON.stringify(at)\n }).join(':')+'_'+obj.id,\n to: obj.id\n })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
2639
+ "parameters": {
2640
+ "properties": [
2641
+ [
2642
+ "account"
2643
+ ]
2644
+ ],
2645
+ "table": "adsApi_Campaign"
2646
+ }
2647
+ },
2648
+ "triggers_new": {
2649
+ "uid": "8c1ae3a2a7f2dc7e",
2650
+ "sources": [
2651
+ {
2652
+ "type": "table",
2653
+ "name": "triggers"
2654
+ }
2655
+ ],
2656
+ "code": "(async function(input, output, { tableName }) {\n await input.table(tableName).onChange(async (obj, oldObj) => {\n const res = obj && obj.state == 'new' ? { ...obj, id: obj.service + '_' + obj.id } : null\n const oldRes = oldObj && oldObj.state == 'new' ? { ...oldObj, id: oldObj.service + '_' + oldObj.id } : null\n //output.debug(\"CHANGE \", tableName, \"INDEX\", res, \"OLD:\", oldRes)\n await output.change(res, oldRes)\n })\n })",
2657
+ "parameters": {
2658
+ "tableName": "triggers"
2659
+ }
2660
+ },
2661
+ "notifications_Notification_userUnreadNotificationsCount": {
2662
+ "uid": "10008424043036740371188019",
2663
+ "sources": [
2664
+ {
2665
+ "type": "index",
2666
+ "name": "notifications_Notification_userUnreadNotifications"
2667
+ }
2668
+ ],
2669
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('notifications_Notification_userUnreadNotifications')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const user = (obj && obj.user) || (oldObj && oldObj.user)\n const count = await unreadIndex.count({\n gt: user + '_',\n lt: user + '_\\xFF'\n })\n output.put({\n id: user,\n count\n })\n }\n )\n })",
2670
+ "parameters": {}
2671
+ },
2672
+ "notifications_Notification_sessionUnreadNotificationsCount": {
2673
+ "uid": "28083017517700002200085",
2674
+ "sources": [
2675
+ {
2676
+ "type": "index",
2677
+ "name": "notifications_Notification_sessionUnreadNotifications"
2678
+ }
2679
+ ],
2680
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('notifications_Notification_sessionUnreadNotifications')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const session = (obj && obj.session) || (oldObj && oldObj.session)\n const count = await unreadIndex.count({\n gt: session + '_',\n lt: session + '_\\xFF'\n })\n output.put({\n id: session,\n count\n })\n }\n )\n })",
2681
+ "parameters": {}
2682
+ },
2683
+ "readHistory_ReadHistory_userUnreadHistoriesCount": {
2684
+ "uid": "5907750000000166509900",
2685
+ "sources": [
2686
+ {
2687
+ "type": "index",
2688
+ "name": "readHistory_ReadHistory_userUnreadHistories"
2689
+ }
2690
+ ],
2691
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_userUnreadHistories')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const user = (obj && obj.user) || (oldObj && oldObj.user)\n const unread = await unreadIndex.count({\n gt: user + '_',\n lt: user + '_\\xFF'\n })\n output.put({\n id: user,\n unread\n })\n }\n )\n })",
2692
+ "parameters": {}
2693
+ },
2694
+ "readHistory_ReadHistory_sessionUnreadHistoriesCount": {
2695
+ "uid": "25004800500084000620",
2696
+ "sources": [
2697
+ {
2698
+ "type": "index",
2699
+ "name": "readHistory_ReadHistory_sessionUnreadHistories"
2700
+ }
2701
+ ],
2702
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_sessionUnreadHistories')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const publicSessionInfo = (obj && obj.publicSessionInfo) || (oldObj && oldObj.publicSessionInfo)\n const unread = await unreadIndex.count({\n gt: publicSessionInfo + '_',\n lt: publicSessionInfo + '_\\xFF'\n })\n output.put({\n id: publicSessionInfo,\n unread\n })\n }\n )\n })",
2703
+ "parameters": {}
2704
+ },
2705
+ "readHistory_ReadHistory_userUnreadHistoriesCountByType": {
2706
+ "uid": "410007200500000005840",
2707
+ "sources": [
2708
+ {
2709
+ "type": "index",
2710
+ "name": "readHistory_ReadHistory_userUnreadHistoriesByType"
2711
+ }
2712
+ ],
2713
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_userUnreadHistoriesByType')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const user = (obj && obj.user) || (oldObj && oldObj.user)\n const toType = (obj && obj.toType) || (oldObj && oldObj.toType)\n const unread = await unreadIndex.count({\n gt: user + '_' + toType + '_',\n lt: user + '_' + toType + '_\\xFF'\n })\n output.put({\n id: user + '_' + toType,\n unread\n })\n }\n )\n })",
2714
+ "parameters": {}
2715
+ },
2716
+ "readHistory_ReadHistory_sessionUnreadHistoriesCountByType": {
2717
+ "uid": "00090022024000580830",
2718
+ "sources": [
2719
+ {
2720
+ "type": "index",
2721
+ "name": "readHistory_ReadHistory_sessionUnreadHistoriesByType"
2722
+ }
2723
+ ],
2724
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_sessionUnreadHistoriesByType')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const publicSessionInfo = (obj && obj.publicSessionInfo) || (oldObj && oldObj.publicSessionInfo)\n const toType = (obj && obj.toType) || (oldObj && oldObj.toType)\n const unread = await unreadIndex.count({\n gt: publicSessionInfo + '_' + toType + '_',\n lt: publicSessionInfo + '_' + toType + '_\\xFF'\n })\n output.put({\n id: publicSessionInfo + '_' + toType,\n unread\n })\n }\n )\n })",
2725
+ "parameters": {}
2726
+ },
2727
+ "readHistory_ReadHistory_sessionReadHistoriesCount": {
2728
+ "uid": "4600015089070100089046",
2729
+ "sources": [
2730
+ {
2731
+ "type": "index",
2732
+ "name": "readHistory_ReadHistory_sessionReadHistories"
2733
+ }
2734
+ ],
2735
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_sessionReadHistories')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const session = (obj && obj.session) || (oldObj && oldObj.session)\n const prefix = `\"${session}\"`\n const read = await unreadIndex.count({\n gt: prefix + ':',\n lt: prefix + ':\\xFF',\n limit: 500\n })\n output.put({\n id: session,\n read\n })\n }\n )\n })",
2736
+ "parameters": {}
2737
+ },
2738
+ "readHistory_ReadHistory_userReadHistoriesCountByType": {
2739
+ "uid": "06900006908200000230",
2740
+ "sources": [
2741
+ {
2742
+ "type": "index",
2743
+ "name": "readHistory_ReadHistory_userReadHistoriesByType"
2744
+ }
2745
+ ],
2746
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_userReadHistoriesByType')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const user = (obj && obj.user) || (oldObj && oldObj.user)\n const toType = (obj && obj.toType) || (oldObj && oldObj.toType)\n const prefix = `\"${user}\"_\"${toType}\"`\n const read = await unreadIndex.count({\n gt: prefix + ':',\n lt: prefix + ':\\xFF',\n limit: 500\n })\n output.put({\n id: user+'_'+toType,\n read\n })\n }\n )\n })",
2747
+ "parameters": {}
2748
+ },
2749
+ "readHistory_ReadHistory_sessionReadHistoriesCountByType": {
2750
+ "uid": "69000074340230760410087",
2751
+ "sources": [
2752
+ {
2753
+ "type": "index",
2754
+ "name": "readHistory_ReadHistory_sessionReadHistoriesByType"
2755
+ }
2756
+ ],
2757
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_sessionReadHistoriesByType')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const session = (obj && obj.session) || (oldObj && oldObj.session)\n const toType = (obj && obj.toType) || (oldObj && oldObj.toType)\n const prefix = `\"${session}\"_\"${toType}\"`\n const read = await unreadIndex.count({\n gt: prefix + ':',\n lt: prefix + ':\\xFF',\n limit: 500\n })\n output.put({\n id: session+'_'+toType,\n read\n })\n }\n )\n })",
2758
+ "parameters": {}
2759
+ },
2760
+ "readHistory_ReadHistory_userReadHistoriesCount": {
2761
+ "uid": "75000082005501600000",
2762
+ "sources": [
2763
+ {
2764
+ "type": "index",
2765
+ "name": "readHistory_ReadHistory_userReadHistories"
2766
+ }
2767
+ ],
2768
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('readHistory_ReadHistory_userReadHistories')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const user = (obj && obj.user) || (oldObj && oldObj.user)\n if(user && typeof user != 'string') {\n output.debug('INDEX readHistory_ReadHistory_userReadHistories', obj.id, 'user', obj.user)\n throw new Error(\"USER IS NOT STRING\")\n }\n const prefix = `\"${user}\"`\n const read = await unreadIndex.count({\n gt: prefix + ':',\n lt: prefix + ':\\xFF',\n limit: 500\n })\n output.put({\n id: user,\n read\n })\n }\n )\n })",
2769
+ "parameters": {}
2770
+ }
2771
+ },
2772
+ "logs": {
2773
+ "events": {
2774
+ "uid": "04951000980000000072"
2775
+ }
2776
+ },
2777
+ "storage": {
2778
+ "noMetaSync": true,
2779
+ "noSync": true,
2780
+ "mapSize": 40000000000,
2781
+ "maxDbs": 10000
2782
+ }
2783
+ }
2784
+ },
2785
+ "timestamp": 1713446176120
2786
+ }