cdk-common 2.0.190 → 2.0.191

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 (60) hide show
  1. package/.jsii +3 -3
  2. package/lib/main.js +1 -1
  3. package/node_modules/@aws-cdk/assert/package.json +8 -8
  4. package/node_modules/@aws-cdk/cfnspec/build-tools/create-missing-libraries.js +2 -2
  5. package/node_modules/@aws-cdk/cfnspec/package.json +3 -3
  6. package/node_modules/@aws-cdk/cfnspec/tsconfig.tsbuildinfo +1 -1
  7. package/node_modules/@aws-cdk/cloudformation-diff/package.json +4 -4
  8. package/package.json +2 -2
  9. package/node_modules/@aws-cdk/cfnspec/coverage/base.css +0 -224
  10. package/node_modules/@aws-cdk/cfnspec/coverage/block-navigation.js +0 -87
  11. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/index.html +0 -161
  12. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/massage-spec.ts.html +0 -295
  13. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/patch-set.ts.html +0 -907
  14. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/scrutiny.ts.html +0 -349
  15. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/validate-cfn.ts.html +0 -1093
  16. package/node_modules/@aws-cdk/cfnspec/coverage/favicon.png +0 -0
  17. package/node_modules/@aws-cdk/cfnspec/coverage/index.html +0 -161
  18. package/node_modules/@aws-cdk/cfnspec/coverage/junit.xml +0 -35617
  19. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/base.css +0 -224
  20. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/block-navigation.js +0 -87
  21. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/index.html +0 -161
  22. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/massage-spec.ts.html +0 -295
  23. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/patch-set.ts.html +0 -907
  24. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/scrutiny.ts.html +0 -349
  25. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/validate-cfn.ts.html +0 -1093
  26. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/favicon.png +0 -0
  27. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/index.html +0 -161
  28. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/canned-metrics-schema.ts.html +0 -304
  29. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/index.html +0 -116
  30. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics.ts.html +0 -445
  31. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.html +0 -131
  32. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.ts.html +0 -634
  33. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/augmentation.ts.html +0 -376
  34. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/base-types.ts.html +0 -172
  35. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.html +0 -191
  36. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.ts.html +0 -103
  37. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/property.ts.html +0 -1003
  38. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/resource-type.ts.html +0 -577
  39. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/specification.ts.html +0 -253
  40. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/prettify.css +0 -1
  41. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/prettify.js +0 -2
  42. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  43. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/sorter.js +0 -196
  44. package/node_modules/@aws-cdk/cfnspec/coverage/lcov.info +0 -1112
  45. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/canned-metrics-schema.ts.html +0 -304
  46. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/index.html +0 -116
  47. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics.ts.html +0 -445
  48. package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.html +0 -131
  49. package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.ts.html +0 -634
  50. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/augmentation.ts.html +0 -376
  51. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/base-types.ts.html +0 -172
  52. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.html +0 -191
  53. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.ts.html +0 -103
  54. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/property.ts.html +0 -1003
  55. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/resource-type.ts.html +0 -577
  56. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/specification.ts.html +0 -253
  57. package/node_modules/@aws-cdk/cfnspec/coverage/prettify.css +0 -1
  58. package/node_modules/@aws-cdk/cfnspec/coverage/prettify.js +0 -2
  59. package/node_modules/@aws-cdk/cfnspec/coverage/sort-arrow-sprite.png +0 -0
  60. package/node_modules/@aws-cdk/cfnspec/coverage/sorter.js +0 -196
