@autofleet/sadot 0.2.0-beta.0 → 0.2.0-beta.2

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 (72) hide show
  1. package/dist/hooks/enrich.js +1 -1
  2. package/dist/hooks/enrich.js.map +1 -1
  3. package/dist/repository/definition.js +9 -1
  4. package/dist/repository/definition.js.map +1 -1
  5. package/dist/repository/value.js +2 -0
  6. package/dist/repository/value.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/package.json +1 -1
  9. package/src/hooks/enrich.ts +2 -2
  10. package/src/repository/definition.ts +9 -0
  11. package/src/repository/value.ts +2 -0
  12. package/coverage/clover.xml +0 -780
  13. package/coverage/coverage-final.json +0 -35
  14. package/coverage/lcov-report/base.css +0 -224
  15. package/coverage/lcov-report/block-navigation.js +0 -87
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +0 -341
  18. package/coverage/lcov-report/prettify.css +0 -1
  19. package/coverage/lcov-report/prettify.js +0 -2
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +0 -196
  22. package/coverage/lcov-report/src/api/index.html +0 -116
  23. package/coverage/lcov-report/src/api/index.ts.html +0 -112
  24. package/coverage/lcov-report/src/api/v1/definition/index.html +0 -131
  25. package/coverage/lcov-report/src/api/v1/definition/index.ts.html +0 -394
  26. package/coverage/lcov-report/src/api/v1/definition/validations.ts.html +0 -190
  27. package/coverage/lcov-report/src/api/v1/errors.ts.html +0 -133
  28. package/coverage/lcov-report/src/api/v1/index.html +0 -131
  29. package/coverage/lcov-report/src/api/v1/index.ts.html +0 -112
  30. package/coverage/lcov-report/src/errors/index.html +0 -116
  31. package/coverage/lcov-report/src/errors/index.ts.html +0 -211
  32. package/coverage/lcov-report/src/events/index.html +0 -116
  33. package/coverage/lcov-report/src/events/index.ts.html +0 -169
  34. package/coverage/lcov-report/src/hooks/create.ts.html +0 -232
  35. package/coverage/lcov-report/src/hooks/enrich.ts.html +0 -400
  36. package/coverage/lcov-report/src/hooks/find.ts.html +0 -160
  37. package/coverage/lcov-report/src/hooks/index.html +0 -191
  38. package/coverage/lcov-report/src/hooks/index.ts.html +0 -130
  39. package/coverage/lcov-report/src/hooks/update.ts.html +0 -196
  40. package/coverage/lcov-report/src/hooks/workaround.ts.html +0 -226
  41. package/coverage/lcov-report/src/index.html +0 -116
  42. package/coverage/lcov-report/src/index.ts.html +0 -352
  43. package/coverage/lcov-report/src/models/CustomFieldDefinition.ts.html +0 -505
  44. package/coverage/lcov-report/src/models/CustomFieldValue.ts.html +0 -427
  45. package/coverage/lcov-report/src/models/index.html +0 -146
  46. package/coverage/lcov-report/src/models/index.ts.html +0 -259
  47. package/coverage/lcov-report/src/models/tests/AssociatedTestModel.ts.html +0 -256
  48. package/coverage/lcov-report/src/models/tests/TestModel.ts.html +0 -232
  49. package/coverage/lcov-report/src/models/tests/index.html +0 -131
  50. package/coverage/lcov-report/src/repository/definition.ts.html +0 -370
  51. package/coverage/lcov-report/src/repository/index.html +0 -131
  52. package/coverage/lcov-report/src/repository/value.ts.html +0 -379
  53. package/coverage/lcov-report/src/tests/api/index.html +0 -116
  54. package/coverage/lcov-report/src/tests/api/test-api.ts.html +0 -199
  55. package/coverage/lcov-report/src/tests/helpers/database-config.ts.html +0 -127
  56. package/coverage/lcov-report/src/tests/helpers/index.html +0 -131
  57. package/coverage/lcov-report/src/tests/helpers/index.ts.html +0 -130
  58. package/coverage/lcov-report/src/tests/mocks/definition.mock.ts.html +0 -292
  59. package/coverage/lcov-report/src/tests/mocks/events.mock.ts.html +0 -139
  60. package/coverage/lcov-report/src/tests/mocks/index.html +0 -146
  61. package/coverage/lcov-report/src/tests/mocks/testModel.ts.html +0 -196
  62. package/coverage/lcov-report/src/utils/db/index.html +0 -116
  63. package/coverage/lcov-report/src/utils/db/index.ts.html +0 -127
  64. package/coverage/lcov-report/src/utils/logger/index.html +0 -116
  65. package/coverage/lcov-report/src/utils/logger/index.ts.html +0 -97
  66. package/coverage/lcov-report/src/utils/validations/custom-fields.ts.html +0 -112
  67. package/coverage/lcov-report/src/utils/validations/custom.ts.html +0 -202
  68. package/coverage/lcov-report/src/utils/validations/index.html +0 -176
  69. package/coverage/lcov-report/src/utils/validations/index.ts.html +0 -142
  70. package/coverage/lcov-report/src/utils/validations/type.ts.html +0 -220
  71. package/coverage/lcov-report/src/utils/validations/validators.ts.html +0 -187
  72. package/coverage/lcov.info +0 -1533
