@strapi/utils 4.10.0-beta.1 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/coverage/clover.xml +638 -0
  2. package/coverage/coverage-final.json +24 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +146 -0
  7. package/coverage/lcov-report/lib/async.js.html +223 -0
  8. package/coverage/lcov-report/lib/content-types.js.html +643 -0
  9. package/coverage/lcov-report/lib/env-helper.js.html +319 -0
  10. package/coverage/lcov-report/lib/errors.js.html +397 -0
  11. package/coverage/lcov-report/lib/format-yup-error.js.html +145 -0
  12. package/coverage/lcov-report/lib/hooks.js.html +415 -0
  13. package/coverage/lcov-report/lib/import-default.js.html +115 -0
  14. package/coverage/lcov-report/lib/index.html +326 -0
  15. package/coverage/lcov-report/lib/pagination.js.html +382 -0
  16. package/coverage/lcov-report/lib/parse-type.js.html +385 -0
  17. package/coverage/lcov-report/lib/policy.js.html +472 -0
  18. package/coverage/lcov-report/lib/print-value.js.html +241 -0
  19. package/coverage/lcov-report/lib/provider-factory.js.html +433 -0
  20. package/coverage/lcov-report/lib/relations.js.html +178 -0
  21. package/coverage/lcov-report/lib/sanitize/visitors/allowed-fields.js.html +367 -0
  22. package/coverage/lcov-report/lib/sanitize/visitors/index.html +191 -0
  23. package/coverage/lcov-report/lib/sanitize/visitors/index.js.html +112 -0
  24. package/coverage/lcov-report/lib/sanitize/visitors/remove-password.js.html +106 -0
  25. package/coverage/lcov-report/lib/sanitize/visitors/remove-private.js.html +118 -0
  26. package/coverage/lcov-report/lib/sanitize/visitors/remove-restricted-relations.js.html +316 -0
  27. package/coverage/lcov-report/lib/sanitize/visitors/restricted-fields.js.html +181 -0
  28. package/coverage/lcov-report/lib/string-formatting.js.html +322 -0
  29. package/coverage/lcov-report/lib/validators.js.html +445 -0
  30. package/coverage/lcov-report/prettify.css +1 -0
  31. package/coverage/lcov-report/prettify.js +2 -0
  32. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  33. package/coverage/lcov-report/sorter.js +196 -0
  34. package/package.json +2 -2
