@strapi/strapi 4.10.1 → 4.10.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 (131) hide show
  1. package/lib/commands/actions/{build → build-command}/command.js +1 -1
  2. package/lib/commands/actions/develop/action.js +22 -3
  3. package/lib/commands/actions/telemetry/enable/action.js +3 -3
  4. package/lib/commands/index.js +1 -1
  5. package/lib/core/loaders/apis.js +5 -0
  6. package/lib/utils/machine-id.js +2 -2
  7. package/package.json +16 -17
  8. package/coverage/clover.xml +0 -1613
  9. package/coverage/coverage-final.json +0 -48
  10. package/coverage/lcov-report/base.css +0 -224
  11. package/coverage/lcov-report/block-navigation.js +0 -87
  12. package/coverage/lcov-report/commands/__tests__/data-transfer/shared/index.html +0 -116
  13. package/coverage/lcov-report/commands/__tests__/data-transfer/shared/transfer.test.utils.js.html +0 -133
  14. package/coverage/lcov-report/commands/admin-create.js.html +0 -424
  15. package/coverage/lcov-report/commands/admin-reset.js.html +0 -241
  16. package/coverage/lcov-report/commands/generate-template.js.html +0 -373
  17. package/coverage/lcov-report/commands/index.html +0 -146
  18. package/coverage/lcov-report/commands/transfer/export.js.html +0 -619
  19. package/coverage/lcov-report/commands/transfer/import.js.html +0 -562
  20. package/coverage/lcov-report/commands/transfer/index.html +0 -146
  21. package/coverage/lcov-report/commands/transfer/transfer.js.html +0 -532
  22. package/coverage/lcov-report/commands/utils/helpers.js.html +0 -430
  23. package/coverage/lcov-report/commands/utils/index.html +0 -116
  24. package/coverage/lcov-report/core/registries/custom-fields.js.html +0 -301
  25. package/coverage/lcov-report/core/registries/index.html +0 -116
  26. package/coverage/lcov-report/core-api/controller/collection-type.js.html +0 -418
  27. package/coverage/lcov-report/core-api/controller/index.html +0 -161
  28. package/coverage/lcov-report/core-api/controller/index.js.html +0 -220
  29. package/coverage/lcov-report/core-api/controller/single-type.js.html +0 -274
  30. package/coverage/lcov-report/core-api/controller/transform.js.html +0 -376
  31. package/coverage/lcov-report/core-api/service/collection-type.js.html +0 -325
  32. package/coverage/lcov-report/core-api/service/index.html +0 -161
  33. package/coverage/lcov-report/core-api/service/index.js.html +0 -220
  34. package/coverage/lcov-report/core-api/service/pagination.js.html +0 -460
  35. package/coverage/lcov-report/core-api/service/single-type.js.html +0 -301
  36. package/coverage/lcov-report/favicon.png +0 -0
  37. package/coverage/lcov-report/index.html +0 -386
  38. package/coverage/lcov-report/load/filepath-to-prop-path.js.html +0 -151
  39. package/coverage/lcov-report/load/index.html +0 -116
  40. package/coverage/lcov-report/prettify.css +0 -1
  41. package/coverage/lcov-report/prettify.js +0 -2
  42. package/coverage/lcov-report/services/content-api/index.html +0 -116
  43. package/coverage/lcov-report/services/content-api/index.js.html +0 -307
  44. package/coverage/lcov-report/services/content-api/permissions/engine.js.html +0 -100
  45. package/coverage/lcov-report/services/content-api/permissions/index.html +0 -131
  46. package/coverage/lcov-report/services/content-api/permissions/index.js.html +0 -529
  47. package/coverage/lcov-report/services/content-api/permissions/providers/action.js.html +0 -142
  48. package/coverage/lcov-report/services/content-api/permissions/providers/condition.js.html +0 -142
  49. package/coverage/lcov-report/services/content-api/permissions/providers/index.html +0 -146
  50. package/coverage/lcov-report/services/content-api/permissions/providers/index.js.html +0 -112
  51. package/coverage/lcov-report/services/core-store.js.html +0 -520
  52. package/coverage/lcov-report/services/entity-service/attributes/index.html +0 -131
  53. package/coverage/lcov-report/services/entity-service/attributes/index.js.html +0 -178
  54. package/coverage/lcov-report/services/entity-service/attributes/transforms.js.html +0 -145
  55. package/coverage/lcov-report/services/entity-service/components.js.html +0 -1246
  56. package/coverage/lcov-report/services/entity-service/index.html +0 -146
  57. package/coverage/lcov-report/services/entity-service/index.js.html +0 -1120
  58. package/coverage/lcov-report/services/entity-service/params.js.html +0 -112
  59. package/coverage/lcov-report/services/entity-validator/__tests__/relations/utils/index.html +0 -116
  60. package/coverage/lcov-report/services/entity-validator/__tests__/relations/utils/relations.testdata.js.html +0 -544
  61. package/coverage/lcov-report/services/entity-validator/index.html +0 -131
  62. package/coverage/lcov-report/services/entity-validator/index.js.html +0 -1231
  63. package/coverage/lcov-report/services/entity-validator/validators.js.html +0 -733
  64. package/coverage/lcov-report/services/event-hub.js.html +0 -319
  65. package/coverage/lcov-report/services/fs.js.html +0 -259
  66. package/coverage/lcov-report/services/index.html +0 -161
  67. package/coverage/lcov-report/services/metrics/admin-user-hash.js.html +0 -148
  68. package/coverage/lcov-report/services/metrics/index.html +0 -206
  69. package/coverage/lcov-report/services/metrics/index.js.html +0 -265
  70. package/coverage/lcov-report/services/metrics/is-truthy.js.html +0 -112
  71. package/coverage/lcov-report/services/metrics/middleware.js.html +0 -184
  72. package/coverage/lcov-report/services/metrics/rate-limiter.js.html +0 -166
  73. package/coverage/lcov-report/services/metrics/sender.js.html +0 -394
  74. package/coverage/lcov-report/services/metrics/stringify-deep.js.html +0 -151
  75. package/coverage/lcov-report/services/utils/index.html +0 -116
  76. package/coverage/lcov-report/services/utils/upload-files.js.html +0 -322
  77. package/coverage/lcov-report/services/worker-queue.js.html +0 -262
  78. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  79. package/coverage/lcov-report/sorter.js +0 -196
  80. package/coverage/lcov-report/utils/convert-custom-field-type.js.html +0 -151
  81. package/coverage/lcov-report/utils/index.html +0 -146
  82. package/coverage/lcov-report/utils/machine-id.js.html +0 -127
  83. package/coverage/lcov-report/utils/url-from-segments.js.html +0 -121
  84. package/lib/commands/__tests__/commands.test.js +0 -20
  85. package/lib/commands/__tests__/commands.test.utils.js +0 -16
  86. package/lib/commands/actions/admin/create-user/__tests__/admin.create-user.test.js +0 -450
  87. package/lib/commands/actions/admin/reset-user-password/__tests__/admin.reset-user-password.test.js +0 -145
  88. package/lib/commands/actions/export/__tests__/export.test.js +0 -175
  89. package/lib/commands/actions/import/__tests__/import.test.js +0 -143
  90. package/lib/commands/actions/templates/generate/__tests__/templates.generate.js +0 -118
  91. package/lib/commands/actions/transfer/__tests__/transfer.test.js +0 -178
  92. package/lib/core/registries/__tests__/custom-fields.test.js +0 -152
  93. package/lib/core-api/__tests__/controller.test.js +0 -39
  94. package/lib/core-api/controller/__tests__/transform.test.js +0 -226
  95. package/lib/core-api/service/__tests__/index.test.js +0 -127
  96. package/lib/core-api/service/__tests__/pagination.test.js +0 -275
  97. package/lib/load/__tests__/filepath-to-prop-path.test.js +0 -30
  98. package/lib/middlewares/__tests__/errors.test.js +0 -21
  99. package/lib/services/__tests__/content-api-permissions.test.js +0 -291
  100. package/lib/services/__tests__/core-store.test.js +0 -148
  101. package/lib/services/__tests__/event-hub.test.js +0 -126
  102. package/lib/services/__tests__/fs.test.js +0 -78
  103. package/lib/services/__tests__/worker-queue.test.js +0 -47
  104. package/lib/services/entity-service/__tests__/entity-service-events.test.js +0 -117
  105. package/lib/services/entity-service/__tests__/entity-service.test.js +0 -587
  106. package/lib/services/entity-validator/__tests__/biginteger-validators.test.js +0 -220
  107. package/lib/services/entity-validator/__tests__/date-validators.test.js +0 -183
  108. package/lib/services/entity-validator/__tests__/datetime-validators.test.js +0 -183
  109. package/lib/services/entity-validator/__tests__/email-validators.test.js +0 -56
  110. package/lib/services/entity-validator/__tests__/enumeration-validators.test.js +0 -43
  111. package/lib/services/entity-validator/__tests__/float-validators.test.js +0 -278
  112. package/lib/services/entity-validator/__tests__/index.test.js +0 -609
  113. package/lib/services/entity-validator/__tests__/integer-validators.test.js +0 -278
  114. package/lib/services/entity-validator/__tests__/relations/attribute-level.test.js +0 -123
  115. package/lib/services/entity-validator/__tests__/relations/component-level.test.js +0 -275
  116. package/lib/services/entity-validator/__tests__/relations/dynamic-zone-level.test.js +0 -159
  117. package/lib/services/entity-validator/__tests__/relations/media-level.test.js +0 -74
  118. package/lib/services/entity-validator/__tests__/relations/utils/relations.testdata.js +0 -153
  119. package/lib/services/entity-validator/__tests__/string-validators.test.js +0 -374
  120. package/lib/services/entity-validator/__tests__/time-validators.test.js +0 -183
  121. package/lib/services/entity-validator/__tests__/timestamp-validators.test.js +0 -204
  122. package/lib/services/entity-validator/__tests__/uid-validators.test.js +0 -229
  123. package/lib/services/metrics/__tests__/admin-user-hash.test.js +0 -41
  124. package/lib/services/metrics/__tests__/index.test.js +0 -157
  125. package/lib/services/metrics/__tests__/is-truthy.js +0 -33
  126. package/lib/services/metrics/__tests__/middleware.test.js +0 -60
  127. package/lib/services/metrics/__tests__/rate-limiter.test.js +0 -50
  128. package/lib/services/metrics/__tests__/stringify-deep.test.js +0 -27
  129. package/lib/utils/__tests__/convert-custom-field-type.test.js +0 -69
  130. package/lib/utils/__tests__/url-from-segments.test.js +0 -40
  131. /package/lib/commands/actions/{build → build-command}/action.js +0 -0
