@nlabs/reaktor 0.10.6 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/package.json +12 -1
  2. package/.env +0 -1
  3. package/.env.example +0 -1
  4. package/DATABASE_I18N_GUIDE.md +0 -434
  5. package/TEST_UTILITIES_GUIDE.md +0 -360
  6. package/coverage/actions/groups.ts.html +0 -1039
  7. package/coverage/actions/images.ts.html +0 -2500
  8. package/coverage/actions/index.html +0 -116
  9. package/coverage/actions/notifications.ts.html +0 -223
  10. package/coverage/actions/posts.ts.html +0 -2356
  11. package/coverage/actions/tags.ts.html +0 -1000
  12. package/coverage/adapters/arangoAdapter.ts.html +0 -301
  13. package/coverage/adapters/fileAdapter.ts.html +0 -445
  14. package/coverage/adapters/index.html +0 -176
  15. package/coverage/adapters/postAdapter.ts.html +0 -436
  16. package/coverage/adapters/reaktorAdapter.ts.html +0 -310
  17. package/coverage/adapters/tagAdapter.ts.html +0 -409
  18. package/coverage/adapters/userAdapter.ts.html +0 -829
  19. package/coverage/analyticsUtils.ts.html +0 -286
  20. package/coverage/base.css +0 -224
  21. package/coverage/block-navigation.js +0 -87
  22. package/coverage/clover.xml +0 -6
  23. package/coverage/config.ts.html +0 -766
  24. package/coverage/coverage-final.json +0 -1
  25. package/coverage/favicon.png +0 -0
  26. package/coverage/index.html +0 -221
  27. package/coverage/lcov-report/base.css +0 -224
  28. package/coverage/lcov-report/block-navigation.js +0 -87
  29. package/coverage/lcov-report/favicon.png +0 -0
  30. package/coverage/lcov-report/index.html +0 -101
  31. package/coverage/lcov-report/prettify.css +0 -1
  32. package/coverage/lcov-report/prettify.js +0 -2
  33. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  34. package/coverage/lcov-report/sorter.js +0 -196
  35. package/coverage/lcov.info +0 -0
  36. package/coverage/mocks/file.ts.html +0 -118
  37. package/coverage/mocks/group.ts.html +0 -145
  38. package/coverage/mocks/image.ts.html +0 -142
  39. package/coverage/mocks/index.html +0 -176
  40. package/coverage/mocks/post.ts.html +0 -169
  41. package/coverage/mocks/tag.ts.html +0 -121
  42. package/coverage/mocks/user.ts.html +0 -271
  43. package/coverage/prettify.css +0 -1
  44. package/coverage/prettify.js +0 -2
  45. package/coverage/sort-arrow-sprite.png +0 -0
  46. package/coverage/sorter.js +0 -210
  47. package/coverage/testUtils.ts.html +0 -1309
  48. package/coverage/translationQueue.ts.html +0 -592
  49. package/coverage/types/error.ts.html +0 -145
  50. package/coverage/types/error.types.ts.html +0 -148
  51. package/coverage/types/index.html +0 -116
  52. package/coverage/utils/adapterUtils.ts.html +0 -163
  53. package/coverage/utils/analyticsUtils.ts.html +0 -286
  54. package/coverage/utils/arangodbUtils.ts.html +0 -463
  55. package/coverage/utils/authUtils.ts.html +0 -328
  56. package/coverage/utils/dbI18n.ts.html +0 -280
  57. package/coverage/utils/googleTranslate.ts.html +0 -385
  58. package/coverage/utils/index.html +0 -131
  59. package/coverage/utils/localeUtils.ts.html +0 -193
  60. package/coverage/utils/sessionUtils.ts.html +0 -211
  61. package/coverage/utils/testUtils.ts.html +0 -1309
  62. package/index.js +0 -5
  63. package/jpg:- +0 -0
  64. package/lex.config.mjs +0 -34
  65. package/tsconfig.build.json +0 -21
  66. package/tsconfig.lint.json +0 -33
  67. package/tsconfig.test.json +0 -31