@@ -1,907 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for build-tools/patch-set.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">build-tools</a> patch-set.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">54.23% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>64/118</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">37.25% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>19/51</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">55% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>11/20</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">55.85% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>62/111</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 medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a></td><td class="line-coverage quiet"><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">1x</span>
347
- <span class="cline-any cline-yes">1x</span>
348
- <span class="cline-any cline-yes">1x</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-yes">1x</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-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
366
- <span class="cline-any cline-no">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
369
- <span class="cline-any cline-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</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-no">&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-yes">1x</span>
390
- <span class="cline-any cline-yes">8x</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-yes">8x</span>
393
- <span class="cline-any cline-yes">16x</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">16x</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">12x</span>
398
- <span class="cline-any cline-yes">12x</span>
399
- <span class="cline-any cline-yes">11x</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">3x</span>
402
- <span class="cline-any cline-yes">3x</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-yes">1x</span>
406
- <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-neutral">&nbsp;</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">7x</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-yes">16x</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-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-yes">1x</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-yes">1x</span>
433
- <span class="cline-any cline-no">&nbsp;</span>
434
- <span class="cline-any cline-no">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">1x</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">13x</span>
448
- <span class="cline-any cline-yes">13x</span>
449
- <span class="cline-any cline-no">&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-yes">13x</span>
453
- <span class="cline-any cline-yes">17x</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">17x</span>
456
- <span class="cline-any cline-yes">2x</span>
457
- <span class="cline-any cline-yes">2x</span>
458
- <span class="cline-any cline-yes">2x</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">2x</span>
463
- <span class="cline-any cline-yes">1x</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">1x</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">1x</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-yes">15x</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-yes">3x</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">3x</span>
480
- <span class="cline-any cline-yes">3x</span>
481
- <span class="cline-any cline-yes">3x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">3x</span>
484
- <span class="cline-any cline-yes">3x</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-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>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-yes">3x</span>
513
- <span class="cline-any cline-yes">3x</span>
514
- <span class="cline-any cline-yes">3x</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-yes">5x</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-yes">5x</span>
520
- <span class="cline-any cline-yes">3x</span>
521
- <span class="cline-any cline-yes">3x</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-yes">3x</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">3x</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-yes">2x</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">2x</span>
544
- <span class="cline-any cline-yes">2x</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-yes">2x</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">3x</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-yes">6x</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">6x</span>
570
- <span class="cline-any cline-yes">1x</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-yes">5x</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">1x</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
615
- /**
616
- * Apply a JSON patch set into the given target file
617
- *
618
- * The sources can be taken from one or more directories.
619
- */
620
- import * as path from 'path';
621
- import * as fastJsonPatch from 'fast-json-patch';
622
- import * as fs from 'fs-extra';
623
- &nbsp;
624
- // eslint-disable-next-line @typescript-eslint/no-require-imports
625
- const sortJson = require('sort-json');
626
- &nbsp;
627
- export interface PatchOptions {
628
- readonly quiet?: boolean;
629
- }
630
- &nbsp;
631
- export type PatchSet = Record&lt;string, PatchSetElement&gt;;
632
- &nbsp;
633
- export type PatchSetElement =
634
- | { readonly type: 'fragment'; readonly data: any }
635
- | { readonly type: 'patch'; readonly data: any }
636
- | { readonly type: 'set'; readonly sources: PatchSet }
637
- ;
638
- &nbsp;
639
- export async function <span class="fstat-no" title="function not covered" >loadPatchSet(</span>sourceDirectory: string, relativeTo = <span class="branch-0 cbranch-no" title="branch not covered" >process.cwd())</span>: Promise&lt;PatchSet&gt; {
640
- const ret: PatchSet = <span class="cstat-no" title="statement not covered" >{};</span>
641
- &nbsp;
642
- const files = <span class="cstat-no" title="statement not covered" >await fs.readdir(sourceDirectory);</span>
643
- <span class="cstat-no" title="statement not covered" > for (const file of files) {</span>
644
- const fullFile = <span class="cstat-no" title="statement not covered" >path.join(sourceDirectory, file);</span>
645
- const relName = <span class="cstat-no" title="statement not covered" >path.relative(relativeTo, fullFile);</span>
646
- &nbsp;
647
- <span class="cstat-no" title="statement not covered" > if ((await fs.stat(fullFile)).isDirectory()) {</span>
648
- <span class="cstat-no" title="statement not covered" > ret[relName] = {</span>
649
- type: 'set',
650
- sources: await loadPatchSet(fullFile, sourceDirectory),
651
- };
652
- } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (file.endsWith('.json')) {</span>
653
- <span class="cstat-no" title="statement not covered" > ret[relName] = {</span>
654
- type: file.indexOf('patch') === -1 ? 'fragment' : 'patch',
655
- data: await fs.readJson(fullFile),
656
- };
657
- }
658
- }
659
- &nbsp;
660
- <span class="cstat-no" title="statement not covered" > return ret;</span>
661
- }
662
- &nbsp;
663
- export function evaluatePatchSet(sources: PatchSet, options: PatchOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
664
- const targetObject: any = {};
665
- &nbsp;
666
- for (const key of Object.keys(sources).sort()) {
667
- const value = sources[key];
668
- &nbsp;
669
- switch (value.type) {
670
- case 'fragment':
671
- log(key);
672
- merge(targetObject, value.data, []);
673
- break;
674
- case 'patch':
675
- patch(targetObject, value.data, (m) =&gt; log(`${key}: ${m}`));
676
- break;
677
- case 'set':
678
- const evaluated = evaluatePatchSet(value.sources, options);
679
- log(key);
680
- merge(targetObject, evaluated, []);
681
- break;
682
- }
683
- }
684
- &nbsp;
685
- return targetObject;
686
- &nbsp;
687
- function log(x: string) {
688
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!options.quiet) {
689
- // eslint-disable-next-line no-console
690
- <span class="cstat-no" title="statement not covered" > console.log(x);</span>
691
- }
692
- }
693
- }
694
- &nbsp;
695
- /**
696
- * Load a patch set from a directory
697
- */
698
- export async function <span class="fstat-no" title="function not covered" >applyPatchSet(</span>sourceDirectory: string, options: PatchOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
699
- const patches = <span class="cstat-no" title="statement not covered" >await loadPatchSet(sourceDirectory);</span>
700
- <span class="cstat-no" title="statement not covered" > return evaluatePatchSet(patches, options);</span>
701
- }
702
- &nbsp;
703
- /**
704
- * Load a patch set and write it out to a file
705
- */
706
- export async function <span class="fstat-no" title="function not covered" >applyAndWrite(</span>targetFile: string, sourceDirectory: string, options: PatchOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
707
- const model = <span class="cstat-no" title="statement not covered" >await applyPatchSet(sourceDirectory, options);</span>
708
- <span class="cstat-no" title="statement not covered" > await writeSorted(targetFile, model);</span>
709
- }
710
- &nbsp;
711
- export async function <span class="fstat-no" title="function not covered" >writeSorted(</span>targetFile: string, data: any) {
712
- <span class="cstat-no" title="statement not covered" > await fs.mkdirp(path.dirname(targetFile));</span>
713
- <span class="cstat-no" title="statement not covered" > await fs.writeJson(targetFile, sortJson(data), { spaces: 2 });</span>
714
- }
715
- &nbsp;
716
- function <span class="fstat-no" title="function not covered" >printSorted(</span>data: any) {
717
- <span class="cstat-no" title="statement not covered" > process.stdout.write(JSON.stringify(sortJson(data), undefined, 2));</span>
718
- }
719
- &nbsp;
720
- function merge(target: any, fragment: any, jsonPath: string[]) {
721
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!fragment) { <span class="cstat-no" title="statement not covered" >return; </span>}
722
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!target || typeof target !== 'object' || Array.isArray(target)) {
723
- <span class="cstat-no" title="statement not covered" > throw new Error(`Expected object, found: '${target}' at '$.${jsonPath.join('.')}'`);</span>
724
- }
725
- &nbsp;
726
- for (const key of Object.keys(fragment)) {
727
- <span class="missing-if-branch" title="if path not taken" >I</span>if (key.startsWith('$')) { <span class="cstat-no" title="statement not covered" >continue; </span>}
728
- &nbsp;
729
- if (key in target) {
730
- const specVal = target[key];
731
- const fragVal = fragment[key];
732
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof specVal !== typeof fragVal) {
733
- // eslint-disable-next-line max-len
734
- <span class="cstat-no" title="statement not covered" > throw new Error(`Attempted to merge ${JSON.stringify(fragVal)} into incompatible ${JSON.stringify(specVal)} at path ${jsonPath.join('/')}/${key}`);</span>
735
- }
736
- if (specVal == fragVal) {
737
- continue;
738
- }
739
- if (typeof specVal !== 'object') {
740
- // eslint-disable-next-line max-len
741
- throw new Error(`Conflict when attempting to merge ${JSON.stringify(fragVal)} into ${JSON.stringify(specVal)} at path ${jsonPath.join('/')}/${key}`);
742
- }
743
- <span class="cstat-no" title="statement not covered" > merge(specVal, fragVal, [...jsonPath, key]);</span>
744
- } else {
745
- target[key] = fragment[key];
746
- }
747
- }
748
- }
749
- &nbsp;
750
- function patch(target: any, fragment: any, log: (x: string) =&gt; void) {
751
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!fragment) { <span class="cstat-no" title="statement not covered" >return; </span>}
752
- &nbsp;
753
- const patches = findPatches(target, fragment);
754
- for (const p of patches) {
755
- log(p.description<span class="branch-0 cbranch-no" title="branch not covered" > ?? '</span>');
756
- &nbsp;
757
- try {
758
- fastJsonPatch.applyPatch(target, p.operations);
759
- } catch (e) {
760
- <span class="cstat-no" title="statement not covered" > throw new Error(`error applying patch: ${JSON.stringify(p, undefined, 2)}: ${e.message}`);</span>
761
- }
762
- }
763
- }
764
- &nbsp;
765
- interface Patch {
766
- readonly description?: string;
767
- readonly operations: Operation[];
768
- }
769
- &nbsp;
770
- type Operation =
771
- | { readonly op: 'add'; readonly path: string; readonly value: any }
772
- | { readonly op: 'remove'; readonly path: string }
773
- | { readonly op: 'replace'; readonly path: string; readonly value: any }
774
- | { readonly op: 'copy'; readonly path: string; readonly from: string }
775
- | { readonly op: 'move'; readonly path: string; readonly from: string }
776
- | { readonly op: 'test'; readonly path: string; readonly value: any }
777
- ;
778
- &nbsp;
779
- /**
780
- * Find the sets of patches to apply in a document
781
- *
782
- * Adjusts paths to be root-relative, which makes it possible to have paths
783
- * point outside the patch scope.
784
- */
785
- function findPatches(data: any, patchSource: any): Patch[] {
786
- const ret: Patch[] = [];
787
- recurse(data, patchSource, []);
788
- return ret;
789
- &nbsp;
790
- function recurse(actualData: any, fragment: any, jsonPath: string[]) {
791
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!fragment) { <span class="cstat-no" title="statement not covered" >return; </span>}
792
- &nbsp;
793
- if ('patch' in fragment) {
794
- const p = fragment.patch;
795
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!p.operations) {
796
- <span class="cstat-no" title="statement not covered" > throw new Error(`Patch needs 'operations' key, got: ${JSON.stringify(p)}`);</span>
797
- }
798
- ret.push({
799
- description: p.description,
800
- operations: p.operations.map((op: any) =&gt; adjustPaths(op, jsonPath)),
801
- });
802
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if ('patch:each' in fragment) {
803
- const p = <span class="cstat-no" title="statement not covered" >fragment['patch:each'];</span>
804
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof actualData !== 'object') {</span>
805
- <span class="cstat-no" title="statement not covered" > throw new Error(`Patch ${p.description}: expecting object in data, found '${actualData}'`);</span>
806
- }
807
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!p.operations) {</span>
808
- <span class="cstat-no" title="statement not covered" > throw new Error(`Patch needs 'operations' key, got: ${JSON.stringify(p)}`);</span>
809
- }
810
- <span class="cstat-no" title="statement not covered" > for (const key in actualData) {</span>
811
- <span class="cstat-no" title="statement not covered" > ret.push({</span>
812
- description: `${key}: ${p.description}`,
813
- operations: p.operations.map(<span class="fstat-no" title="function not covered" >(o</span>p: any) =&gt; <span class="cstat-no" title="statement not covered" >adjustPaths(op, [...jsonPath, key]))</span>,
814
- });
815
- }
816
- } else {
817
- for (const key of Object.keys(fragment)) {
818
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!(key in actualData)) {
819
- <span class="cstat-no" title="statement not covered" > actualData[key] = {};</span>
820
- }
821
- recurse(actualData[key], fragment[key], [...jsonPath, key]);
822
- }
823
- }
824
- }
825
- &nbsp;
826
- function adjustPaths(op: any, jsonPath: string[]): Operation {
827
- return {
828
- ...op,
829
- ...op.path ? { path: adjustPath(op.path, jsonPath) } : <span class="branch-1 cbranch-no" title="branch not covered" >undefined,</span>
830
- ...op.from ? { from: adjustPath(op.from, jsonPath) } : <span class="branch-1 cbranch-no" title="branch not covered" >undefined,</span>
831
- };
832
- }
833
- &nbsp;
834
- /**
835
- * Adjust path
836
- *
837
- * '$/' means from the root, otherwise interpret as relative path.
838
- */
839
- function adjustPath(originalPath: string, jsonPath: string[]): string {
840
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof originalPath !== 'string') {
841
- <span class="cstat-no" title="statement not covered" > throw new Error(`adjustPath: expected string, got ${JSON.stringify(originalPath)}`);</span>
842
- }
843
- if (originalPath.startsWith('$/')) {
844
- return originalPath.slice(1);
845
- }
846
- return jsonPath.map(p =&gt; `/${p}`).join('') + originalPath;
847
- }
848
- }
849
- &nbsp;
850
- &nbsp;
851
- /**
852
- * Run this file as a CLI tool, to apply a patch set from the command line
853
- */
854
- async function <span class="fstat-no" title="function not covered" >main(</span>args: string[]) {
855
- const quiet = <span class="cstat-no" title="statement not covered" >eatArg('-q', args) || eatArg('--quiet', args);</span>
856
- &nbsp;
857
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (args.length &lt; 1) {</span>
858
- <span class="cstat-no" title="statement not covered" > throw new Error('Usage: patch-set &lt;DIR&gt; [&lt;FILE&gt;]');</span>
859
- }
860
- &nbsp;
861
- const [dir, targetFile] = <span class="cstat-no" title="statement not covered" >args;</span>
862
- &nbsp;
863
- const model = <span class="cstat-no" title="statement not covered" >await applyPatchSet(dir, { quiet });</span>
864
- <span class="cstat-no" title="statement not covered" > if (targetFile) {</span>
865
- <span class="cstat-no" title="statement not covered" > await writeSorted(targetFile, model);</span>
866
- } else {
867
- <span class="cstat-no" title="statement not covered" > printSorted(model);</span>
868
- }
869
- }
870
- &nbsp;
871
- function <span class="fstat-no" title="function not covered" >eatArg(</span>arg: string, args: string[]) {
872
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; args.length; i++) {</span>
873
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (args[i] === arg) {</span>
874
- <span class="cstat-no" title="statement not covered" > args.splice(i, 1);</span>
875
- <span class="cstat-no" title="statement not covered" > return true;</span>
876
- }
877
- }
878
- <span class="cstat-no" title="statement not covered" > return false;</span>
879
- }
880
- &nbsp;
881
- <span class="missing-if-branch" title="if path not taken" >I</span>if (require.main === module) {
882
- <span class="cstat-no" title="statement not covered" > main(process.argv.slice(2)).catch(<span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
883
- <span class="cstat-no" title="statement not covered" > process.exitCode = 1;</span>
884
- // eslint-disable-next-line no-console
885
- <span class="cstat-no" title="statement not covered" > console.error(e.message);</span>
886
- });
887
- }
888
- &nbsp;</pre></td></tr></table></pre>
889
-
890
- <div class='push'></div><!-- for sticky footer -->
891
- </div><!-- /wrapper -->
892
- <div class='footer quiet pad2 space-top1 center small'>
893
- Code coverage generated by
894
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
895
- at Fri Jun 24 2022 21:27:03 GMT+0000 (Coordinated Universal Time)
896
- </div>
897
- <script src="../prettify.js"></script>
898
- <script>
899
- window.onload = function () {
900
- prettyPrint();
901
- };
902
- </script>
903
- <script src="../sorter.js"></script>
904
- <script src="../block-navigation.js"></script>
905
- </body>
906
- </html>
907
-