@@ -1,733 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for services/entity-validator/validators.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">services/entity-validator</a> validators.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">98.07% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>51/52</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">96.87% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>31/32</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">95.23% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>20/21</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">98% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>49/50</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>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-yes">18x</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-yes">18x</span>
287
- <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-neutral">&nbsp;</span>
291
- <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-yes">18x</span>
299
- <span class="cline-any cline-yes">180x</span>
300
- <span class="cline-any cline-yes">197x</span>
301
- <span class="cline-any cline-yes">197x</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-yes">197x</span>
305
- <span class="cline-any cline-yes">12x</span>
306
- <span class="cline-any cline-yes">12x</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-yes">627x</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-yes">18x</span>
325
- <span class="cline-any cline-yes">76x</span>
326
- <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">18x</span>
336
- <span class="cline-any cline-yes">76x</span>
337
- <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">18x</span>
347
- <span class="cline-any cline-yes">25x</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-yes">18x</span>
358
- <span class="cline-any cline-yes">25x</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-yes">18x</span>
369
- <span class="cline-any cline-yes">13x</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">18x</span>
380
- <span class="cline-any cline-yes">13x</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <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-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-yes">18x</span>
391
- <span class="cline-any cline-yes">76x</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">18x</span>
407
- <span class="cline-any cline-yes">185x</span>
408
- <span class="cline-any cline-yes">128x</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">57x</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-yes">57x</span>
417
- <span class="cline-any cline-yes">9x</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
426
- <span class="cline-any cline-yes">48x</span>
427
- <span class="cline-any cline-yes">9x</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">39x</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">39x</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-yes">39x</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-yes">18x</span>
446
- <span class="cline-any cline-yes">76x</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</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-yes">18x</span>
454
- <span class="cline-any cline-yes">3x</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">18x</span>
458
- <span class="cline-any cline-yes">9x</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-yes">18x</span>
462
- <span class="cline-any cline-yes">12x</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-yes">18x</span>
466
- <span class="cline-any cline-yes">25x</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-yes">18x</span>
473
- <span class="cline-any cline-yes">13x</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-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">18x</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</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-yes">10x</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</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></td><td class="text"><pre class="prettyprint lang-js">'use strict';
499
- &nbsp;
500
- const _ = require('lodash');
501
- &nbsp;
502
- const { yup } = require('@strapi/utils');
503
- &nbsp;
504
- /**
505
- * @type {import('yup').StringSchema} StringSchema
506
- * @type {import('yup').NumberSchema} NumberSchema
507
- * @type {import('yup').AnySchema} AnySchema
508
- */
509
- &nbsp;
510
- /**
511
- * Utility function to compose validators
512
- */
513
- const composeValidators =
514
- (...fns) =&gt;
515
- (...args) =&gt; {
516
- let nextArgs = args;
517
- let validator = yup.mixed();
518
- &nbsp;
519
- // if we receive a schema then use it as base schema for nested composition
520
- if (yup.isSchema(args[0])) {
521
- validator = args[0];
522
- nextArgs = args.slice(1);
523
- }
524
- &nbsp;
525
- return fns.reduce((validator, fn) =&gt; fn(validator, ...nextArgs), validator);
526
- };
527
- &nbsp;
528
- /* Validator utils */
529
- &nbsp;
530
- /**
531
- * Adds minLength validator
532
- * @param {StringSchema} validator yup validator
533
- * @param {Object} metas
534
- * @param {{ minLength: Number }} metas.attr model attribute
535
- * @param {Object} options
536
- * @param {boolean} options.isDraft
537
- *
538
- * @returns {StringSchema}
539
- */
540
- const addMinLengthValidator = (validator, { attr }, { isDraft }) =&gt;
541
- _.isInteger(attr.minLength) &amp;&amp; !isDraft ? validator.min(attr.minLength) : validator;
542
- &nbsp;
543
- /**
544
- * Adds maxLength validator
545
- * @param {StringSchema} validator yup validator
546
- * @param {Object} metas
547
- * @param {{ maxLength: Number }} metas.attr model attribute
548
- *
549
- * @returns {StringSchema}
550
- */
551
- const addMaxLengthValidator = (validator, { attr }) =&gt;
552
- _.isInteger(attr.maxLength) ? validator.max(attr.maxLength) : validator;
553
- &nbsp;
554
- /**
555
- * Adds min integer validator
556
- * @param {NumberSchema} validator yup validator
557
- * @param {Object} metas
558
- * @param {{ min: Number }} metas.attr model attribute
559
- *
560
- * @returns {NumberSchema}
561
- */
562
- const addMinIntegerValidator = (validator, { attr }) =&gt;
563
- _.isNumber(attr.min) ? validator.min(_.toInteger(attr.min)) : validator;
564
- &nbsp;
565
- /**
566
- * Adds max integer validator
567
- * @param {NumberSchema} validator yup validator
568
- * @param {Object} metas
569
- * @param {{ max: Number }} metas.attr model attribute
570
- *
571
- * @returns {NumberSchema}
572
- */
573
- const addMaxIntegerValidator = (validator, { attr }) =&gt;
574
- _.isNumber(attr.max) ? validator.max(_.toInteger(attr.max)) : validator;
575
- &nbsp;
576
- /**
577
- * Adds min float/decimal validator
578
- * @param {NumberSchema} validator yup validator
579
- * @param {Object} metas
580
- * @param {{ min: Number }} metas.attr model attribute
581
- *
582
- * @returns {NumberSchema}
583
- */
584
- const addMinFloatValidator = (validator, { attr }) =&gt;
585
- _.isNumber(attr.min) ? validator.min(attr.min) : validator;
586
- &nbsp;
587
- /**
588
- * Adds max float/decimal validator
589
- * @param {NumberSchema} validator yup validator
590
- * @param {Object} metas model attribute
591
- * @param {{ max: Number }} metas.attr
592
- *
593
- * @returns {NumberSchema}
594
- */
595
- const addMaxFloatValidator = (validator, { attr }) =&gt;
596
- _.isNumber(attr.max) ? validator.max(attr.max) : validator;
597
- &nbsp;
598
- /**
599
- * Adds regex validator
600
- * @param {StringSchema} validator yup validator
601
- * @param {Object} metas model attribute
602
- * @param {{ regex: RegExp }} metas.attr
603
- *
604
- * @returns {StringSchema}
605
- */
606
- const addStringRegexValidator = (validator, { attr }) =&gt;
607
- _.isUndefined(attr.regex)
608
- ? validator
609
- : validator.matches(new RegExp(attr.regex), { excludeEmptyString: !attr.required });
610
- &nbsp;
611
- /**
612
- *
613
- * @param {AnySchema} validator
614
- * @param {Object} metas
615
- * @param {{ unique: Boolean, type: String }} metas.attr
616
- * @param {{ uid: String }} metas.model
617
- * @param {{ name: String, value: any }} metas.updatedAttribute
618
- * @param {Object} metas.entity
619
- *
620
- * @returns {AnySchema}
621
- */
622
- const addUniqueValidator = (validator, { attr, model, updatedAttribute, entity }) =&gt; {
623
- if (!attr.unique &amp;&amp; attr.type !== 'uid') {
624
- return validator;
625
- }
626
- &nbsp;
627
- return validator.test('unique', 'This attribute must be unique', async (value) =&gt; {
628
- /**
629
- * If the attribute value is `null` we want to skip the unique validation.
630
- * Otherwise it'll only accept a single `null` entry in the database.
631
- */
632
- if (_.isNil(updatedAttribute.value)) {
633
- return true;
634
- }
635
- &nbsp;
636
- /**
637
- * If the attribute is unchanged we skip the unique verification. This will
638
- * prevent the validator to be triggered in case the user activated the
639
- * unique constraint after already creating multiple entries with
640
- * the same attribute value for that field.
641
- */
642
- if (entity &amp;&amp; updatedAttribute.value === entity[updatedAttribute.name]) {
643
- return true;
644
- }
645
- &nbsp;
646
- const whereParams = entity
647
- ? { $and: [{ [updatedAttribute.name]: value }, { $not: { id: entity.id } }] }
648
- : { [updatedAttribute.name]: value };
649
- &nbsp;
650
- const record = await strapi.db.query(model.uid).findOne({
651
- select: ['id'],
652
- where: whereParams,
653
- });
654
- &nbsp;
655
- return !record;
656
- });
657
- };
658
- &nbsp;
659
- /* Type validators */
660
- &nbsp;
661
- const stringValidator = composeValidators(
662
- () =&gt; yup.string().transform((val, originalVal) =&gt; originalVal),
663
- addMinLengthValidator,
664
- addMaxLengthValidator,
665
- addStringRegexValidator,
666
- addUniqueValidator
667
- );
668
- &nbsp;
669
- const emailValidator = composeValidators(stringValidator, (validator) =&gt;
670
- validator.email().min(1, '${path} cannot be empty')
671
- );
672
- &nbsp;
673
- const uidValidator = composeValidators(stringValidator, (validator) =&gt;
674
- validator.matches(/^[A-Za-z0-9-_.~]*$/)
675
- );
676
- &nbsp;
677
- const enumerationValidator = ({ attr }) =&gt; {
678
- return yup.string().oneOf((Array.isArray(attr.enum) ? attr.enum : <span class="branch-1 cbranch-no" title="branch not covered" >[attr.enum])</span>.concat(null));
679
- };
680
- &nbsp;
681
- const integerValidator = composeValidators(
682
- () =&gt; yup.number().integer(),
683
- addMinIntegerValidator,
684
- addMaxIntegerValidator,
685
- addUniqueValidator
686
- );
687
- &nbsp;
688
- const floatValidator = composeValidators(
689
- () =&gt; yup.number(),
690
- addMinFloatValidator,
691
- addMaxFloatValidator,
692
- addUniqueValidator
693
- );
694
- &nbsp;
695
- module.exports = {
696
- string: stringValidator,
697
- text: stringValidator,
698
- richtext: stringValidator,
699
- password: stringValidator,
700
- email: emailValidator,
701
- enumeration: enumerationValidator,
702
- boolean: () =&gt; yup.boolean(),
703
- uid: uidValidator,
704
- json: <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >yup.mixed(),</span>
705
- integer: integerValidator,
706
- biginteger: composeValidators(addUniqueValidator),
707
- float: floatValidator,
708
- decimal: floatValidator,
709
- date: composeValidators(addUniqueValidator),
710
- time: composeValidators(addUniqueValidator),
711
- datetime: composeValidators(addUniqueValidator),
712
- timestamp: composeValidators(addUniqueValidator),
713
- };
714
- &nbsp;</pre></td></tr></table></pre>
715
-
716
- <div class='push'></div><!-- for sticky footer -->
717
- </div><!-- /wrapper -->
718
- <div class='footer quiet pad2 space-top1 center small'>
719
- Code coverage generated by
720
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
721
- at 2023-03-15T08:52:47.190Z
722
- </div>
723
- <script src="../../prettify.js"></script>
724
- <script>
725
- window.onload = function () {
726
- prettyPrint();
727
- };
728
- </script>
729
- <script src="../../sorter.js"></script>
730
- <script src="../../block-navigation.js"></script>
731
- </body>
732
- </html>
733
-