@@ -1,1039 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for actions/groups.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">actions</a> groups.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">93.15% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>136/146</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>7/7</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">81.13% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>43/53</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">92.42% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>122/132</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-yes">1x</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-yes">1x</span>
394
- <span class="cline-any cline-yes">1x</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-yes">3x</span>
408
- <span class="cline-any cline-yes">3x</span>
409
- <span class="cline-any cline-yes">3x</span>
410
- <span class="cline-any cline-yes">3x</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-yes">3x</span>
420
- <span class="cline-any cline-yes">2x</span>
421
- <span class="cline-any cline-yes">1x</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-yes">1x</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">2x</span>
431
- <span class="cline-any cline-yes">2x</span>
432
- <span class="cline-any cline-yes">2x</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-yes">2x</span>
442
- <span class="cline-any cline-yes">1x</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">1x</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">1x</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">4x</span>
455
- <span class="cline-any cline-yes">4x</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">4x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">4x</span>
460
- <span class="cline-any cline-yes">4x</span>
461
- <span class="cline-any cline-yes">4x</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-yes">4x</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">3x</span>
482
- <span class="cline-any cline-yes">1x</span>
483
- <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-yes">1x</span>
490
- <span class="cline-any cline-yes">2x</span>
491
- <span class="cline-any cline-yes">2x</span>
492
- <span class="cline-any cline-yes">2x</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">2x</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">2x</span>
504
- <span class="cline-any cline-yes">1x</span>
505
- <span class="cline-any cline-yes">1x</span>
506
- <span class="cline-any cline-yes">1x</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-yes">1x</span>
514
- <span class="cline-any cline-yes">2x</span>
515
- <span class="cline-any cline-yes">2x</span>
516
- <span class="cline-any cline-yes">2x</span>
517
- <span class="cline-any cline-yes">2x</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">2x</span>
523
- <span class="cline-any cline-yes">1x</span>
524
- <span class="cline-any cline-yes">1x</span>
525
- <span class="cline-any cline-yes">1x</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-yes">1x</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-yes">4x</span>
538
- <span class="cline-any cline-yes">4x</span>
539
- <span class="cline-any cline-yes">4x</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-yes">4x</span>
542
- <span class="cline-any cline-yes">4x</span>
543
- <span class="cline-any cline-yes">4x</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-yes">4x</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">4x</span>
554
- <span class="cline-any cline-yes">1x</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-yes">1x</span>
562
- <span class="cline-any cline-yes">3x</span>
563
- <span class="cline-any cline-yes">3x</span>
564
- <span class="cline-any cline-yes">3x</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">3x</span>
570
- <span class="cline-any cline-yes">3x</span>
571
- <span class="cline-any cline-yes">3x</span>
572
- <span class="cline-any cline-yes">3x</span>
573
- <span class="cline-any cline-yes">3x</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-yes">3x</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">3x</span>
584
- <span class="cline-any cline-yes">2x</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-yes">2x</span>
588
- <span class="cline-any cline-yes">2x</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-yes">2x</span>
591
- <span class="cline-any cline-yes">2x</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-yes">1x</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-yes">1x</span>
601
- <span class="cline-any cline-yes">3x</span>
602
- <span class="cline-any cline-yes">3x</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">3x</span>
608
- <span class="cline-any cline-yes">3x</span>
609
- <span class="cline-any cline-yes">3x</span>
610
- <span class="cline-any cline-yes">3x</span>
611
- <span class="cline-any cline-yes">3x</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-yes">3x</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">3x</span>
619
- <span class="cline-any cline-yes">2x</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">2x</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-yes">2x</span>
625
- <span class="cline-any cline-yes">2x</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-yes">2x</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-yes">1x</span>
635
- <span class="cline-any cline-yes">2x</span>
636
- <span class="cline-any cline-yes">2x</span>
637
- <span class="cline-any cline-yes">2x</span>
638
- <span class="cline-any cline-yes">2x</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">2x</span>
644
- <span class="cline-any cline-yes">1x</span>
645
- <span class="cline-any cline-yes">1x</span>
646
- <span class="cline-any cline-yes">1x</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">1x</span>
654
- <span class="cline-any cline-yes">2x</span>
655
- <span class="cline-any cline-yes">2x</span>
656
- <span class="cline-any cline-yes">2x</span>
657
- <span class="cline-any cline-yes">2x</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">2x</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-yes">2x</span>
666
- <span class="cline-any cline-yes">1x</span>
667
- <span class="cline-any cline-yes">1x</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-no">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-yes">1x</span>
675
- <span class="cline-any cline-yes">4x</span>
676
- <span class="cline-any cline-yes">4x</span>
677
- <span class="cline-any cline-yes">4x</span>
678
- <span class="cline-any cline-yes">4x</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-yes">4x</span>
686
- <span class="cline-any cline-yes">3x</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-yes">3x</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-yes">3x</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-yes">1x</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
703
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
704
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
705
- */
706
- import {createHash, parseArangoId, parseChar, parseId} from '@nlabs/utils';
707
- import {aql, Database} from 'arangojs';
708
- import {AqlQuery} from 'arangojs/aql';
709
- import {EdgeCollection} from 'arangojs/collection';
710
- import {ArrayCursor} from 'arangojs/cursor';
711
- import flatten from 'lodash/flatten';
712
- import uniqBy from 'lodash/uniqBy';
713
- &nbsp;
714
- import type {ArangoDbLimit} from '../types/arangodb';
715
- import {ApiContext} from '../types/auth';
716
- import {ErrorTypes} from '../types/error';
717
- import {GroupEdgeType, GroupType, GroupUser} from '../types/groups';
718
- import {logError} from '../utils/analyticsUtils';
719
- import {getLimit} from '../utils/arangodbUtils';
720
- import {extractTags, updateTagsInItem} from './tags';
721
- &nbsp;
722
- const eventCategory: string = 'groups';
723
- &nbsp;
724
- export const getGroupList = (context: ApiContext, from: number, to: number): Promise&lt;GroupType[]&gt; =&gt; {
725
- const action: string = 'getListByApp';
726
- const {database} = context;
727
- const limit: ArangoDbLimit = getLimit(from, to);
728
- const aqlQry: string = `FOR g in groups
729
- LET users = (
730
- FOR u, l IN OUTBOUND g._id isGrouped
731
- RETURN MERGE (u, {type:l.type})
732
- )
733
- ${limit.aql}
734
- SORT g.added
735
- RETURN DISTINCT MERGE(g, {users:users})`;
736
- &nbsp;
737
- return database.query(aqlQry)
738
- .then((cursor: ArrayCursor) =&gt; cursor.all())
739
- .catch((error: Error) =&gt; logError({
740
- action,
741
- category: eventCategory,
742
- label: ErrorTypes.DATABASE_ERROR
743
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
744
- };
745
- &nbsp;
746
- export const getGroupListByUser = (context: ApiContext, from: number, to: number): Promise&lt;GroupType[]&gt; =&gt; {
747
- // const action: string = 'getListByUser';
748
- const {database, session: {userId: sessionId}} = context;
749
- const limit: ArangoDbLimit = getLimit(from, to);
750
- const aqlQry: string = `FOR g, e IN INBOUND "${`users/${sessionId}`}" isGrouped
751
- LET users = (
752
- FOR u, l IN OUTBOUND g._id isGrouped
753
- RETURN MERGE (u, {type:l.type})
754
- )
755
- ${limit.aql}
756
- SORT g.added
757
- RETURN DISTINCT MERGE(g, {users:users})`;
758
- &nbsp;
759
- return database.query(aqlQry)
760
- .then((cursor: ArrayCursor) =&gt; cursor.all())
761
- .catch((error: Error) =&gt; {
762
- throw error;
763
- });
764
- };
765
- &nbsp;
766
- export const getGroupListByTags = (
767
- context: ApiContext,
768
- tags: string[],
769
- from: number,
770
- to: number
771
- ): Promise&lt;GroupType[]&gt; =&gt; {
772
- const action: string = 'getListByTags';
773
- const {database} = context;
774
- &nbsp;
775
- return Promise.all(
776
- tags.map((tagName: string) =&gt; {
777
- const formatTagName: string = parseId(tagName);
778
- const limit: ArangoDbLimit = getLimit(from, to);
779
- const aqlQry: string = `FOR p, e IN OUTBOUND "${`tags/${formatTagName}`}" isTagged
780
- FOR u IN users
781
- LET likes = (
782
- FOR post, like IN INBOUND p._id likes
783
- FILTER like.value == 'like'
784
- RETURN like
785
- )
786
- LET dislikes = (
787
- FOR post, like IN INBOUND p._id likes
788
- FILTER like.value == 'dislike'
789
- RETURN like
790
- )
791
- FILTER e.type == 'post' &amp;&amp; p.userId == u._key
792
- ${limit.aql}
793
- SORT p.added
794
- RETURN DISTINCT MERGE(p, {user:u, likes:LENGTH(likes), dislikes:LENGTH(dislikes)})`;
795
- &nbsp;
796
- return database.query(aqlQry).then((cursor: ArrayCursor) =&gt; cursor.all());
797
- })
798
- )
799
- .then((results) =&gt; uniqBy(flatten(results), '_key'))
800
- .catch((error: Error) =&gt; logError({
801
- action,
802
- category: eventCategory,
803
- label: ErrorTypes.DATABASE_ERROR
804
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
805
- };
806
- &nbsp;
807
- export const getGroup = (context: ApiContext, itemId: string): Promise&lt;GroupType&gt; =&gt; {
808
- const action: string = 'getItem';
809
- const {database, session: {userId: sessionId}} = context;
810
- const formatItemId: string = parseId(itemId);
811
- &nbsp;
812
- const aqlQry: AqlQuery = aql`FOR g, e IN INBOUND ${`users/${sessionId}`} isGrouped
813
- FILTER g._key == ${formatItemId}
814
- LET users = (
815
- FOR u, l IN OUTBOUND g._id isGrouped
816
- RETURN MERGE (u, {type:l.type})
817
- )
818
- LIMIT 1
819
- RETURN DISTINCT MERGE(g, {users:users})`;
820
- &nbsp;
821
- return database.query(aqlQry)
822
- .then((cursor: ArrayCursor) =&gt; cursor.next())
823
- .then((group: GroupType) =&gt; group)
824
- .catch((error: Error) =&gt; logError({
825
- action,
826
- category: eventCategory,
827
- label: ErrorTypes.DATABASE_ERROR
828
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
829
- };
830
- &nbsp;
831
- export const getGroupDetails = (context: ApiContext, groupId: string): Promise&lt;GroupType&gt; =&gt; {
832
- const action: string = 'getDetails';
833
- const {database} = context;
834
- const formatGroupId: string = parseId(groupId);
835
- const aqlQry: AqlQuery = aql`FOR g IN groups
836
- FILTER g._key == ${formatGroupId}
837
- LIMIT 1
838
- RETURN g`;
839
- &nbsp;
840
- return database.query(aqlQry)
841
- .then((cursor: ArrayCursor) =&gt; cursor.next())
842
- .then((group: GroupType) =&gt; group)
843
- .catch((error: Error) =&gt; logError({
844
- action,
845
- category: eventCategory,
846
- label: ErrorTypes.DATABASE_ERROR
847
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
848
- };
849
- &nbsp;
850
- export const createGroupEdge = (
851
- database: Database,
852
- userId: string,
853
- groupId: string,
854
- ): Promise&lt;GroupEdgeType&gt; =&gt; {
855
- const action: string = 'createGroupEdge';
856
- const formatUserId: string = parseArangoId(userId);
857
- const formatGroupId: string = parseArangoId(groupId);
858
- &nbsp;
859
- const now: number = Date.now();
860
- const edgeCollection: EdgeCollection = database.collection('isGrouped');
861
- const edgeId: string = createHash(`group-${formatUserId}-${formatGroupId}`);
862
- &nbsp;
863
- const edge: any = {
864
- _from: formatUserId,
865
- _key: edgeId,
866
- _to: formatGroupId,
867
- added: now,
868
- type: 'groups'
869
- };
870
- &nbsp;
871
- return edgeCollection.save(edge, {returnNew: true})
872
- .catch((error: Error) =&gt; logError({
873
- action,
874
- category: eventCategory,
875
- label: ErrorTypes.DATABASE_ERROR
876
- }, error, {session: {userId: formatUserId}}).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
877
- };
878
- &nbsp;
879
- export const addGroup = (context: ApiContext, item: GroupType): Promise&lt;GroupType&gt; =&gt; {
880
- const action: string = 'add';
881
- const {database, session: {userId: sessionId}} = context;
882
- const now: number = Date.now();
883
- const {
884
- description = '',
885
- name = 'Untitled',
886
- type
887
- }: GroupType = item;
888
- const id: string = createHash(`group-${sessionId}`);
889
- const formatDesc: string = description.substr(0, 640);
890
- const formatType: string = parseChar(type, 16) || 'private';
891
- const insert: GroupType = {
892
- _key: id,
893
- added: now,
894
- description: formatDesc,
895
- modified: now,
896
- name,
897
- type: formatType
898
- };
899
- const aqlQry: AqlQuery = aql`INSERT ${insert} IN groups RETURN NEW`;
900
- &nbsp;
901
- return database.query(aqlQry)
902
- .then((cursor: ArrayCursor) =&gt; cursor.next())
903
- .then((group: GroupType) =&gt; {
904
- // Update linked tags
905
- const {_id: groupDocId}: GroupType = group;
906
- const tags = extractTags(formatDesc);
907
- &nbsp;
908
- return updateTagsInItem(context, {itemDocId: groupDocId, tags})
909
- .then(() =&gt; createGroupEdge(database, sessionId, groupDocId).then(() =&gt; group));
910
- })
911
- .catch((error: Error) =&gt; logError({
912
- action,
913
- category: eventCategory,
914
- label: ErrorTypes.DATABASE_ERROR
915
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
916
- };
917
- &nbsp;
918
- export const updateGroup = (context: ApiContext, item: GroupType): Promise&lt;GroupType&gt; =&gt; {
919
- const action: string = 'update';
920
- const {database} = context;
921
- const {
922
- description = '',
923
- id,
924
- name = 'Untitled'
925
- }: GroupType = item;
926
- const itemId: string = parseId(id);
927
- const now: number = Date.now();
928
- const formatDesc: string = description.substr(0, 640);
929
- const update: any = {
930
- description: formatDesc,
931
- modified: now,
932
- name
933
- };
934
- const aqlQry: AqlQuery = aql`UPDATE ${itemId} WITH ${update} IN groups RETURN NEW`;
935
- &nbsp;
936
- return database.query(aqlQry)
937
- .then((cursor: ArrayCursor) =&gt; cursor.next())
938
- .then((group: GroupType) =&gt; {
939
- const {_id: groupDocId} = group;
940
- &nbsp;
941
- // Update linked tags
942
- const tags = extractTags(description);
943
- return updateTagsInItem({database}, {itemDocId: groupDocId, tags}).then(() =&gt; group);
944
- })
945
- .catch((error: Error) =&gt; logError({
946
- action,
947
- category: eventCategory,
948
- label: ErrorTypes.DATABASE_ERROR
949
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
950
- };
951
- &nbsp;
952
- export const deleteGroup = (context: ApiContext, itemId: string): Promise&lt;GroupType&gt; =&gt; {
953
- const action: string = 'delete';
954
- const {database} = context;
955
- const formatItemId: string = parseId(itemId);
956
- const aqlQry: AqlQuery = aql`FOR g IN groups
957
- FILTER g._key == ${formatItemId}
958
- REMOVE g IN groups
959
- RETURN OLD`;
960
- &nbsp;
961
- return database.query(aqlQry)
962
- .then((cursor: ArrayCursor) =&gt; cursor.next())
963
- .then((group: GroupType) =&gt; group)
964
- .catch((error: Error) =&gt; logError({
965
- action,
966
- category: eventCategory,
967
- label: ErrorTypes.DATABASE_ERROR
968
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
969
- };
970
- &nbsp;
971
- export const getGroupsByReaction = (context: ApiContext, reaction: string): Promise&lt;GroupType[]&gt; =&gt; {
972
- const action: string = 'getGroupsByReaction';
973
- const {database, session: {userId: sessionId}} = context;
974
- const formatReaction: string = parseChar(reaction, 32);
975
- const userDocId: string = `users/${sessionId}`;
976
- &nbsp;
977
- // Query
978
- const aqlQry: AqlQuery = aql`FOR u, r IN OUTBOUND ${userDocId} hasReaction
979
- FILTER r.value == ${formatReaction}
980
- COLLECT reactionName = r.value INTO reactionItems
981
- RETURN {value: reactionName, count: LENGTH(reactionItems[*].r.value)}`;
982
- &nbsp;
983
- return database.query(aqlQry)
984
- .then((cursor: ArrayCursor) =&gt; cursor.all())
985
- .catch((error: Error) =&gt; logError({
986
- action,
987
- category: eventCategory,
988
- label: ErrorTypes.DATABASE_ERROR
989
- }, error, context).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
990
- };
991
- &nbsp;
992
- export const isGrouped = (database: Database, userId: string, groupId: string): Promise&lt;GroupUser&gt; =&gt; {
993
- const action: string = 'isGrouped';
994
- const formatUserId: string = parseId(userId);
995
- const formatGroupId: string = parseId(groupId);
996
- const aqlQry: AqlQuery = aql`FOR g IN groups
997
- FILTER g._key == ${formatGroupId}
998
- FOR u IN INBOUND g._id isGrouped
999
- FILTER u._key == ${formatUserId}
1000
- LIMIT 1
1001
- RETURN u`;
1002
- &nbsp;
1003
- return database.query(aqlQry)
1004
- .then((cursor: ArrayCursor) =&gt; cursor.all())
1005
- .then((results = []) =&gt; {
1006
- const isValid = !!results.length;
1007
- &nbsp;
1008
- return {
1009
- groupId,
1010
- isValid,
1011
- userId
1012
- };
1013
- })
1014
- .catch((error: Error) =&gt; logError({
1015
- action,
1016
- category: eventCategory,
1017
- label: ErrorTypes.DATABASE_ERROR
1018
- }, error, {session: {userId}}).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >null)</span>);
1019
- };
1020
- &nbsp;</pre></td></tr></table></pre>
1021
-
1022
- <div class='push'></div><!-- for sticky footer -->
1023
- </div><!-- /wrapper -->
1024
- <div class='footer quiet pad2 space-top1 center small'>
1025
- Code coverage generated by
1026
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1027
- at 2025-02-04T16:39:29.322Z
1028
- </div>
1029
- <script src="../prettify.js"></script>
1030
- <script>
1031
- window.onload = function () {
1032
- prettyPrint();
1033
- };
1034
- </script>
1035
- <script src="../sorter.js"></script>
1036
- <script src="../block-navigation.js"></script>
1037
- </body>
1038
- </html>
1039
-