@live-change/db-server 0.6.9 → 0.6.11

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,1972 @@
1
+ {
2
+ "databases": {
3
+ "system": {
4
+ "tables": {
5
+ "exchange_tables": {
6
+ "uid": "c05a8f4e04593522"
7
+ },
8
+ "exchange_logs": {
9
+ "uid": "c8da79375cca0120"
10
+ },
11
+ "exchange_indexes": {
12
+ "uid": "7cedef38e8bddab8"
13
+ },
14
+ "wallet_tables": {
15
+ "uid": "a1e5a8980fe499d0"
16
+ },
17
+ "wallet_logs": {
18
+ "uid": "fb2fccc6669adf04"
19
+ },
20
+ "wallet_indexes": {
21
+ "uid": "660466f276c61b1a"
22
+ }
23
+ },
24
+ "indexes": {},
25
+ "logs": {}
26
+ },
27
+ "exchange": {
28
+ "tables": {
29
+ "services": {
30
+ "uid": "15f03d04544769df"
31
+ },
32
+ "eventConsumers": {
33
+ "uid": "f507fda4950e66a3"
34
+ },
35
+ "eventReports": {
36
+ "uid": "7a77f9f6d77b17dc"
37
+ },
38
+ "commands": {
39
+ "uid": "3935a574bddc4823"
40
+ },
41
+ "triggerRoutes": {
42
+ "uid": "53135c191d9a536a"
43
+ },
44
+ "timer_Timer": {
45
+ "uid": "e5bb35cb970ce4a5"
46
+ },
47
+ "session_Session": {
48
+ "uid": "174d884211742417"
49
+ },
50
+ "user_User": {
51
+ "uid": "299c9c978e8f1bd6"
52
+ },
53
+ "user_AuthenticatedUser": {
54
+ "uid": "11d31b1fe8b825b8"
55
+ },
56
+ "email_SentEmail": {
57
+ "uid": "c8a11a943ce86e46"
58
+ },
59
+ "email_Email": {
60
+ "uid": "3cdfdcf626f4933e"
61
+ },
62
+ "passwordAuthentication_PasswordAuthentication": {
63
+ "uid": "6e21eacec5a2bf06"
64
+ },
65
+ "passwordAuthentication_ResetPasswordAuthentication": {
66
+ "uid": "db77b38c349f5fc5"
67
+ },
68
+ "userIdentification_Identification": {
69
+ "uid": "101bb1fccfa34d7e"
70
+ },
71
+ "accessControl_Access": {
72
+ "uid": "b9861c48c743976a"
73
+ },
74
+ "accessControl_PublicAccess": {
75
+ "uid": "e7c92cbfd2634220"
76
+ },
77
+ "accessControl_AccessRequest": {
78
+ "uid": "280daf7f4c49c407"
79
+ },
80
+ "accessControl_AccessInvitation": {
81
+ "uid": "70bacdbf4d15fd5e"
82
+ },
83
+ "security_Ban": {
84
+ "uid": "1e87b842f345836f"
85
+ },
86
+ "security_Event": {
87
+ "uid": "72178e262d95b521"
88
+ },
89
+ "notification_Notification": {
90
+ "uid": "277969cabd6cc845"
91
+ },
92
+ "notification_NotificationSetting": {
93
+ "uid": "cd3585227faadaf7"
94
+ },
95
+ "upload_Upload": {
96
+ "uid": "8a68d7a92b71de00"
97
+ },
98
+ "image_Image": {
99
+ "uid": "05c66b7902324720"
100
+ },
101
+ "secretCode_Code": {
102
+ "uid": "c0adca280b4965d0"
103
+ },
104
+ "secretLink_Link": {
105
+ "uid": "b6ee9cfeb8f8f583"
106
+ },
107
+ "url_Canonical": {
108
+ "uid": "22655f9c05a8bc8d"
109
+ },
110
+ "url_Redirect": {
111
+ "uid": "c21a6746a2721c5d"
112
+ },
113
+ "prosemirror_Document": {
114
+ "uid": "8fe974c3f3eec413"
115
+ },
116
+ "prosemirror_StepsBucket": {
117
+ "uid": "6cee7ea3cf416ece"
118
+ },
119
+ "prosemirror_Snapshot": {
120
+ "uid": "8926d91c95a206a9"
121
+ },
122
+ "content_Content": {
123
+ "uid": "ca2639480a182872"
124
+ },
125
+ "content_AdditionalContent": {
126
+ "uid": "3b28c4dab79eaebf"
127
+ },
128
+ "content_Page": {
129
+ "uid": "10ec1bf339e90c43"
130
+ },
131
+ "content_Metadata": {
132
+ "uid": "a36cc0b43e87a544"
133
+ },
134
+ "walletAuthentication_Authentication": {
135
+ "uid": "019e960609310185"
136
+ },
137
+ "ipiWallet_IpiWallet": {
138
+ "uid": "760d82e736513e64"
139
+ },
140
+ "exchange_CryptoInputAddress": {
141
+ "uid": "d7c7f8ca06ead762"
142
+ },
143
+ "exchange_Offer": {
144
+ "uid": "0db5afd2b0b20e77"
145
+ },
146
+ "exchange_Payment": {
147
+ "uid": "8220b548b17eedeb"
148
+ },
149
+ "price_Price": {
150
+ "uid": "d24411e0da11e553"
151
+ },
152
+ "price_LastPrice": {
153
+ "uid": "063ba32db52a2286"
154
+ },
155
+ "mlm_Link": {
156
+ "uid": "84609bb581c2e4dc"
157
+ },
158
+ "mlm_SourceLink": {
159
+ "uid": "1866fd8f22dd1e83"
160
+ },
161
+ "bitcoin_Address": {
162
+ "uid": "cfb8bcb20f690adb"
163
+ },
164
+ "bitcoin_Transaction": {
165
+ "uid": "bde8d651634a06e5"
166
+ },
167
+ "security_relations": {
168
+ "uid": "310ddd6db1956e89"
169
+ },
170
+ "mlm_Balance": {
171
+ "uid": "4f99a79dadf340b1"
172
+ },
173
+ "mlm_Payout": {
174
+ "uid": "449d3d780045c3df"
175
+ },
176
+ "triggers": {
177
+ "uid": "add32303a08fc6f9"
178
+ }
179
+ },
180
+ "indexes": {
181
+ "timer_Timer_timestamp": {
182
+ "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 })",
183
+ "parameters": {},
184
+ "uid": "0a75079632df6545",
185
+ "sources": [
186
+ {
187
+ "type": "table",
188
+ "name": "timer_Timer"
189
+ }
190
+ ]
191
+ },
192
+ "session_Session_byKey": {
193
+ "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 })",
194
+ "parameters": {
195
+ "properties": [
196
+ [
197
+ "key"
198
+ ]
199
+ ],
200
+ "table": "session_Session"
201
+ },
202
+ "uid": "e137b265e87e63c3",
203
+ "sources": [
204
+ {
205
+ "type": "table",
206
+ "name": "session_Session"
207
+ }
208
+ ]
209
+ },
210
+ "user_AuthenticatedUser_byUser": {
211
+ "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 })",
212
+ "parameters": {
213
+ "properties": [
214
+ [
215
+ "user"
216
+ ]
217
+ ],
218
+ "table": "user_AuthenticatedUser"
219
+ },
220
+ "uid": "ab1218f7cf7e8ed7",
221
+ "sources": [
222
+ {
223
+ "type": "table",
224
+ "name": "user_AuthenticatedUser"
225
+ }
226
+ ]
227
+ },
228
+ "email_Email_byUser": {
229
+ "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 })",
230
+ "parameters": {
231
+ "properties": [
232
+ [
233
+ "user"
234
+ ]
235
+ ],
236
+ "table": "email_Email"
237
+ },
238
+ "uid": "e503af97788d01a6",
239
+ "sources": [
240
+ {
241
+ "type": "table",
242
+ "name": "email_Email"
243
+ }
244
+ ]
245
+ },
246
+ "passwordAuthentication_PasswordAuthentication_byUser": {
247
+ "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 })",
248
+ "parameters": {
249
+ "properties": [
250
+ [
251
+ "User"
252
+ ]
253
+ ],
254
+ "table": "passwordAuthentication_PasswordAuthentication"
255
+ },
256
+ "uid": "c5dfa1ec46c4de5e",
257
+ "sources": [
258
+ {
259
+ "type": "table",
260
+ "name": "passwordAuthentication_PasswordAuthentication"
261
+ }
262
+ ]
263
+ },
264
+ "passwordAuthentication_ResetPasswordAuthentication_byKey": {
265
+ "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 })",
266
+ "parameters": {
267
+ "properties": [
268
+ [
269
+ "key"
270
+ ]
271
+ ],
272
+ "table": "passwordAuthentication_ResetPasswordAuthentication"
273
+ },
274
+ "uid": "721a799919b86604",
275
+ "sources": [
276
+ {
277
+ "type": "table",
278
+ "name": "passwordAuthentication_ResetPasswordAuthentication"
279
+ }
280
+ ]
281
+ },
282
+ "passwordAuthentication_ResetPasswordAuthentication_byUser": {
283
+ "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 })",
284
+ "parameters": {
285
+ "properties": [
286
+ [
287
+ "User"
288
+ ]
289
+ ],
290
+ "table": "passwordAuthentication_ResetPasswordAuthentication"
291
+ },
292
+ "uid": "270b76adbeb82880",
293
+ "sources": [
294
+ {
295
+ "type": "table",
296
+ "name": "passwordAuthentication_ResetPasswordAuthentication"
297
+ }
298
+ ]
299
+ },
300
+ "accessControl_Access_bySessionOrUser": {
301
+ "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 })",
302
+ "parameters": {
303
+ "properties": [
304
+ [
305
+ "sessionOrUserType"
306
+ ],
307
+ [
308
+ "sessionOrUser"
309
+ ]
310
+ ],
311
+ "table": "accessControl_Access"
312
+ },
313
+ "uid": "fbfa5616f4f542a6",
314
+ "sources": [
315
+ {
316
+ "type": "table",
317
+ "name": "accessControl_Access"
318
+ }
319
+ ]
320
+ },
321
+ "accessControl_Access_byObject": {
322
+ "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 })",
323
+ "parameters": {
324
+ "properties": [
325
+ [
326
+ "objectType"
327
+ ],
328
+ [
329
+ "object"
330
+ ]
331
+ ],
332
+ "table": "accessControl_Access"
333
+ },
334
+ "uid": "77205e82c58914d5",
335
+ "sources": [
336
+ {
337
+ "type": "table",
338
+ "name": "accessControl_Access"
339
+ }
340
+ ]
341
+ },
342
+ "accessControl_AccessRequest_bySessionOrUser": {
343
+ "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 })",
344
+ "parameters": {
345
+ "properties": [
346
+ [
347
+ "sessionOrUserType"
348
+ ],
349
+ [
350
+ "sessionOrUser"
351
+ ]
352
+ ],
353
+ "table": "accessControl_AccessRequest"
354
+ },
355
+ "uid": "47da1eee29fe1bbd",
356
+ "sources": [
357
+ {
358
+ "type": "table",
359
+ "name": "accessControl_AccessRequest"
360
+ }
361
+ ]
362
+ },
363
+ "accessControl_AccessRequest_byObject": {
364
+ "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 })",
365
+ "parameters": {
366
+ "properties": [
367
+ [
368
+ "objectType"
369
+ ],
370
+ [
371
+ "object"
372
+ ]
373
+ ],
374
+ "table": "accessControl_AccessRequest"
375
+ },
376
+ "uid": "8ce5f521674e78eb",
377
+ "sources": [
378
+ {
379
+ "type": "table",
380
+ "name": "accessControl_AccessRequest"
381
+ }
382
+ ]
383
+ },
384
+ "accessControl_AccessInvitation_byContactOrUser": {
385
+ "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 })",
386
+ "parameters": {
387
+ "properties": [
388
+ [
389
+ "contactOrUserType"
390
+ ],
391
+ [
392
+ "contactOrUser"
393
+ ]
394
+ ],
395
+ "table": "accessControl_AccessInvitation"
396
+ },
397
+ "uid": "c59ddd3a9176951d",
398
+ "sources": [
399
+ {
400
+ "type": "table",
401
+ "name": "accessControl_AccessInvitation"
402
+ }
403
+ ]
404
+ },
405
+ "accessControl_AccessInvitation_byObject": {
406
+ "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 })",
407
+ "parameters": {
408
+ "properties": [
409
+ [
410
+ "objectType"
411
+ ],
412
+ [
413
+ "object"
414
+ ]
415
+ ],
416
+ "table": "accessControl_AccessInvitation"
417
+ },
418
+ "uid": "3d7442e0d8a6778d",
419
+ "sources": [
420
+ {
421
+ "type": "table",
422
+ "name": "accessControl_AccessInvitation"
423
+ }
424
+ ]
425
+ },
426
+ "security_Ban_bans": {
427
+ "code": "(async function(input, output, { table, property }) {\n const values = (obj) => {\n let at = obj\n for(const p of property) at = at && at[p]\n if(at === undefined) return []\n if(Array.isArray(at)) return at.map(v => JSON.stringify(v))\n return [at]\n }\n await input.table(table).onChange((obj, oldObj) => {\n if(obj && oldObj) {\n let pointers = obj && new Set(values(obj))\n let oldPointers = oldObj && new Set(values(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change({ id: pointer+'_'+obj.id, to: obj.id }, null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, { id: pointer+'_'+obj.id, to: obj.id })\n }\n } else if(obj) {\n values(obj).forEach(v => output.change({ id: v+'_'+obj.id, to: obj.id }, null))\n } else if(oldObj) {\n values(oldObj).forEach(v => output.change(null, { id: v+'_'+oldObj.id, to: oldObj.id }))\n }\n })\n })",
428
+ "parameters": {
429
+ "property": [
430
+ "keys"
431
+ ],
432
+ "table": "security_Ban"
433
+ },
434
+ "uid": "c4dd5164ade2375c",
435
+ "sources": [
436
+ {
437
+ "type": "table",
438
+ "name": "security_Ban"
439
+ }
440
+ ]
441
+ },
442
+ "security_Ban_actionBans": {
443
+ "code": "(async function(input, output) {\n function prefixes(ban) {\n //output.debug(\"BAN\", ban)\n if(!ban.keys) return []\n if(!ban.actions) return []\n const v = ban.keys.length\n const w = ban.actions.length\n let res = new Array(v * w)\n for(let i = 0; i < v; i++) {\n for(let j = 0; j < w; j++) {\n const key = ban.keys[i]\n res[i * v + j] = `${ban.actions[j]}:${key.key}:${key.value}`\n }\n }\n //output.debug(\"BAN ACTIONS\", res)\n return res\n }\n function indexObject(prefix, obj) {\n //output.debug(\"BAN\", obj)\n return {\n id: prefix+'_'+obj.id,\n to: obj.id,\n type: obj.type,\n expire: obj.expire,\n actions: obj.actions\n }\n }\n await input.table(\"security_Ban\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n //output.debug(\"CHANGE!\", obj, oldObj)\n const pointers = obj && new Set(prefixes(obj))\n const oldPointers = oldObj && new Set(prefixes(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change(indexObject(pointer, obj), null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, indexObject(pointer, oldObj))\n }\n } else if(obj) {\n //output.debug(\"CREATE!\", obj, oldObj)\n prefixes(obj).forEach(v => output.change(indexObject(v, obj), null))\n } else if(oldObj) {\n //output.debug(\"DELETE!\", obj, oldObj)\n prefixes(oldObj).forEach(v => output.change(null, indexObject(v, oldObj)))\n }\n })\n })",
444
+ "parameters": {},
445
+ "uid": "3cf1cccd86b0acf4",
446
+ "sources": [
447
+ {
448
+ "type": "table",
449
+ "name": "security_Ban"
450
+ }
451
+ ]
452
+ },
453
+ "security_Ban_actionBansByType": {
454
+ "code": "(async function(input, output) {\n function prefixes(ban) {\n //output.debug(\"BAN\", ban)\n if(!ban.keys) return []\n if(!ban.actions) return []\n const v = ban.keys.length\n const w = ban.actions.length\n let res = new Array(v * w)\n for(let i = 0; i < v; i++) {\n for(let j = 0; j < w; j++) {\n const key = ban.keys[i]\n res[i * v + j] = `${ban.actions[j]}:${key.key}:${key.value}:${ban.type}:${ban.expire}`\n }\n }\n output.debug(\"BAN PREFIXES\", res)\n return res\n }\n function indexObject(prefix, obj) {\n //output.debug(\"BAN\", obj)\n return {\n id: prefix+'_'+obj.id,\n to: obj.id,\n type: obj.type,\n expire: obj.expire,\n actions: obj.actions\n }\n }\n await input.table(\"security_Ban\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n //output.debug(\"CHANGE!\", obj, oldObj)\n let pointers = obj && new Set(prefixes(obj))\n let oldPointers = oldObj && new Set(prefixes(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change(indexObject(pointer, obj), null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, indexObject(pointer, oldObj))\n }\n } else if(obj) {\n //output.debug(\"CREATE!\", obj, oldObj)\n prefixes(obj).forEach(v => output.change(indexObject(v, obj), null))\n } else if(oldObj) {\n //output.debug(\"DELETE!\", obj, oldObj)\n prefixes(oldObj).forEach(v => output.change(null, indexObject(v, oldObj)))\n }\n })\n })",
455
+ "parameters": {},
456
+ "uid": "088aa0b91edf5011",
457
+ "sources": [
458
+ {
459
+ "type": "table",
460
+ "name": "security_Ban"
461
+ }
462
+ ]
463
+ },
464
+ "security_Event_byKeyTypeAndTimestamp": {
465
+ "code": "(async function(input, output) {\n async function spread(event) {\n for(const key in event.keys) {\n output.put({\n id: `${key}:${JSON.stringify(event.keys[key])}:${event.type}:${event.timestamp}_${event.id}`,\n type: event.type,\n timestamp: event.timestamp\n })\n }\n }\n await input.table('security_Event').onChange(\n (obj, oldObj) => spread(obj)\n )\n })",
466
+ "parameters": {},
467
+ "uid": "3ba8fe53feedf8af",
468
+ "sources": [
469
+ {
470
+ "type": "table",
471
+ "name": "security_Event"
472
+ }
473
+ ]
474
+ },
475
+ "notification_Notification_unreadNotifications": {
476
+ "code": "(async function(input, output) {\n await input.table('notification_Notification')\n .map((obj) => obj && obj.readState == 'new' && ({\n id: `\"${obj.sessionOrUserType}\":\"${obj.sessionOrUser}\"_${obj.id}`,\n sessionOrUserType: obj.sessionOrUserType, sessionOrUser: obj.sessionOrUser,\n to: obj.id\n }))\n .to(output)\n })",
477
+ "parameters": {},
478
+ "uid": "e0264b95e1c7070a",
479
+ "sources": [
480
+ {
481
+ "type": "table",
482
+ "name": "notification_Notification"
483
+ }
484
+ ]
485
+ },
486
+ "notification_Notification_unreadNotificationsCount": {
487
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('notification_Notification_unreadNotifications')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const { sessionOrUserType, sessionOrUser } = obj || oldObj\n const group = `\"${sessionOrUserType}\":\"${sessionOrUser}\"`\n const prefix = group + '_'\n const count = await unreadIndex.count({ gt: prefix, lt: prefix + '\\xFF' })\n output.put({\n id: group,\n count\n })\n }\n )\n })",
488
+ "parameters": {},
489
+ "uid": "555469fcf7c3bfb7",
490
+ "sources": [
491
+ {
492
+ "type": "index",
493
+ "name": "notification_Notification_unreadNotifications"
494
+ }
495
+ ]
496
+ },
497
+ "notification_Notification_bySessionOrUser": {
498
+ "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 })",
499
+ "parameters": {
500
+ "properties": [
501
+ [
502
+ "sessionOrUserType"
503
+ ],
504
+ [
505
+ "sessionOrUser"
506
+ ]
507
+ ],
508
+ "table": "notification_Notification"
509
+ },
510
+ "uid": "ca2ea03d2df40ef4",
511
+ "sources": [
512
+ {
513
+ "type": "table",
514
+ "name": "notification_Notification"
515
+ }
516
+ ]
517
+ },
518
+ "notification_Notification_bySessionOrUserAndTime": {
519
+ "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 })",
520
+ "parameters": {
521
+ "properties": [
522
+ [
523
+ "sessionOrUserType"
524
+ ],
525
+ [
526
+ "sessionOrUser"
527
+ ],
528
+ [
529
+ "time"
530
+ ]
531
+ ],
532
+ "table": "notification_Notification"
533
+ },
534
+ "uid": "6330c468d772c693",
535
+ "sources": [
536
+ {
537
+ "type": "table",
538
+ "name": "notification_Notification"
539
+ }
540
+ ]
541
+ },
542
+ "notification_Notification_bySessionOrUserAndReadState": {
543
+ "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 })",
544
+ "parameters": {
545
+ "properties": [
546
+ [
547
+ "sessionOrUserType"
548
+ ],
549
+ [
550
+ "sessionOrUser"
551
+ ],
552
+ [
553
+ "readState"
554
+ ]
555
+ ],
556
+ "table": "notification_Notification"
557
+ },
558
+ "uid": "03d456511300a860",
559
+ "sources": [
560
+ {
561
+ "type": "table",
562
+ "name": "notification_Notification"
563
+ }
564
+ ]
565
+ },
566
+ "notification_NotificationSetting_byContact": {
567
+ "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 })",
568
+ "parameters": {
569
+ "properties": [
570
+ [
571
+ "contactType"
572
+ ],
573
+ [
574
+ "contact"
575
+ ]
576
+ ],
577
+ "table": "notification_NotificationSetting"
578
+ },
579
+ "uid": "da458d672fa4836a",
580
+ "sources": [
581
+ {
582
+ "type": "table",
583
+ "name": "notification_NotificationSetting"
584
+ }
585
+ ]
586
+ },
587
+ "notification_NotificationSetting_byNotification": {
588
+ "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 })",
589
+ "parameters": {
590
+ "properties": [
591
+ [
592
+ "notificationType"
593
+ ],
594
+ [
595
+ "notification"
596
+ ]
597
+ ],
598
+ "table": "notification_NotificationSetting"
599
+ },
600
+ "uid": "f364b9ea4efb230f",
601
+ "sources": [
602
+ {
603
+ "type": "table",
604
+ "name": "notification_NotificationSetting"
605
+ }
606
+ ]
607
+ },
608
+ "image_Image_byOwner": {
609
+ "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 })",
610
+ "parameters": {
611
+ "properties": [
612
+ [
613
+ "ownerType"
614
+ ],
615
+ [
616
+ "owner"
617
+ ]
618
+ ],
619
+ "table": "image_Image"
620
+ },
621
+ "uid": "320eb7e0e0165cb2",
622
+ "sources": [
623
+ {
624
+ "type": "table",
625
+ "name": "image_Image"
626
+ }
627
+ ]
628
+ },
629
+ "secretCode_Code_byAuthenticationAndSecretCode": {
630
+ "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 })",
631
+ "parameters": {
632
+ "properties": [
633
+ [
634
+ "authentication"
635
+ ],
636
+ [
637
+ "secretCode"
638
+ ]
639
+ ],
640
+ "table": "secretCode_Code"
641
+ },
642
+ "uid": "aaa55d700b7eec3b",
643
+ "sources": [
644
+ {
645
+ "type": "table",
646
+ "name": "secretCode_Code"
647
+ }
648
+ ]
649
+ },
650
+ "secretCode_Code_byAuthentication": {
651
+ "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 })",
652
+ "parameters": {
653
+ "properties": [
654
+ [
655
+ "authentication"
656
+ ]
657
+ ],
658
+ "table": "secretCode_Code"
659
+ },
660
+ "uid": "3ba5543f441d5fd8",
661
+ "sources": [
662
+ {
663
+ "type": "table",
664
+ "name": "secretCode_Code"
665
+ }
666
+ ]
667
+ },
668
+ "secretLink_Link_bySecretCode": {
669
+ "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 })",
670
+ "parameters": {
671
+ "properties": [
672
+ [
673
+ "secretCode"
674
+ ]
675
+ ],
676
+ "table": "secretLink_Link"
677
+ },
678
+ "uid": "f9390d19005088f7",
679
+ "sources": [
680
+ {
681
+ "type": "table",
682
+ "name": "secretLink_Link"
683
+ }
684
+ ]
685
+ },
686
+ "secretLink_Link_byAuthentication": {
687
+ "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 })",
688
+ "parameters": {
689
+ "properties": [
690
+ [
691
+ "authentication"
692
+ ]
693
+ ],
694
+ "table": "secretLink_Link"
695
+ },
696
+ "uid": "e858ef350dcf3819",
697
+ "sources": [
698
+ {
699
+ "type": "table",
700
+ "name": "secretLink_Link"
701
+ }
702
+ ]
703
+ },
704
+ "url_Canonical_byUrl": {
705
+ "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 })",
706
+ "parameters": {
707
+ "properties": [
708
+ [
709
+ "targetType"
710
+ ],
711
+ [
712
+ "domain"
713
+ ],
714
+ [
715
+ "path"
716
+ ]
717
+ ],
718
+ "table": "url_Canonical"
719
+ },
720
+ "uid": "f5577bc6c5d10a2a",
721
+ "sources": [
722
+ {
723
+ "type": "table",
724
+ "name": "url_Canonical"
725
+ }
726
+ ]
727
+ },
728
+ "url_Redirect_byUrl": {
729
+ "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 })",
730
+ "parameters": {
731
+ "properties": [
732
+ [
733
+ "targetType"
734
+ ],
735
+ [
736
+ "domain"
737
+ ],
738
+ [
739
+ "path"
740
+ ]
741
+ ],
742
+ "table": "url_Redirect"
743
+ },
744
+ "uid": "3d60d2cf640d4b5a",
745
+ "sources": [
746
+ {
747
+ "type": "table",
748
+ "name": "url_Redirect"
749
+ }
750
+ ]
751
+ },
752
+ "url_Redirect_byTarget": {
753
+ "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 })",
754
+ "parameters": {
755
+ "properties": [
756
+ [
757
+ "targetType"
758
+ ],
759
+ [
760
+ "target"
761
+ ]
762
+ ],
763
+ "table": "url_Redirect"
764
+ },
765
+ "uid": "3709f1fc937a0abc",
766
+ "sources": [
767
+ {
768
+ "type": "table",
769
+ "name": "url_Redirect"
770
+ }
771
+ ]
772
+ },
773
+ "url_Urls": {
774
+ "code": "(async function(input, output) {\n const urlMapper = urlType => ({targetType, domain, path, target}) =>\n ({\n id: `\"${targetType}\":${JSON.stringify(domain)}:${JSON.stringify(path)}_\"${target}\"`,\n target, domain, path,\n type: urlType\n })\n const redirectMapper = urlMapper('redirect')\n const canonicalMapper = urlMapper('canonical')\n await input.table('url_Redirect').onChange(\n (obj, oldObj) => output.change(obj && redirectMapper(obj), oldObj && redirectMapper(oldObj))\n )\n await input.table('url_Canonical').onChange(\n (obj, oldObj) => output.change(obj && canonicalMapper(obj), oldObj && canonicalMapper(oldObj))\n )\n })",
775
+ "parameters": {},
776
+ "uid": "26b36edb74e1e29d",
777
+ "sources": [
778
+ {
779
+ "type": "table",
780
+ "name": "url_Redirect"
781
+ },
782
+ {
783
+ "type": "table",
784
+ "name": "url_Canonical"
785
+ }
786
+ ]
787
+ },
788
+ "url_UrlsWithoutDomain": {
789
+ "code": "(async function(input, output) {\n const urlMapper = urlType => ({targetType, domain, path, target}) =>\n ({\n id: `\"${targetType}\":${JSON.stringify(path)}_\"${target}\"`,\n target, domain, path,\n type: urlType\n })\n const redirectMapper = urlMapper('redirect')\n const canonicalMapper = urlMapper('canonical')\n await input.table('url_Redirect').onChange(\n (obj, oldObj) => output.change(obj && redirectMapper(obj), oldObj && redirectMapper(oldObj))\n )\n await input.table('url_Canonical').onChange(\n (obj, oldObj) => output.change(obj && canonicalMapper(obj), oldObj && canonicalMapper(oldObj))\n )\n })",
790
+ "parameters": {},
791
+ "uid": "3895732c7da7a2a5",
792
+ "sources": [
793
+ {
794
+ "type": "table",
795
+ "name": "url_Redirect"
796
+ },
797
+ {
798
+ "type": "table",
799
+ "name": "url_Canonical"
800
+ }
801
+ ]
802
+ },
803
+ "prosemirror_Snapshot_list": {
804
+ "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 })",
805
+ "parameters": {
806
+ "properties": [
807
+ [
808
+ "document"
809
+ ],
810
+ [
811
+ "version"
812
+ ]
813
+ ],
814
+ "table": "prosemirror_Snapshot"
815
+ },
816
+ "uid": "79c1e50c3415b648",
817
+ "sources": [
818
+ {
819
+ "type": "table",
820
+ "name": "prosemirror_Snapshot"
821
+ }
822
+ ]
823
+ },
824
+ "content_AdditionalContent_byContent": {
825
+ "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 })",
826
+ "parameters": {
827
+ "properties": [
828
+ [
829
+ "content"
830
+ ]
831
+ ],
832
+ "table": "content_AdditionalContent"
833
+ },
834
+ "uid": "5d2004833779aeeb",
835
+ "sources": [
836
+ {
837
+ "type": "table",
838
+ "name": "content_AdditionalContent"
839
+ }
840
+ ]
841
+ },
842
+ "walletAuthentication_Authentication_byWallet": {
843
+ "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 })",
844
+ "parameters": {
845
+ "properties": [
846
+ [
847
+ "walletType"
848
+ ],
849
+ [
850
+ "wallet"
851
+ ]
852
+ ],
853
+ "table": "walletAuthentication_Authentication"
854
+ },
855
+ "uid": "bdb08fa29fdc271e",
856
+ "sources": [
857
+ {
858
+ "type": "table",
859
+ "name": "walletAuthentication_Authentication"
860
+ }
861
+ ]
862
+ },
863
+ "ipiWallet_IpiWallet_byUser": {
864
+ "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 })",
865
+ "parameters": {
866
+ "properties": [
867
+ [
868
+ "user"
869
+ ]
870
+ ],
871
+ "table": "ipiWallet_IpiWallet"
872
+ },
873
+ "uid": "e042f1491c7d875a",
874
+ "sources": [
875
+ {
876
+ "type": "table",
877
+ "name": "ipiWallet_IpiWallet"
878
+ }
879
+ ]
880
+ },
881
+ "exchange_Offer_byStateAndCryptoInputAddress": {
882
+ "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 })",
883
+ "parameters": {
884
+ "properties": [
885
+ [
886
+ "state"
887
+ ],
888
+ [
889
+ "cryptoInputAddress"
890
+ ],
891
+ [
892
+ "created"
893
+ ]
894
+ ],
895
+ "table": "exchange_Offer"
896
+ },
897
+ "uid": "695f534f20d0342b",
898
+ "sources": [
899
+ {
900
+ "type": "table",
901
+ "name": "exchange_Offer"
902
+ }
903
+ ]
904
+ },
905
+ "exchange_Offer_bySessionOrUser": {
906
+ "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 })",
907
+ "parameters": {
908
+ "properties": [
909
+ [
910
+ "sessionOrUserType"
911
+ ],
912
+ [
913
+ "sessionOrUser"
914
+ ]
915
+ ],
916
+ "table": "exchange_Offer"
917
+ },
918
+ "uid": "79f24e58e81ef56f",
919
+ "sources": [
920
+ {
921
+ "type": "table",
922
+ "name": "exchange_Offer"
923
+ }
924
+ ]
925
+ },
926
+ "exchange_Payment_byOffer": {
927
+ "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 })",
928
+ "parameters": {
929
+ "properties": [
930
+ [
931
+ "offerType"
932
+ ],
933
+ [
934
+ "offer"
935
+ ]
936
+ ],
937
+ "table": "exchange_Payment"
938
+ },
939
+ "uid": "9d2d82fcb6828ec4",
940
+ "sources": [
941
+ {
942
+ "type": "table",
943
+ "name": "exchange_Payment"
944
+ }
945
+ ]
946
+ },
947
+ "exchange_Payment_byTransaction": {
948
+ "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 })",
949
+ "parameters": {
950
+ "properties": [
951
+ [
952
+ "transactionType"
953
+ ],
954
+ [
955
+ "transaction"
956
+ ]
957
+ ],
958
+ "table": "exchange_Payment"
959
+ },
960
+ "uid": "65f02d15d8855345",
961
+ "sources": [
962
+ {
963
+ "type": "table",
964
+ "name": "exchange_Payment"
965
+ }
966
+ ]
967
+ },
968
+ "mlm_Link_byUser": {
969
+ "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 })",
970
+ "parameters": {
971
+ "properties": [
972
+ [
973
+ "user"
974
+ ]
975
+ ],
976
+ "table": "mlm_Link"
977
+ },
978
+ "uid": "68d78c63d4e8be12",
979
+ "sources": [
980
+ {
981
+ "type": "table",
982
+ "name": "mlm_Link"
983
+ }
984
+ ]
985
+ },
986
+ "bitcoin_Address_byHolder": {
987
+ "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 })",
988
+ "parameters": {
989
+ "properties": [
990
+ [
991
+ "holderType"
992
+ ],
993
+ [
994
+ "holder"
995
+ ],
996
+ [
997
+ "expire"
998
+ ]
999
+ ],
1000
+ "table": "bitcoin_Address"
1001
+ },
1002
+ "uid": "2959c55100269eba",
1003
+ "sources": [
1004
+ {
1005
+ "type": "table",
1006
+ "name": "bitcoin_Address"
1007
+ }
1008
+ ]
1009
+ },
1010
+ "commands_new": {
1011
+ "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 })",
1012
+ "parameters": {
1013
+ "tableName": "commands"
1014
+ },
1015
+ "uid": "8b87e051c7963280",
1016
+ "sources": [
1017
+ {
1018
+ "type": "table",
1019
+ "name": "commands"
1020
+ }
1021
+ ]
1022
+ },
1023
+ "security_relations_eventTypeAndKeys": {
1024
+ "code": "(async function(input, output, { table }) {\n const mapper = (obj) => ({ id: obj.eventType+'_'+obj.keys+'_'+obj.id, to: obj.id })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1025
+ "parameters": {
1026
+ "table": "security_relations"
1027
+ },
1028
+ "uid": "500a5142c6c48e84",
1029
+ "sources": [
1030
+ {
1031
+ "type": "table",
1032
+ "name": "security_relations"
1033
+ }
1034
+ ]
1035
+ },
1036
+ "security_relations_sourceRelation": {
1037
+ "code": "(async function(input, output, { table }) {\n const mapper = (obj) => ({ id: obj.source+'_'+obj.relation+'_'+obj.id, to: obj.id })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1038
+ "parameters": {
1039
+ "table": "security_relations"
1040
+ },
1041
+ "uid": "2b9588a16ba55b9c",
1042
+ "sources": [
1043
+ {
1044
+ "type": "table",
1045
+ "name": "security_relations"
1046
+ }
1047
+ ]
1048
+ },
1049
+ "exchange_Offer_byLink": {
1050
+ "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 })",
1051
+ "parameters": {
1052
+ "properties": [
1053
+ [
1054
+ "link"
1055
+ ],
1056
+ [
1057
+ "created"
1058
+ ]
1059
+ ],
1060
+ "table": "exchange_Offer"
1061
+ },
1062
+ "uid": "755a3f23a8de2db7",
1063
+ "sources": [
1064
+ {
1065
+ "type": "table",
1066
+ "name": "exchange_Offer"
1067
+ }
1068
+ ]
1069
+ },
1070
+ "exchange_Offer_byLinkAndTimestamp": {
1071
+ "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 })",
1072
+ "parameters": {
1073
+ "properties": [
1074
+ [
1075
+ "link"
1076
+ ],
1077
+ [
1078
+ "created"
1079
+ ]
1080
+ ],
1081
+ "table": "exchange_Offer"
1082
+ },
1083
+ "uid": "0d9eceae58408087",
1084
+ "sources": [
1085
+ {
1086
+ "type": "table",
1087
+ "name": "exchange_Offer"
1088
+ }
1089
+ ]
1090
+ },
1091
+ "exchange_Offer_byLinkStateExtended": {
1092
+ "code": "(async function(input, output) {\n function mapper(obj) {\n return obj && {\n id: `\"${obj.link}\":\"${obj.state}\":\"${obj.created}\"_${obj.id}`,\n to: obj.id,\n link: obj.link,\n state: obj.state,\n created: obj.created,\n cryptoInput: obj.state == 'done' ? obj.finalCryptoInput : obj.cryptoInput,\n cryptoOutput: obj.state == 'done' ? obj.finalCryptoOutput : obj.cryptoOutput,\n fiatInput: obj.state == 'done' ? obj.finalFiatInput : obj.fiatInput,\n fiatInputCurrency: obj.fiatInputCurrency,\n cryptoInputCurrency: obj.cryptoInputCurrency,\n cryptoOutputCurrency: obj.cryptoOutputCurrency,\n }\n }\n await input.table('exchange_Offer').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1093
+ "parameters": {},
1094
+ "uid": "6f1a1022188c86fc",
1095
+ "sources": [
1096
+ {
1097
+ "type": "table",
1098
+ "name": "exchange_Offer"
1099
+ }
1100
+ ]
1101
+ },
1102
+ "mlm_Link_byUserExtended": {
1103
+ "code": "(async function(input, output) {\n function mapper(obj) {\n return obj && {\n id: `\"${obj.user}\"_${obj.id}`,\n to: obj.id,\n user: obj.user,\n useCount: obj.useCount || 0,\n offerCount: obj.offerCount || 0,\n activeCount: obj.activeCount || 0,\n doneCount: obj.doneCount || 0,\n expiredCount: obj.expiredCount || 0,\n subLinks: obj.subLinks || 0,\n income: obj.income || 0,\n output: obj.output || 0\n }\n }\n await input.table('mlm_Link').onChange(\n (obj, oldObj) => output.change(mapper(obj), mapper(oldObj))\n )\n })",
1104
+ "parameters": {},
1105
+ "uid": "e4dd33a6d1e9c29b",
1106
+ "sources": [
1107
+ {
1108
+ "type": "table",
1109
+ "name": "mlm_Link"
1110
+ }
1111
+ ]
1112
+ },
1113
+ "mlm_Link_userStats": {
1114
+ "code": "(async function(input, output) {\n const sourceIndex = await input.index('mlm_Link_byUserExtended')\n await sourceIndex.onChange(\n async (obj, oldObj) => {\n const prefix = ((obj && obj.id) || (oldObj && oldObj.id)).split('_')[0]\n if(!prefix) {\n output.debug(\"NO PREFIX FOR CHANGE\", obj, oldObj)\n return\n }\n const user = ((obj && obj.user) || (oldObj && oldObj.user))\n const links = await sourceIndex.get({\n gt: prefix + '_',\n lt: prefix + '_\\xFF',\n limit: 1000\n })\n\n let useCount = 0\n let offerCount = 0\n let activeCount = 0\n let doneCount = 0\n let expiredCount = 0\n let subLinks = 0\n let income = 0\n let outputSum = 0\n\n for(const link of links) {\n useCount += link.useCount || 0\n offerCount += link.offerCount || 0\n activeCount += link.activeCount || 0\n doneCount += link.doneCount || 0\n expiredCount += link.expiredCount || 0\n subLinks += link.subLinks || 0\n income += link.income || 0\n outputSum += link.output || 0\n }\n output.put({\n id: prefix,\n user,\n useCount, offerCount, activeCount, doneCount, expiredCount, subLinks, income, output: outputSum\n })\n }\n )\n })",
1115
+ "parameters": {},
1116
+ "uid": "5d401f463697dca5",
1117
+ "sources": [
1118
+ {
1119
+ "type": "index",
1120
+ "name": "mlm_Link_byUserExtended"
1121
+ }
1122
+ ]
1123
+ },
1124
+ "mlm_Balance_byUser": {
1125
+ "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 })",
1126
+ "parameters": {
1127
+ "properties": [
1128
+ [
1129
+ "User"
1130
+ ]
1131
+ ],
1132
+ "table": "mlm_Balance"
1133
+ },
1134
+ "uid": "1a4c9ce41f799a90",
1135
+ "sources": [
1136
+ {
1137
+ "type": "table",
1138
+ "name": "mlm_Balance"
1139
+ }
1140
+ ]
1141
+ },
1142
+ "mlm_Payout_byUser": {
1143
+ "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 })",
1144
+ "parameters": {
1145
+ "properties": [
1146
+ [
1147
+ "user"
1148
+ ]
1149
+ ],
1150
+ "table": "mlm_Payout"
1151
+ },
1152
+ "uid": "82b60b7b7c3ec928",
1153
+ "sources": [
1154
+ {
1155
+ "type": "table",
1156
+ "name": "mlm_Payout"
1157
+ }
1158
+ ]
1159
+ },
1160
+ "triggers_new": {
1161
+ "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 })",
1162
+ "parameters": {
1163
+ "tableName": "triggers"
1164
+ },
1165
+ "uid": "8cafc8ba61132c8c",
1166
+ "sources": [
1167
+ {
1168
+ "type": "table",
1169
+ "name": "triggers"
1170
+ }
1171
+ ]
1172
+ }
1173
+ },
1174
+ "logs": {
1175
+ "events": {
1176
+ "uid": "6f7cf29254450c31"
1177
+ }
1178
+ },
1179
+ "storage": {
1180
+ "noMetaSync": true,
1181
+ "noSync": true
1182
+ }
1183
+ },
1184
+ "wallet": {
1185
+ "tables": {
1186
+ "services": {
1187
+ "uid": "55f94054c5625cbb"
1188
+ },
1189
+ "eventConsumers": {
1190
+ "uid": "5617e5f969886c8d"
1191
+ },
1192
+ "eventReports": {
1193
+ "uid": "519bd703e2524982"
1194
+ },
1195
+ "commands": {
1196
+ "uid": "91d7cc1d1b763c79"
1197
+ },
1198
+ "triggerRoutes": {
1199
+ "uid": "d0003e88beb32cf0"
1200
+ },
1201
+ "triggers": {
1202
+ "uid": "c441d793c5dd611a"
1203
+ },
1204
+ "session_Session": {
1205
+ "uid": "01d5674cae75befa"
1206
+ },
1207
+ "user_User": {
1208
+ "uid": "4bba5165a9b9c06a"
1209
+ },
1210
+ "user_AuthenticatedUser": {
1211
+ "uid": "e20adbf0cf834e3f"
1212
+ },
1213
+ "email_SentEmail": {
1214
+ "uid": "6ba5b1c30787566d"
1215
+ },
1216
+ "email_Email": {
1217
+ "uid": "424b2ebf1a5ad411"
1218
+ },
1219
+ "passwordAuthentication_PasswordAuthentication": {
1220
+ "uid": "278f9380a174c859"
1221
+ },
1222
+ "passwordAuthentication_ResetPasswordAuthentication": {
1223
+ "uid": "3f1804faf491c866"
1224
+ },
1225
+ "userIdentification_Identification": {
1226
+ "uid": "f6ee079701d3217e"
1227
+ },
1228
+ "accessControl_Access": {
1229
+ "uid": "9175e212c0f9100f"
1230
+ },
1231
+ "accessControl_PublicAccess": {
1232
+ "uid": "fad77afa84e85150"
1233
+ },
1234
+ "accessControl_AccessRequest": {
1235
+ "uid": "83eddccdbe3b7f29"
1236
+ },
1237
+ "accessControl_AccessInvitation": {
1238
+ "uid": "5840b5d5d766ed18"
1239
+ },
1240
+ "security_Ban": {
1241
+ "uid": "144f160773e2fad5"
1242
+ },
1243
+ "security_Event": {
1244
+ "uid": "ad5397b155080713"
1245
+ },
1246
+ "notification_Notification": {
1247
+ "uid": "508b966a52caf4a5"
1248
+ },
1249
+ "notification_NotificationSetting": {
1250
+ "uid": "53134a7fd72e45d9"
1251
+ },
1252
+ "upload_Upload": {
1253
+ "uid": "aa435e368938c4d6"
1254
+ },
1255
+ "image_Image": {
1256
+ "uid": "413f67dc65f0b13f"
1257
+ },
1258
+ "content_Content": {
1259
+ "uid": "a6082b16f030f765"
1260
+ },
1261
+ "content_AdditionalContent": {
1262
+ "uid": "794e1dbee479c554"
1263
+ },
1264
+ "content_Page": {
1265
+ "uid": "7aa9636405153ba5"
1266
+ },
1267
+ "content_Metadata": {
1268
+ "uid": "b05d14592fed7202"
1269
+ },
1270
+ "secretCode_Code": {
1271
+ "uid": "a48701a6e06d0692"
1272
+ },
1273
+ "secretLink_Link": {
1274
+ "uid": "de2ac3fcd1b2544d"
1275
+ },
1276
+ "prosemirror_Document": {
1277
+ "uid": "0113397bca752dd5"
1278
+ },
1279
+ "prosemirror_StepsBucket": {
1280
+ "uid": "3543654811aaae13"
1281
+ },
1282
+ "prosemirror_Snapshot": {
1283
+ "uid": "44d161d957d2fce1"
1284
+ },
1285
+ "walletConnect_Channel": {
1286
+ "uid": "543c2084599f3046"
1287
+ },
1288
+ "walletConnect_Transaction": {
1289
+ "uid": "a2aadafb8afc9789"
1290
+ },
1291
+ "security_relations": {
1292
+ "uid": "6f2d104945398536"
1293
+ }
1294
+ },
1295
+ "indexes": {
1296
+ "session_Session_byKey": {
1297
+ "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 })",
1298
+ "parameters": {
1299
+ "properties": [
1300
+ [
1301
+ "key"
1302
+ ]
1303
+ ],
1304
+ "table": "session_Session"
1305
+ },
1306
+ "uid": "0113bfb99e682535",
1307
+ "sources": [
1308
+ {
1309
+ "type": "table",
1310
+ "name": "session_Session"
1311
+ }
1312
+ ]
1313
+ },
1314
+ "user_AuthenticatedUser_byUser": {
1315
+ "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 })",
1316
+ "parameters": {
1317
+ "properties": [
1318
+ [
1319
+ "user"
1320
+ ]
1321
+ ],
1322
+ "table": "user_AuthenticatedUser"
1323
+ },
1324
+ "uid": "6bab51eccd38ba17",
1325
+ "sources": [
1326
+ {
1327
+ "type": "table",
1328
+ "name": "user_AuthenticatedUser"
1329
+ }
1330
+ ]
1331
+ },
1332
+ "email_Email_byUser": {
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
+ "user"
1338
+ ]
1339
+ ],
1340
+ "table": "email_Email"
1341
+ },
1342
+ "uid": "6dc8ff6494fda3cc",
1343
+ "sources": [
1344
+ {
1345
+ "type": "table",
1346
+ "name": "email_Email"
1347
+ }
1348
+ ]
1349
+ },
1350
+ "passwordAuthentication_PasswordAuthentication_byUser": {
1351
+ "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 })",
1352
+ "parameters": {
1353
+ "properties": [
1354
+ [
1355
+ "User"
1356
+ ]
1357
+ ],
1358
+ "table": "passwordAuthentication_PasswordAuthentication"
1359
+ },
1360
+ "uid": "936f51da8fd98b93",
1361
+ "sources": [
1362
+ {
1363
+ "type": "table",
1364
+ "name": "passwordAuthentication_PasswordAuthentication"
1365
+ }
1366
+ ]
1367
+ },
1368
+ "passwordAuthentication_ResetPasswordAuthentication_byKey": {
1369
+ "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 })",
1370
+ "parameters": {
1371
+ "properties": [
1372
+ [
1373
+ "key"
1374
+ ]
1375
+ ],
1376
+ "table": "passwordAuthentication_ResetPasswordAuthentication"
1377
+ },
1378
+ "uid": "855e018c9224206f",
1379
+ "sources": [
1380
+ {
1381
+ "type": "table",
1382
+ "name": "passwordAuthentication_ResetPasswordAuthentication"
1383
+ }
1384
+ ]
1385
+ },
1386
+ "passwordAuthentication_ResetPasswordAuthentication_byUser": {
1387
+ "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 })",
1388
+ "parameters": {
1389
+ "properties": [
1390
+ [
1391
+ "User"
1392
+ ]
1393
+ ],
1394
+ "table": "passwordAuthentication_ResetPasswordAuthentication"
1395
+ },
1396
+ "uid": "78ffe353d64cae42",
1397
+ "sources": [
1398
+ {
1399
+ "type": "table",
1400
+ "name": "passwordAuthentication_ResetPasswordAuthentication"
1401
+ }
1402
+ ]
1403
+ },
1404
+ "accessControl_Access_bySessionOrUser": {
1405
+ "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 })",
1406
+ "parameters": {
1407
+ "properties": [
1408
+ [
1409
+ "sessionOrUserType"
1410
+ ],
1411
+ [
1412
+ "sessionOrUser"
1413
+ ]
1414
+ ],
1415
+ "table": "accessControl_Access"
1416
+ },
1417
+ "uid": "8ec02d958cdc5ea5",
1418
+ "sources": [
1419
+ {
1420
+ "type": "table",
1421
+ "name": "accessControl_Access"
1422
+ }
1423
+ ]
1424
+ },
1425
+ "accessControl_Access_byObject": {
1426
+ "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 })",
1427
+ "parameters": {
1428
+ "properties": [
1429
+ [
1430
+ "objectType"
1431
+ ],
1432
+ [
1433
+ "object"
1434
+ ]
1435
+ ],
1436
+ "table": "accessControl_Access"
1437
+ },
1438
+ "uid": "8cb6e67a1bf5187a",
1439
+ "sources": [
1440
+ {
1441
+ "type": "table",
1442
+ "name": "accessControl_Access"
1443
+ }
1444
+ ]
1445
+ },
1446
+ "accessControl_AccessRequest_bySessionOrUser": {
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
+ "sessionOrUserType"
1452
+ ],
1453
+ [
1454
+ "sessionOrUser"
1455
+ ]
1456
+ ],
1457
+ "table": "accessControl_AccessRequest"
1458
+ },
1459
+ "uid": "b2fcc2acbe732aae",
1460
+ "sources": [
1461
+ {
1462
+ "type": "table",
1463
+ "name": "accessControl_AccessRequest"
1464
+ }
1465
+ ]
1466
+ },
1467
+ "accessControl_AccessRequest_byObject": {
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
+ "objectType"
1473
+ ],
1474
+ [
1475
+ "object"
1476
+ ]
1477
+ ],
1478
+ "table": "accessControl_AccessRequest"
1479
+ },
1480
+ "uid": "6d959553b11a9fa1",
1481
+ "sources": [
1482
+ {
1483
+ "type": "table",
1484
+ "name": "accessControl_AccessRequest"
1485
+ }
1486
+ ]
1487
+ },
1488
+ "accessControl_AccessInvitation_byContactOrUser": {
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
+ "contactOrUserType"
1494
+ ],
1495
+ [
1496
+ "contactOrUser"
1497
+ ]
1498
+ ],
1499
+ "table": "accessControl_AccessInvitation"
1500
+ },
1501
+ "uid": "85621569d2fa1930",
1502
+ "sources": [
1503
+ {
1504
+ "type": "table",
1505
+ "name": "accessControl_AccessInvitation"
1506
+ }
1507
+ ]
1508
+ },
1509
+ "accessControl_AccessInvitation_byObject": {
1510
+ "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 })",
1511
+ "parameters": {
1512
+ "properties": [
1513
+ [
1514
+ "objectType"
1515
+ ],
1516
+ [
1517
+ "object"
1518
+ ]
1519
+ ],
1520
+ "table": "accessControl_AccessInvitation"
1521
+ },
1522
+ "uid": "2278cb0e0e7740a9",
1523
+ "sources": [
1524
+ {
1525
+ "type": "table",
1526
+ "name": "accessControl_AccessInvitation"
1527
+ }
1528
+ ]
1529
+ },
1530
+ "security_Ban_bans": {
1531
+ "code": "(async function(input, output, { table, property }) {\n const values = (obj) => {\n let at = obj\n for(const p of property) at = at && at[p]\n if(at === undefined) return []\n if(Array.isArray(at)) return at.map(v => JSON.stringify(v))\n return [at]\n }\n await input.table(table).onChange((obj, oldObj) => {\n if(obj && oldObj) {\n let pointers = obj && new Set(values(obj))\n let oldPointers = oldObj && new Set(values(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change({ id: pointer+'_'+obj.id, to: obj.id }, null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, { id: pointer+'_'+obj.id, to: obj.id })\n }\n } else if(obj) {\n values(obj).forEach(v => output.change({ id: v+'_'+obj.id, to: obj.id }, null))\n } else if(oldObj) {\n values(oldObj).forEach(v => output.change(null, { id: v+'_'+oldObj.id, to: oldObj.id }))\n }\n })\n })",
1532
+ "parameters": {
1533
+ "property": [
1534
+ "keys"
1535
+ ],
1536
+ "table": "security_Ban"
1537
+ },
1538
+ "uid": "6b482a9d169171ab",
1539
+ "sources": [
1540
+ {
1541
+ "type": "table",
1542
+ "name": "security_Ban"
1543
+ }
1544
+ ]
1545
+ },
1546
+ "security_Ban_actionBans": {
1547
+ "code": "(async function(input, output) {\n function prefixes(ban) {\n //output.debug(\"BAN\", ban)\n if(!ban.keys) return []\n if(!ban.actions) return []\n const v = ban.keys.length\n const w = ban.actions.length\n let res = new Array(v * w)\n for(let i = 0; i < v; i++) {\n for(let j = 0; j < w; j++) {\n const key = ban.keys[i]\n res[i * v + j] = `${ban.actions[j]}:${key.key}:${key.value}`\n }\n }\n //output.debug(\"BAN ACTIONS\", res)\n return res\n }\n function indexObject(prefix, obj) {\n //output.debug(\"BAN\", obj)\n return {\n id: prefix+'_'+obj.id,\n to: obj.id,\n type: obj.type,\n expire: obj.expire,\n actions: obj.actions\n }\n }\n await input.table(\"security_Ban\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n //output.debug(\"CHANGE!\", obj, oldObj)\n const pointers = obj && new Set(prefixes(obj))\n const oldPointers = oldObj && new Set(prefixes(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change(indexObject(pointer, obj), null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, indexObject(pointer, oldObj))\n }\n } else if(obj) {\n //output.debug(\"CREATE!\", obj, oldObj)\n prefixes(obj).forEach(v => output.change(indexObject(v, obj), null))\n } else if(oldObj) {\n //output.debug(\"DELETE!\", obj, oldObj)\n prefixes(oldObj).forEach(v => output.change(null, indexObject(v, oldObj)))\n }\n })\n })",
1548
+ "parameters": {},
1549
+ "uid": "4a2631d0a8d9c0d0",
1550
+ "sources": [
1551
+ {
1552
+ "type": "table",
1553
+ "name": "security_Ban"
1554
+ }
1555
+ ]
1556
+ },
1557
+ "security_Ban_actionBansByType": {
1558
+ "code": "(async function(input, output) {\n function prefixes(ban) {\n //output.debug(\"BAN\", ban)\n if(!ban.keys) return []\n if(!ban.actions) return []\n const v = ban.keys.length\n const w = ban.actions.length\n let res = new Array(v * w)\n for(let i = 0; i < v; i++) {\n for(let j = 0; j < w; j++) {\n const key = ban.keys[i]\n res[i * v + j] = `${ban.actions[j]}:${key.key}:${key.value}:${ban.type}:${ban.expire}`\n }\n }\n output.debug(\"BAN PREFIXES\", res)\n return res\n }\n function indexObject(prefix, obj) {\n //output.debug(\"BAN\", obj)\n return {\n id: prefix+'_'+obj.id,\n to: obj.id,\n type: obj.type,\n expire: obj.expire,\n actions: obj.actions\n }\n }\n await input.table(\"security_Ban\").onChange((obj, oldObj) => {\n if(obj && oldObj) {\n //output.debug(\"CHANGE!\", obj, oldObj)\n let pointers = obj && new Set(prefixes(obj))\n let oldPointers = oldObj && new Set(prefixes(oldObj))\n for(let pointer of pointers) {\n if(!!oldPointers.has(pointer)) output.change(indexObject(pointer, obj), null)\n }\n for(let pointer of oldPointers) {\n if(!!pointers.has(pointer)) output.change(null, indexObject(pointer, oldObj))\n }\n } else if(obj) {\n //output.debug(\"CREATE!\", obj, oldObj)\n prefixes(obj).forEach(v => output.change(indexObject(v, obj), null))\n } else if(oldObj) {\n //output.debug(\"DELETE!\", obj, oldObj)\n prefixes(oldObj).forEach(v => output.change(null, indexObject(v, oldObj)))\n }\n })\n })",
1559
+ "parameters": {},
1560
+ "uid": "b8ad553782842b4e",
1561
+ "sources": [
1562
+ {
1563
+ "type": "table",
1564
+ "name": "security_Ban"
1565
+ }
1566
+ ]
1567
+ },
1568
+ "security_Event_byKeyTypeAndTimestamp": {
1569
+ "code": "(async function(input, output) {\n async function spread(event) {\n for(const key in event.keys) {\n output.put({\n id: `${key}:${JSON.stringify(event.keys[key])}:${event.type}:${event.timestamp}_${event.id}`,\n type: event.type,\n timestamp: event.timestamp\n })\n }\n }\n await input.table('security_Event').onChange(\n (obj, oldObj) => spread(obj)\n )\n })",
1570
+ "parameters": {},
1571
+ "uid": "9781518ed029b0ad",
1572
+ "sources": [
1573
+ {
1574
+ "type": "table",
1575
+ "name": "security_Event"
1576
+ }
1577
+ ]
1578
+ },
1579
+ "notification_Notification_unreadNotifications": {
1580
+ "code": "(async function(input, output) {\n await input.table('notification_Notification')\n .map((obj) => obj && obj.readState == 'new' && ({\n id: `\"${obj.sessionOrUserType}\":\"${obj.sessionOrUser}\"_${obj.id}`,\n sessionOrUserType: obj.sessionOrUserType, sessionOrUser: obj.sessionOrUser,\n to: obj.id\n }))\n .to(output)\n })",
1581
+ "parameters": {},
1582
+ "uid": "fc786d79959b1ab7",
1583
+ "sources": [
1584
+ {
1585
+ "type": "table",
1586
+ "name": "notification_Notification"
1587
+ }
1588
+ ]
1589
+ },
1590
+ "notification_Notification_unreadNotificationsCount": {
1591
+ "code": "(async function(input, output) {\n const unreadIndex = await input.index('notification_Notification_unreadNotifications')\n await unreadIndex.onChange(\n async (obj, oldObj) => {\n const { sessionOrUserType, sessionOrUser } = obj || oldObj\n const group = `\"${sessionOrUserType}\":\"${sessionOrUser}\"`\n const prefix = group + '_'\n const count = await unreadIndex.count({ gt: prefix, lt: prefix + '\\xFF' })\n output.put({\n id: group,\n count\n })\n }\n )\n })",
1592
+ "parameters": {},
1593
+ "uid": "d4643e0cb2cca7ec",
1594
+ "sources": [
1595
+ {
1596
+ "type": "index",
1597
+ "name": "notification_Notification_unreadNotifications"
1598
+ }
1599
+ ]
1600
+ },
1601
+ "notification_Notification_bySessionOrUser": {
1602
+ "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 })",
1603
+ "parameters": {
1604
+ "properties": [
1605
+ [
1606
+ "sessionOrUserType"
1607
+ ],
1608
+ [
1609
+ "sessionOrUser"
1610
+ ]
1611
+ ],
1612
+ "table": "notification_Notification"
1613
+ },
1614
+ "uid": "f85ed5bf7d0ab05b",
1615
+ "sources": [
1616
+ {
1617
+ "type": "table",
1618
+ "name": "notification_Notification"
1619
+ }
1620
+ ]
1621
+ },
1622
+ "notification_Notification_bySessionOrUserAndTime": {
1623
+ "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 })",
1624
+ "parameters": {
1625
+ "properties": [
1626
+ [
1627
+ "sessionOrUserType"
1628
+ ],
1629
+ [
1630
+ "sessionOrUser"
1631
+ ],
1632
+ [
1633
+ "time"
1634
+ ]
1635
+ ],
1636
+ "table": "notification_Notification"
1637
+ },
1638
+ "uid": "8650c520a1bcc329",
1639
+ "sources": [
1640
+ {
1641
+ "type": "table",
1642
+ "name": "notification_Notification"
1643
+ }
1644
+ ]
1645
+ },
1646
+ "notification_Notification_bySessionOrUserAndReadState": {
1647
+ "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 })",
1648
+ "parameters": {
1649
+ "properties": [
1650
+ [
1651
+ "sessionOrUserType"
1652
+ ],
1653
+ [
1654
+ "sessionOrUser"
1655
+ ],
1656
+ [
1657
+ "readState"
1658
+ ]
1659
+ ],
1660
+ "table": "notification_Notification"
1661
+ },
1662
+ "uid": "c418c9547c39d30b",
1663
+ "sources": [
1664
+ {
1665
+ "type": "table",
1666
+ "name": "notification_Notification"
1667
+ }
1668
+ ]
1669
+ },
1670
+ "notification_NotificationSetting_byContact": {
1671
+ "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 })",
1672
+ "parameters": {
1673
+ "properties": [
1674
+ [
1675
+ "contactType"
1676
+ ],
1677
+ [
1678
+ "contact"
1679
+ ]
1680
+ ],
1681
+ "table": "notification_NotificationSetting"
1682
+ },
1683
+ "uid": "78eb236eed1fa518",
1684
+ "sources": [
1685
+ {
1686
+ "type": "table",
1687
+ "name": "notification_NotificationSetting"
1688
+ }
1689
+ ]
1690
+ },
1691
+ "notification_NotificationSetting_byNotification": {
1692
+ "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 })",
1693
+ "parameters": {
1694
+ "properties": [
1695
+ [
1696
+ "notificationType"
1697
+ ],
1698
+ [
1699
+ "notification"
1700
+ ]
1701
+ ],
1702
+ "table": "notification_NotificationSetting"
1703
+ },
1704
+ "uid": "8dc124a8ab4e38d5",
1705
+ "sources": [
1706
+ {
1707
+ "type": "table",
1708
+ "name": "notification_NotificationSetting"
1709
+ }
1710
+ ]
1711
+ },
1712
+ "image_Image_byOwner": {
1713
+ "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 })",
1714
+ "parameters": {
1715
+ "properties": [
1716
+ [
1717
+ "ownerType"
1718
+ ],
1719
+ [
1720
+ "owner"
1721
+ ]
1722
+ ],
1723
+ "table": "image_Image"
1724
+ },
1725
+ "uid": "f4db5652b790044e",
1726
+ "sources": [
1727
+ {
1728
+ "type": "table",
1729
+ "name": "image_Image"
1730
+ }
1731
+ ]
1732
+ },
1733
+ "content_AdditionalContent_byContent": {
1734
+ "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 })",
1735
+ "parameters": {
1736
+ "properties": [
1737
+ [
1738
+ "content"
1739
+ ]
1740
+ ],
1741
+ "table": "content_AdditionalContent"
1742
+ },
1743
+ "uid": "e90c249941fc3530",
1744
+ "sources": [
1745
+ {
1746
+ "type": "table",
1747
+ "name": "content_AdditionalContent"
1748
+ }
1749
+ ]
1750
+ },
1751
+ "secretCode_Code_byAuthenticationAndSecretCode": {
1752
+ "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 })",
1753
+ "parameters": {
1754
+ "properties": [
1755
+ [
1756
+ "authentication"
1757
+ ],
1758
+ [
1759
+ "secretCode"
1760
+ ]
1761
+ ],
1762
+ "table": "secretCode_Code"
1763
+ },
1764
+ "uid": "789cfb3e3a36233d",
1765
+ "sources": [
1766
+ {
1767
+ "type": "table",
1768
+ "name": "secretCode_Code"
1769
+ }
1770
+ ]
1771
+ },
1772
+ "secretCode_Code_byAuthentication": {
1773
+ "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 })",
1774
+ "parameters": {
1775
+ "properties": [
1776
+ [
1777
+ "authentication"
1778
+ ]
1779
+ ],
1780
+ "table": "secretCode_Code"
1781
+ },
1782
+ "uid": "7b78e313bc4dc04c",
1783
+ "sources": [
1784
+ {
1785
+ "type": "table",
1786
+ "name": "secretCode_Code"
1787
+ }
1788
+ ]
1789
+ },
1790
+ "secretLink_Link_bySecretCode": {
1791
+ "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 })",
1792
+ "parameters": {
1793
+ "properties": [
1794
+ [
1795
+ "secretCode"
1796
+ ]
1797
+ ],
1798
+ "table": "secretLink_Link"
1799
+ },
1800
+ "uid": "20e4a7fd2a2b9f07",
1801
+ "sources": [
1802
+ {
1803
+ "type": "table",
1804
+ "name": "secretLink_Link"
1805
+ }
1806
+ ]
1807
+ },
1808
+ "secretLink_Link_byAuthentication": {
1809
+ "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 })",
1810
+ "parameters": {
1811
+ "properties": [
1812
+ [
1813
+ "authentication"
1814
+ ]
1815
+ ],
1816
+ "table": "secretLink_Link"
1817
+ },
1818
+ "uid": "62a3ac6df9b60a7d",
1819
+ "sources": [
1820
+ {
1821
+ "type": "table",
1822
+ "name": "secretLink_Link"
1823
+ }
1824
+ ]
1825
+ },
1826
+ "prosemirror_Snapshot_list": {
1827
+ "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 })",
1828
+ "parameters": {
1829
+ "properties": [
1830
+ [
1831
+ "document"
1832
+ ],
1833
+ [
1834
+ "version"
1835
+ ]
1836
+ ],
1837
+ "table": "prosemirror_Snapshot"
1838
+ },
1839
+ "uid": "ad7594d896983b92",
1840
+ "sources": [
1841
+ {
1842
+ "type": "table",
1843
+ "name": "prosemirror_Snapshot"
1844
+ }
1845
+ ]
1846
+ },
1847
+ "walletConnect_Channel_byWalletId": {
1848
+ "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 })",
1849
+ "parameters": {
1850
+ "properties": [
1851
+ [
1852
+ "walletId"
1853
+ ]
1854
+ ],
1855
+ "table": "walletConnect_Channel"
1856
+ },
1857
+ "uid": "73400904e6fb92f5",
1858
+ "sources": [
1859
+ {
1860
+ "type": "table",
1861
+ "name": "walletConnect_Channel"
1862
+ }
1863
+ ]
1864
+ },
1865
+ "walletConnect_Transaction_byWalletIdAndState": {
1866
+ "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 })",
1867
+ "parameters": {
1868
+ "properties": [
1869
+ [
1870
+ "walletId"
1871
+ ],
1872
+ [
1873
+ "state"
1874
+ ],
1875
+ [
1876
+ "created"
1877
+ ]
1878
+ ],
1879
+ "table": "walletConnect_Transaction"
1880
+ },
1881
+ "uid": "baf89a593763b04d",
1882
+ "sources": [
1883
+ {
1884
+ "type": "table",
1885
+ "name": "walletConnect_Transaction"
1886
+ }
1887
+ ]
1888
+ },
1889
+ "walletConnect_Transaction_byChannel": {
1890
+ "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 })",
1891
+ "parameters": {
1892
+ "properties": [
1893
+ [
1894
+ "channel"
1895
+ ]
1896
+ ],
1897
+ "table": "walletConnect_Transaction"
1898
+ },
1899
+ "uid": "c32a8a93d9dd98a3",
1900
+ "sources": [
1901
+ {
1902
+ "type": "table",
1903
+ "name": "walletConnect_Transaction"
1904
+ }
1905
+ ]
1906
+ },
1907
+ "commands_new": {
1908
+ "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 })",
1909
+ "parameters": {
1910
+ "tableName": "commands"
1911
+ },
1912
+ "uid": "447e3a47977760b9",
1913
+ "sources": [
1914
+ {
1915
+ "type": "table",
1916
+ "name": "commands"
1917
+ }
1918
+ ]
1919
+ },
1920
+ "triggers_new": {
1921
+ "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 })",
1922
+ "parameters": {
1923
+ "tableName": "triggers"
1924
+ },
1925
+ "uid": "23944bc860fd76bf",
1926
+ "sources": [
1927
+ {
1928
+ "type": "table",
1929
+ "name": "triggers"
1930
+ }
1931
+ ]
1932
+ },
1933
+ "security_relations_eventTypeAndKeys": {
1934
+ "code": "(async function(input, output, { table }) {\n const mapper = (obj) => ({ id: obj.eventType+'_'+obj.keys+'_'+obj.id, to: obj.id })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1935
+ "parameters": {
1936
+ "table": "security_relations"
1937
+ },
1938
+ "uid": "0b6a1ed126569060",
1939
+ "sources": [
1940
+ {
1941
+ "type": "table",
1942
+ "name": "security_relations"
1943
+ }
1944
+ ]
1945
+ },
1946
+ "security_relations_sourceRelation": {
1947
+ "code": "(async function(input, output, { table }) {\n const mapper = (obj) => ({ id: obj.source+'_'+obj.relation+'_'+obj.id, to: obj.id })\n await input.table(table).onChange((obj, oldObj) =>\n output.change(obj && mapper(obj), oldObj && mapper(oldObj)) )\n })",
1948
+ "parameters": {
1949
+ "table": "security_relations"
1950
+ },
1951
+ "uid": "08f95b39ded424ad",
1952
+ "sources": [
1953
+ {
1954
+ "type": "table",
1955
+ "name": "security_relations"
1956
+ }
1957
+ ]
1958
+ }
1959
+ },
1960
+ "logs": {
1961
+ "events": {
1962
+ "uid": "ffd0dbbd59ef4611"
1963
+ }
1964
+ },
1965
+ "storage": {
1966
+ "noMetaSync": true,
1967
+ "noSync": true
1968
+ }
1969
+ }
1970
+ },
1971
+ "timestamp": 1687413815296
1972
+ }