@@ -1,232 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/hooks/create.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">src/hooks</a> create.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">96.29% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>26/27</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>12/14</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>5/6</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">95.45% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>21/22</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">10x</span>
116
- <span class="cline-any cline-yes">10x</span>
117
- <span class="cline-any cline-yes">10x</span>
118
- <span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-yes">10x</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-no">&nbsp;</span>
126
- <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-yes">14x</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-yes">147x</span>
135
- <span class="cline-any cline-yes">147x</span>
136
- <span class="cline-any cline-yes">147x</span>
137
- <span class="cline-any cline-yes">147x</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-yes">147x</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-yes">147x</span>
143
- <span class="cline-any cline-yes">147x</span>
144
- <span class="cline-any cline-yes">147x</span>
145
- <span class="cline-any cline-yes">14x</span>
146
- <span class="cline-any cline-yes">14x</span>
147
- <span class="cline-any cline-yes">14x</span>
148
- <span class="cline-any cline-yes">2x</span>
149
- <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">12x</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-yes">12x</span>
160
- <span class="cline-any cline-yes">133x</span>
161
- <span class="cline-any cline-yes">2x</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as ValueRepo from '../repository/value';
165
- import * as DefinitionRepo from '../repository/definition';
166
- import { MissingRequiredCustomFieldError } from '../errors';
167
- &nbsp;
168
- /**
169
- * A hook to create the custom fields when updating a model (more then one instance).
170
- */
171
- export const beforeBulkCreate = <span class="fstat-no" title="function not covered" >(o</span>ptions): void =&gt; {
172
- // This will activate the beforeCreate hook on each updating instance.
173
- // eslint-disable-next-line no-param-reassign
174
- <span class="cstat-no" title="statement not covered" > options.individualHooks = true;</span>
175
- };
176
- /**
177
- * A hook to create the custom fields when updating a model instance.
178
- * TODO - cleanup if update fail
179
- */
180
- export const beforeCreate = (scopeAttributes: string[]) =&gt; async (
181
- instance,
182
- options,
183
- ): Promise&lt;void&gt; =&gt; {
184
- const { fields } = options;
185
- const modelType = instance.constructor.name;
186
- const identifiers = scopeAttributes.map((attribute) =&gt; instance[attribute]);
187
- // get all model's required definitions
188
- const requiredFieldsNames = await DefinitionRepo.getRequiredFields(modelType,
189
- instance.id,
190
- identifiers);
191
- const customFieldsIdx = fields.indexOf('customFields');
192
- const { customFields } = instance;
193
- if (customFieldsIdx &gt; -1 &amp;&amp; customFields) {
194
- const fieldsNames = Object.keys(customFields);
195
- const missingFields = requiredFieldsNames.filter((name) =&gt; !fieldsNames.includes(name));
196
- if (missingFields<span class="branch-0 cbranch-no" title="branch not covered" >?.l</span>ength &gt; 0) {
197
- throw new MissingRequiredCustomFieldError(missingFields);
198
- }
199
- &nbsp;
200
- await ValueRepo.updateValues(
201
- modelType,
202
- instance.id,
203
- identifiers,
204
- customFields,
205
- { transaction: options.transaction },
206
- );
207
- // eslint-disable-next-line no-param-reassign
208
- fields.splice(customFieldsIdx, 1);
209
- } else if (requiredFieldsNames<span class="branch-0 cbranch-no" title="branch not covered" >?.l</span>ength &gt; 0) {
210
- throw new MissingRequiredCustomFieldError(requiredFieldsNames);
211
- }
212
- };
213
- &nbsp;</pre></td></tr></table></pre>
214
-
215
- <div class='push'></div><!-- for sticky footer -->
216
- </div><!-- /wrapper -->
217
- <div class='footer quiet pad2 space-top1 center small'>
218
- Code coverage generated by
219
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220
- at Sun May 14 2023 11:54:17 GMT+0300 (Israel Daylight Time)
221
- </div>
222
- <script src="../../prettify.js"></script>
223
- <script>
224
- window.onload = function () {
225
- prettyPrint();
226
- };
227
- </script>
228
- <script src="../../sorter.js"></script>
229
- <script src="../../block-navigation.js"></script>
230
- </body>
231
- </html>
232
-
@@ -1,400 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/hooks/enrich.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">src/hooks</a> enrich.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>53/53</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">90.24% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>37/41</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>17/17</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>47/47</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-yes">10x</span>
173
- <span class="cline-any cline-yes">10x</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-yes">10x</span>
181
- <span class="cline-any cline-yes">1605x</span>
182
- <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-yes">147x</span>
186
- <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-neutral">&nbsp;</span>
188
- <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-yes">42x</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-yes">252x</span>
194
- <span class="cline-any cline-yes">252x</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">2x</span>
199
- <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">250x</span>
202
- <span class="cline-any cline-yes">250x</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-yes">317x</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">250x</span>
209
- <span class="cline-any cline-yes">317x</span>
210
- <span class="cline-any cline-yes">317x</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-yes">250x</span>
213
- <span class="cline-any cline-yes">250x</span>
214
- <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-yes">250x</span>
218
- <span class="cline-any cline-neutral">&nbsp;</span>
219
- <span class="cline-any cline-neutral">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-yes">250x</span>
222
- <span class="cline-any cline-yes">33262x</span>
223
- <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-yes">317x</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-yes">250x</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-yes">250x</span>
237
- <span class="cline-any cline-yes">1605x</span>
238
- <span class="cline-any cline-yes">1605x</span>
239
- <span class="cline-any cline-yes">147x</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-yes">1605x</span>
242
- <span class="cline-any cline-yes">1605x</span>
243
- <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-yes">250x</span>
247
- <span class="cline-any cline-yes">317x</span>
248
- <span class="cline-any cline-yes">317x</span>
249
- <span class="cline-any cline-yes">317x</span>
250
- <span class="cline-any cline-yes">317x</span>
251
- <span class="cline-any cline-yes">147x</span>
252
- <span class="cline-any cline-yes">147x</span>
253
- <span class="cline-any cline-neutral">&nbsp;</span>
254
- <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">317x</span>
256
- <span class="cline-any cline-yes">317x</span>
257
- <span class="cline-any cline-yes">317x</span>
258
- <span class="cline-any cline-yes">317x</span>
259
- <span class="cline-any cline-yes">308x</span>
260
- <span class="cline-any cline-yes">44879x</span>
261
- <span class="cline-any cline-yes">43276x</span>
262
- <span class="cline-any cline-neutral">&nbsp;</span>
263
- <span class="cline-any cline-neutral">&nbsp;</span>
264
- <span class="cline-any cline-neutral">&nbsp;</span>
265
- <span class="cline-any cline-neutral">&nbsp;</span>
266
- <span class="cline-any cline-yes">317x</span>
267
- <span class="cline-any cline-yes">317x</span>
268
- <span class="cline-any cline-yes">8x</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-yes">8x</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-neutral">&nbsp;</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">10x</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable no-param-reassign */
277
- import * as ValueRepo from '../repository/value';
278
- import * as DefinitionRepo from '../repository/definition';
279
- import CustomFieldValue from '../models/CustomFieldValue';
280
- import { SerializedCustomFields } from '../types/definition';
281
- &nbsp;
282
- /**
283
- * Serialize custom fields value into the format of {[name] -&gt; [fieldData]}
284
- */
285
- const serializeCustomFields = (customFieldValues: CustomFieldValue[]): SerializedCustomFields =&gt; {
286
- const customFields = customFieldValues.reduce((acc, cfv) =&gt; ({
287
- ...acc,
288
- [cfv.customFieldDefinition.name]: cfv.value,
289
- }), {});
290
- return customFields;
291
- };
292
- /**
293
- * A hook to attach the custom fields when fetching a model instances.
294
- */
295
- const enrichResults = (scopeAttributes: string[]) =&gt; async (
296
- instancesOrInstance: any | any[],
297
- options,
298
- ): Promise&lt;void&gt; =&gt; {
299
- if (
300
- options.originalAttributes?.length &gt; 0
301
- &amp;&amp; !options.originalAttributes<span class="branch-0 cbranch-no" title="branch not covered" >?.i</span>ncludes<span class="branch-0 cbranch-no" title="branch not covered" >?.('</span>customFields')
302
- ) {
303
- return;
304
- }
305
- &nbsp;
306
- const primaryKey = 'id';
307
- let instances = Array.isArray(instancesOrInstance)
308
- ? instancesOrInstance
309
- : [instancesOrInstance];
310
- &nbsp;
311
- instances = instances.filter((instance) =&gt; !!instance);
312
- &nbsp;
313
- const identifiers = instances.map((instance) =&gt;
314
- scopeAttributes
315
- .map((attr) =&gt; instance[attr])).flat();
316
- &nbsp;
317
- const uniqueIdentifiers = [...new Set(identifiers)].filter((identifier) =&gt; !!identifier);
318
- const identifierCustomFieldDefinitionsMapping = uniqueIdentifiers.reduce((map, identifier) =&gt; ({
319
- ...map,
320
- [identifier]: [],
321
- }), {});
322
- const customFieldDefinitions = await DefinitionRepo.findAll(
323
- { entityId: uniqueIdentifiers, modelType: instances[0].constructor.name },
324
- { transaction: options.transaction },
325
- );
326
- customFieldDefinitions.forEach((cfd) =&gt; {
327
- identifierCustomFieldDefinitionsMapping[cfd.entityId].push(cfd);
328
- });
329
- &nbsp;
330
- // Get the values per instates ids:
331
- const instancesIds = instances.map((i) =&gt; i[primaryKey]);
332
- &nbsp;
333
- const customFieldValues = await ValueRepo.findValuesByModelIds(
334
- instancesIds,
335
- { transaction: options.transaction },
336
- );
337
- &nbsp;
338
- // Group fields by modelId
339
- const valuesGroupByInstance: {
340
- [modelId: string]: CustomFieldValue[];
341
- } = customFieldValues.reduce((acc, v) =&gt; {
342
- const { modelId } = v;
343
- if (!acc[modelId]) {
344
- acc[modelId] = [];
345
- }
346
- acc[modelId].push(v);
347
- return acc;
348
- }, {});
349
- &nbsp;
350
- // Attach custom fields to the instances
351
- instances.forEach((instance) =&gt; {
352
- const customFields = {};
353
- const { id } = instance;
354
- const instanceValues = valuesGroupByInstance[id];
355
- if (instanceValues) {
356
- const serializedCustomFields = serializeCustomFields(instanceValues);
357
- Object.assign(customFields, serializedCustomFields);
358
- }
359
- &nbsp;
360
- scopeAttributes.forEach((attribute) =&gt; {
361
- const identifier = instance[attribute];
362
- const entityCustomFieldDefinitions = identifierCustomFieldDefinitionsMapping[identifier];
363
- if (entityCustomFieldDefinitions<span class="branch-0 cbranch-no" title="branch not covered" >?.l</span>ength &gt; 0) {
364
- entityCustomFieldDefinitions.forEach((customFieldDefinition) =&gt; {
365
- if (customFields[customFieldDefinition.name] === undefined) {
366
- customFields[customFieldDefinition.name] = null;
367
- }
368
- });
369
- }
370
- });
371
- instance.customFields = customFields;
372
- options.attributesToRemove?.forEach?.((attribute) =&gt; {
373
- delete instance.dataValues?.[attribute];
374
- // if raw:
375
- delete instance<span class="branch-0 cbranch-no" title="branch not covered" >?.[a</span>ttribute];
376
- });
377
- });
378
- };
379
- &nbsp;
380
- export default enrichResults;
381
- &nbsp;</pre></td></tr></table></pre>
382
-
383
- <div class='push'></div><!-- for sticky footer -->
384
- </div><!-- /wrapper -->
385
- <div class='footer quiet pad2 space-top1 center small'>
386
- Code coverage generated by
387
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
388
- at Sun May 14 2023 11:54:17 GMT+0300 (Israel Daylight Time)
389
- </div>
390
- <script src="../../prettify.js"></script>
391
- <script>
392
- window.onload = function () {
393
- prettyPrint();
394
- };
395
- </script>
396
- <script src="../../sorter.js"></script>
397
- <script src="../../block-navigation.js"></script>
398
- </body>
399
- </html>
400
-