@@ -0,0 +1,385 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/parse-type.js</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">lib</a> parse-type.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">82.69% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>43/52</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">66.66% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>24/36</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'>4/4</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">88.88% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>40/45</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-yes">1x</span>
169
+ <span class="cline-any cline-yes">1x</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-yes">1x</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">12x</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-yes">12x</span>
177
+ <span class="cline-any cline-yes">3x</span>
178
+ <span class="cline-any cline-neutral">&nbsp;</span>
179
+ <span class="cline-any cline-yes">9x</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-yes">9x</span>
182
+ <span class="cline-any cline-yes">5x</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">4x</span>
186
+ <span class="cline-any cline-yes">4x</span>
187
+ <span class="cline-any cline-neutral">&nbsp;</span>
188
+ <span class="cline-any cline-yes">4x</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">7x</span>
193
+ <span class="cline-any cline-yes">7x</span>
194
+ <span class="cline-any cline-yes">7x</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-yes">7x</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-yes">4x</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-yes">4x</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-yes">1x</span>
205
+ <span class="cline-any cline-yes">4x</span>
206
+ <span class="cline-any cline-yes">4x</span>
207
+ <span class="cline-any cline-yes">4x</span>
208
+ <span class="cline-any cline-yes">4x</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-yes">1x</span>
211
+ <span class="cline-any cline-yes">1x</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
226
+ <span class="cline-any cline-yes">33x</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">10x</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">10x</span>
231
+ <span class="cline-any cline-yes">4x</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-yes">6x</span>
235
+ <span class="cline-any cline-yes">4x</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-yes">2x</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-no">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-yes">12x</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-yes">7x</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-yes">4x</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</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-yes">1x</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
267
+ &nbsp;
268
+ const _ = require('lodash');
269
+ const dates = require('date-fns');
270
+ &nbsp;
271
+ const timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;
272
+ &nbsp;
273
+ const parseTime = (value) =&gt; {
274
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (dates.isDate(value)) <span class="cstat-no" title="statement not covered" >return dates.format(value, 'HH:mm:ss.SSS');</span>
275
+ &nbsp;
276
+ if (typeof value !== 'string') {
277
+ throw new Error(`Expected a string, got a ${typeof value}`);
278
+ }
279
+ const result = value.match(timeRegex);
280
+ &nbsp;
281
+ if (result === null) {
282
+ throw new Error('Invalid time format, expected HH:mm:ss.SSS');
283
+ }
284
+ &nbsp;
285
+ const [, hours, minutes, seconds, fraction = '.000'] = result;
286
+ const fractionPart = _.padEnd(fraction.slice(1), 3, '0');
287
+ &nbsp;
288
+ return `${hours}:${minutes}:${seconds}.${fractionPart}`;
289
+ };
290
+ &nbsp;
291
+ const parseDate = (value) =&gt; {
292
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (dates.isDate(value)) <span class="cstat-no" title="statement not covered" >return dates.format(value, 'yyyy-MM-dd');</span>
293
+ try {
294
+ const date = dates.parseISO(value);
295
+ &nbsp;
296
+ if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd');
297
+ &nbsp;
298
+ throw new Error(`Invalid format, expected an ISO compatible date`);
299
+ } catch (error) {
300
+ throw new Error(`Invalid format, expected an ISO compatible date`);
301
+ }
302
+ };
303
+ &nbsp;
304
+ const parseDateTimeOrTimestamp = (value) =&gt; {
305
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (dates.isDate(value)) <span class="cstat-no" title="statement not covered" >return value;</span>
306
+ try {
307
+ const date = dates.parseISO(value);
308
+ if (dates.isValid(date)) return date;
309
+ &nbsp;
310
+ const milliUnixDate = dates.parse(value, 'T', new Date());
311
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (dates.isValid(milliUnixDate)) return milliUnixDate;
312
+ &nbsp;
313
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid format, expected a timestamp or an ISO date`);</span>
314
+ } catch (error) {
315
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid format, expected a timestamp or an ISO date`);</span>
316
+ }
317
+ };
318
+ &nbsp;
319
+ /**
320
+ * Cast basic values based on attribute type
321
+ * @param {Object} options - Options
322
+ * @param {string} options.type - type of the atribute
323
+ * @param {*} options.value - value tu cast
324
+ */
325
+ const parseType = ({ type, value, forceCast = false }) =&gt; {
326
+ switch (type) {
327
+ case 'boolean': {
328
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof value === 'boolean') <span class="cstat-no" title="statement not covered" >return value;</span>
329
+ &nbsp;
330
+ if (['true', 't', '1', 1].includes(value)) {
331
+ return true;
332
+ }
333
+ &nbsp;
334
+ if (['false', 'f', '0', 0].includes(value)) {
335
+ return false;
336
+ }
337
+ &nbsp;
338
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (forceCast) {
339
+ <span class="cstat-no" title="statement not covered" > return Boolean(value);</span>
340
+ }
341
+ &nbsp;
342
+ throw new Error('Invalid boolean input. Expected "t","1","true","false","0","f"');
343
+ }
344
+ <span class="branch-1 cbranch-no" title="branch not covered" > case 'integer':</span>
345
+ <span class="branch-2 cbranch-no" title="branch not covered" > case 'biginteger':</span>
346
+ <span class="branch-3 cbranch-no" title="branch not covered" > case 'float':</span>
347
+ <span class="branch-4 cbranch-no" title="branch not covered" > case 'decimal': {</span>
348
+ <span class="cstat-no" title="statement not covered" > return _.toNumber(value);</span>
349
+ }
350
+ case 'time': {
351
+ return parseTime(value);
352
+ }
353
+ case 'date': {
354
+ return parseDate(value);
355
+ }
356
+ <span class="branch-7 cbranch-no" title="branch not covered" > case 'timestamp':</span>
357
+ case 'datetime': {
358
+ return parseDateTimeOrTimestamp(value);
359
+ }
360
+ <span class="branch-9 cbranch-no" title="branch not covered" > default:</span>
361
+ <span class="cstat-no" title="statement not covered" > return value;</span>
362
+ }
363
+ };
364
+ &nbsp;
365
+ module.exports = parseType;
366
+ &nbsp;</pre></td></tr></table></pre>
367
+
368
+ <div class='push'></div><!-- for sticky footer -->
369
+ </div><!-- /wrapper -->
370
+ <div class='footer quiet pad2 space-top1 center small'>
371
+ Code coverage generated by
372
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
373
+ at 2023-03-15T08:52:41.153Z
374
+ </div>
375
+ <script src="../prettify.js"></script>
376
+ <script>
377
+ window.onload = function () {
378
+ prettyPrint();
379
+ };
380
+ </script>
381
+ <script src="../sorter.js"></script>
382
+ <script src="../block-navigation.js"></script>
383
+ </body>
384
+ </html>
385
+