apostrophe 2.220.9 → 2.221.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
- package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
- package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
- package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
- package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
- package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
- package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
- package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
- package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
- package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -0
- package/CHANGELOG.md +12 -0
- package/coverage/a3/defaults.js.html +253 -0
- package/coverage/a3/index.html +131 -0
- package/coverage/a3/index.js.html +2338 -0
- package/coverage/a3/lib/escape-host.js.html +109 -0
- package/coverage/a3/lib/index.html +176 -0
- package/coverage/a3/lib/mongodb-connect.js.html +250 -0
- package/coverage/a3/lib/moog-require.js.html +790 -0
- package/coverage/a3/lib/moog.js.html +1711 -0
- package/coverage/a3/lib/opentelemetry.js.html +517 -0
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +931 -0
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +115 -0
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +1105 -0
- package/coverage/a3/modules/@apostrophecms/archive-page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +97 -0
- package/coverage/a3/modules/@apostrophecms/area/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/area/index.js.html +2104 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +469 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +286 -0
- package/coverage/a3/modules/@apostrophecms/asset/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/index.js.html +3982 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +346 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +289 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +148 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +184 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +238 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +958 -0
- package/coverage/a3/modules/@apostrophecms/attachment/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +3676 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +205 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +328 -0
- package/coverage/a3/modules/@apostrophecms/busy/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/busy/index.js.html +145 -0
- package/coverage/a3/modules/@apostrophecms/cache/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/cache/index.js.html +424 -0
- package/coverage/a3/modules/@apostrophecms/db/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/db/index.js.html +640 -0
- package/coverage/a3/modules/@apostrophecms/doc/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc/index.js.html +3937 -0
- package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +622 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +8638 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +319 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/email/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/email/index.js.html +301 -0
- package/coverage/a3/modules/@apostrophecms/error/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/error/index.js.html +202 -0
- package/coverage/a3/modules/@apostrophecms/express/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/express/index.js.html +2116 -0
- package/coverage/a3/modules/@apostrophecms/file/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/file/index.js.html +367 -0
- package/coverage/a3/modules/@apostrophecms/file-tag/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +127 -0
- package/coverage/a3/modules/@apostrophecms/global/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/global/index.js.html +535 -0
- package/coverage/a3/modules/@apostrophecms/home-page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +94 -0
- package/coverage/a3/modules/@apostrophecms/html-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +271 -0
- package/coverage/a3/modules/@apostrophecms/http/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/http/index.js.html +976 -0
- package/coverage/a3/modules/@apostrophecms/i18n/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +2083 -0
- package/coverage/a3/modules/@apostrophecms/image/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image/index.js.html +1486 -0
- package/coverage/a3/modules/@apostrophecms/image-tag/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +127 -0
- package/coverage/a3/modules/@apostrophecms/image-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +145 -0
- package/coverage/a3/modules/@apostrophecms/job/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/job/index.js.html +1321 -0
- package/coverage/a3/modules/@apostrophecms/launder/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/launder/index.js.html +124 -0
- package/coverage/a3/modules/@apostrophecms/lock/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/lock/index.js.html +676 -0
- package/coverage/a3/modules/@apostrophecms/login/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/login/index.js.html +2617 -0
- package/coverage/a3/modules/@apostrophecms/migration/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/migration/index.js.html +970 -0
- package/coverage/a3/modules/@apostrophecms/modal/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/modal/index.js.html +193 -0
- package/coverage/a3/modules/@apostrophecms/module/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/module/index.js.html +2500 -0
- package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +547 -0
- package/coverage/a3/modules/@apostrophecms/module/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/notification/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/notification/index.js.html +1315 -0
- package/coverage/a3/modules/@apostrophecms/oembed/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +781 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +161 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +178 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +124 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +256 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +322 -0
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +268 -0
- package/coverage/a3/modules/@apostrophecms/page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page/index.js.html +6955 -0
- package/coverage/a3/modules/@apostrophecms/page/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +568 -0
- package/coverage/a3/modules/@apostrophecms/page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +1501 -0
- package/coverage/a3/modules/@apostrophecms/pager/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/pager/index.js.html +232 -0
- package/coverage/a3/modules/@apostrophecms/permission/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/permission/index.js.html +1057 -0
- package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +160 -0
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +1051 -0
- package/coverage/a3/modules/@apostrophecms/piece-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +3103 -0
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +157 -0
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +1363 -0
- package/coverage/a3/modules/@apostrophecms/schema/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/schema/index.js.html +4603 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +3502 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +703 -0
- package/coverage/a3/modules/@apostrophecms/search/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/search/index.js.html +1222 -0
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +343 -0
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +595 -0
- package/coverage/a3/modules/@apostrophecms/task/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/task/index.js.html +1147 -0
- package/coverage/a3/modules/@apostrophecms/template/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/template/index.js.html +2731 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +559 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +310 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +325 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +146 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +490 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +658 -0
- package/coverage/a3/modules/@apostrophecms/ui/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/ui/index.js.html +181 -0
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +286 -0
- package/coverage/a3/modules/@apostrophecms/url/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/url/index.js.html +733 -0
- package/coverage/a3/modules/@apostrophecms/user/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/user/index.js.html +1684 -0
- package/coverage/a3/modules/@apostrophecms/user/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +157 -0
- package/coverage/a3/modules/@apostrophecms/util/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/util/index.js.html +3424 -0
- package/coverage/a3/modules/@apostrophecms/util/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +319 -0
- package/coverage/a3/modules/@apostrophecms/video-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +178 -0
- package/coverage/a3/modules/@apostrophecms/widget-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +1225 -0
- package/coverage/a3/test-lib/index.html +131 -0
- package/coverage/a3/test-lib/test.js.html +232 -0
- package/coverage/a3/test-lib/util.js.html +373 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +1256 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/lib/modules/apostrophe-assets/index.js +3 -1
- package/lib/modules/apostrophe-pages/lib/api.js +8 -6
- package/package.json +1 -1
- package/test/package.json +0 -75
|
@@ -0,0 +1,970 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for a3/modules/@apostrophecms/migration/index.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">a3/modules/@apostrophecms/migration</a> index.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">52.38% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>44/84</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>13/26</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">66.66% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>16/24</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">52.43% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>43/82</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>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
|
|
362
|
+
<span class="cline-any cline-yes">90x</span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-yes">90x</span>
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-yes">90x</span>
|
|
378
|
+
<span class="cline-any cline-yes">90x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
381
|
+
<span class="cline-any cline-yes">90x</span>
|
|
382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-yes">90x</span>
|
|
385
|
+
<span class="cline-any cline-yes">90x</span>
|
|
386
|
+
<span class="cline-any cline-yes">1241x</span>
|
|
387
|
+
<span class="cline-any cline-yes">1241x</span>
|
|
388
|
+
<span class="cline-any cline-no"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-yes">1241x</span>
|
|
391
|
+
<span class="cline-any cline-yes">5952x</span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-yes">1151x</span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-yes">4801x</span>
|
|
396
|
+
<span class="cline-any cline-yes">4801x</span>
|
|
397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-yes">90x</span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-yes">90x</span>
|
|
409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
415
|
+
<span class="cline-any cline-yes">90x</span>
|
|
416
|
+
<span class="cline-any cline-neutral"> </span>
|
|
417
|
+
<span class="cline-any cline-neutral"> </span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
430
|
+
<span class="cline-any cline-yes">1620x</span>
|
|
431
|
+
<span class="cline-any cline-yes">1620x</span>
|
|
432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-yes">1620x</span>
|
|
434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
448
|
+
<span class="cline-any cline-yes">2x</span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
463
|
+
<span class="cline-any cline-yes">2x</span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-neutral"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
476
|
+
<span class="cline-any cline-yes">2x</span>
|
|
477
|
+
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-yes">2x</span>
|
|
479
|
+
<span class="cline-any cline-yes">104x</span>
|
|
480
|
+
<span class="cline-any cline-yes">104x</span>
|
|
481
|
+
<span class="cline-any cline-yes">104x</span>
|
|
482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-no"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-neutral"> </span>
|
|
496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-no"> </span>
|
|
503
|
+
<span class="cline-any cline-no"> </span>
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-no"> </span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-no"> </span>
|
|
510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
515
|
+
<span class="cline-any cline-no"> </span>
|
|
516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
520
|
+
<span class="cline-any cline-neutral"> </span>
|
|
521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
522
|
+
<span class="cline-any cline-neutral"> </span>
|
|
523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
529
|
+
<span class="cline-any cline-neutral"> </span>
|
|
530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
535
|
+
<span class="cline-any cline-neutral"> </span>
|
|
536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-no"> </span>
|
|
539
|
+
<span class="cline-any cline-no"> </span>
|
|
540
|
+
<span class="cline-any cline-no"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
545
|
+
<span class="cline-any cline-neutral"> </span>
|
|
546
|
+
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-neutral"> </span>
|
|
548
|
+
<span class="cline-any cline-neutral"> </span>
|
|
549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
550
|
+
<span class="cline-any cline-neutral"> </span>
|
|
551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
552
|
+
<span class="cline-any cline-neutral"> </span>
|
|
553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
554
|
+
<span class="cline-any cline-neutral"> </span>
|
|
555
|
+
<span class="cline-any cline-neutral"> </span>
|
|
556
|
+
<span class="cline-any cline-neutral"> </span>
|
|
557
|
+
<span class="cline-any cline-neutral"> </span>
|
|
558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
559
|
+
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
561
|
+
<span class="cline-any cline-neutral"> </span>
|
|
562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
564
|
+
<span class="cline-any cline-neutral"> </span>
|
|
565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
566
|
+
<span class="cline-any cline-neutral"> </span>
|
|
567
|
+
<span class="cline-any cline-neutral"> </span>
|
|
568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
571
|
+
<span class="cline-any cline-neutral"> </span>
|
|
572
|
+
<span class="cline-any cline-neutral"> </span>
|
|
573
|
+
<span class="cline-any cline-neutral"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-no"> </span>
|
|
576
|
+
<span class="cline-any cline-no"> </span>
|
|
577
|
+
<span class="cline-any cline-no"> </span>
|
|
578
|
+
<span class="cline-any cline-no"> </span>
|
|
579
|
+
<span class="cline-any cline-no"> </span>
|
|
580
|
+
<span class="cline-any cline-no"> </span>
|
|
581
|
+
<span class="cline-any cline-no"> </span>
|
|
582
|
+
<span class="cline-any cline-no"> </span>
|
|
583
|
+
<span class="cline-any cline-no"> </span>
|
|
584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
585
|
+
<span class="cline-any cline-neutral"> </span>
|
|
586
|
+
<span class="cline-any cline-neutral"> </span>
|
|
587
|
+
<span class="cline-any cline-neutral"> </span>
|
|
588
|
+
<span class="cline-any cline-neutral"> </span>
|
|
589
|
+
<span class="cline-any cline-yes">90x</span>
|
|
590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
592
|
+
<span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
594
|
+
<span class="cline-any cline-yes">180x</span>
|
|
595
|
+
<span class="cline-any cline-yes">180x</span>
|
|
596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
598
|
+
<span class="cline-any cline-neutral"> </span>
|
|
599
|
+
<span class="cline-any cline-yes">172x</span>
|
|
600
|
+
<span class="cline-any cline-neutral"> </span>
|
|
601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
603
|
+
<span class="cline-any cline-neutral"> </span>
|
|
604
|
+
<span class="cline-any cline-yes">172x</span>
|
|
605
|
+
<span class="cline-any cline-yes">3096x</span>
|
|
606
|
+
<span class="cline-any cline-neutral"> </span>
|
|
607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-yes">8x</span>
|
|
612
|
+
<span class="cline-any cline-yes">144x</span>
|
|
613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
617
|
+
<span class="cline-any cline-neutral"> </span>
|
|
618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
619
|
+
<span class="cline-any cline-neutral"> </span>
|
|
620
|
+
<span class="cline-any cline-neutral"> </span>
|
|
621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
623
|
+
<span class="cline-any cline-yes">180x</span>
|
|
624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
626
|
+
<span class="cline-any cline-yes">144x</span>
|
|
627
|
+
<span class="cline-any cline-yes">144x</span>
|
|
628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
629
|
+
<span class="cline-any cline-yes">144x</span>
|
|
630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-no"> </span>
|
|
632
|
+
<span class="cline-any cline-no"> </span>
|
|
633
|
+
<span class="cline-any cline-no"> </span>
|
|
634
|
+
<span class="cline-any cline-no"> </span>
|
|
635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
639
|
+
<span class="cline-any cline-no"> </span>
|
|
640
|
+
<span class="cline-any cline-no"> </span>
|
|
641
|
+
<span class="cline-any cline-no"> </span>
|
|
642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
644
|
+
<span class="cline-any cline-neutral"> </span>
|
|
645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
648
|
+
<span class="cline-any cline-yes">90x</span>
|
|
649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
652
|
+
<span class="cline-any cline-neutral"> </span>
|
|
653
|
+
<span class="cline-any cline-neutral"> </span>
|
|
654
|
+
<span class="cline-any cline-neutral"> </span>
|
|
655
|
+
<span class="cline-any cline-neutral"> </span>
|
|
656
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const broadband = require('broadband');
|
|
657
|
+
const _ = require('lodash');
|
|
658
|
+
// Provide services for database migration. The `@apostrophecms/migration:migrate` task
|
|
659
|
+
// carries out all migrations that have been registered with this module. Migrations
|
|
660
|
+
// are used to make changes to the database at the time of a new code deployment,
|
|
661
|
+
// typically because we need to represent the data in a different way or correct
|
|
662
|
+
// errors.
|
|
663
|
+
//
|
|
664
|
+
// Migrations MUST be idempotent (it must be safe to run them twice). Apostrophe
|
|
665
|
+
// does remember whether they have been run before in a cache but there is
|
|
666
|
+
// NO guarantee that they will not run again when the cache is cleared. If this is
|
|
667
|
+
// difficult to guarantee, you may wish to write a task instead.
|
|
668
|
+
|
|
669
|
+
module.exports = {
|
|
670
|
+
options: { alias: 'migration' },
|
|
671
|
+
async init(self) {
|
|
672
|
+
self.migrations = [];
|
|
673
|
+
await self.enableCollection();
|
|
674
|
+
},
|
|
675
|
+
handlers(self) {
|
|
676
|
+
return {
|
|
677
|
+
'apostrophe:ready': {
|
|
678
|
+
addSortifyMigrations() {
|
|
679
|
+
const managers = self.apos.doc.managers;
|
|
680
|
+
_.each(managers, function (manager, name) {
|
|
681
|
+
const schema = manager.schema;
|
|
682
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!schema) {
|
|
683
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
684
|
+
}
|
|
685
|
+
_.each(schema, function (field) {
|
|
686
|
+
if (field.name === 'title') {
|
|
687
|
+
// Was always sortified, migration would be redundant
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
690
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!field.sortify) {
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
<span class="cstat-no" title="statement not covered" > manager.addSortifyMigration(field.name);</span>
|
|
694
|
+
});
|
|
695
|
+
});
|
|
696
|
+
},
|
|
697
|
+
async executeMigrations() {
|
|
698
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if ((process.env.NODE_ENV !== 'production') || self.apos.isNew) {
|
|
699
|
+
// Run migrations at dev startup (low friction).
|
|
700
|
+
// Also always run migrations at first startup, so even
|
|
701
|
+
// in prod with a brand new database the after event always fires
|
|
702
|
+
// and we get a chance to mark the migrations as skipped
|
|
703
|
+
await self.migrate(self.apos.argv);
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
};
|
|
708
|
+
},
|
|
709
|
+
methods(self) {
|
|
710
|
+
return {
|
|
711
|
+
// Add a migration function to be invoked when the @apostrophecms/migration:migrate task is invoked.
|
|
712
|
+
// Each migration is only invoked once, however they will all be invoked on a brand-new site, so
|
|
713
|
+
// they must check whether a change is actually needed before making a change
|
|
714
|
+
// (they must be harmless to run twice).
|
|
715
|
+
//
|
|
716
|
+
// Note that previous instances of the site ARE NOT STOPPED while migrations are run.
|
|
717
|
+
// Migrations must minimize their impact on currently running instances of older versions
|
|
718
|
+
// of the site. Copy data to new properties, don't remove it (except perhaps in a later migration
|
|
719
|
+
// after the initial copy is successful).
|
|
720
|
+
//
|
|
721
|
+
// If you absolutely must prevent requests from being executed during the migration,
|
|
722
|
+
// wrap them with the `await apos.global.busy(myFunction)` API. Note that this API
|
|
723
|
+
// involves a significant startup delay to allow existing requests to terminate.
|
|
724
|
+
add(name, migrationFn, options) {
|
|
725
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!options) {
|
|
726
|
+
options = {};
|
|
727
|
+
}
|
|
728
|
+
self.migrations.push({
|
|
729
|
+
name: name,
|
|
730
|
+
options: options,
|
|
731
|
+
fn: migrationFn
|
|
732
|
+
});
|
|
733
|
+
},
|
|
734
|
+
// Invoke the iterator function once for each doc in the aposDocs collection.
|
|
735
|
+
// If only two arguments are given, `limit` is assumed to be 1 (only one
|
|
736
|
+
// doc may be processed at a time).
|
|
737
|
+
//
|
|
738
|
+
// This method will never visit the same doc twice in a single call, even if
|
|
739
|
+
// modifications are made.
|
|
740
|
+
//
|
|
741
|
+
// THIS API IS FOR MIGRATION AND TASK USE ONLY AND HAS NO SECURITY.
|
|
742
|
+
async eachDoc(criteria, limit, iterator) {
|
|
743
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!iterator) {
|
|
744
|
+
<span class="cstat-no" title="statement not covered" > iterator = limit;</span>
|
|
745
|
+
<span class="cstat-no" title="statement not covered" > limit = 1;</span>
|
|
746
|
+
}
|
|
747
|
+
return self.each(self.apos.doc.db, criteria, limit, iterator);
|
|
748
|
+
},
|
|
749
|
+
// Invoke an async iterator function once for each document in the given collection.
|
|
750
|
+
// If only three arguments are given, `limit` is assumed to be 1 (only one
|
|
751
|
+
// doc may be processed at a time).
|
|
752
|
+
//
|
|
753
|
+
// This method will never visit the same document twice in a single call, even if
|
|
754
|
+
// modifications are made.
|
|
755
|
+
//
|
|
756
|
+
// THIS API IS FOR MIGRATION AND TASK USE ONLY AND HAS NO SECURITY.
|
|
757
|
+
async each(collection, criteria, limit, iterator) {
|
|
758
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!iterator) {
|
|
759
|
+
<span class="cstat-no" title="statement not covered" > iterator = limit;</span>
|
|
760
|
+
<span class="cstat-no" title="statement not covered" > limit = 1;</span>
|
|
761
|
+
}
|
|
762
|
+
// Sort by _id. This ensures that no document is
|
|
763
|
+
// ever visited twice, even if we modify documents as
|
|
764
|
+
// we go along.
|
|
765
|
+
//
|
|
766
|
+
// Otherwise there can be unexpected results from find()
|
|
767
|
+
// in typical migrations as the changes we make can
|
|
768
|
+
// affect the remainder of the query.
|
|
769
|
+
//
|
|
770
|
+
// https://groups.google.com/forum/#!topic/mongodb-user/AFC1ia7MHzk
|
|
771
|
+
const cursor = collection.find(criteria);
|
|
772
|
+
cursor.sort({ _id: 1 });
|
|
773
|
+
return require('util').promisify(broadband)(cursor, limit, async function (doc, cb) {
|
|
774
|
+
try {
|
|
775
|
+
await iterator(doc);
|
|
776
|
+
return cb(null);
|
|
777
|
+
} catch (err) {
|
|
778
|
+
<span class="cstat-no" title="statement not covered" > return cb(err);</span>
|
|
779
|
+
}
|
|
780
|
+
});
|
|
781
|
+
},
|
|
782
|
+
// Invoke an async iterator function once for each area in each doc in
|
|
783
|
+
// the aposDocs collection. The `iterator` function receives
|
|
784
|
+
// `(doc, area, dotPath)`. `criteria` may be used to limit
|
|
785
|
+
// the docs for which this is done.
|
|
786
|
+
//
|
|
787
|
+
// If only three arguments are given, `limit` is assumed to be 1 (only one
|
|
788
|
+
// doc may be processed at a time).
|
|
789
|
+
//
|
|
790
|
+
// This method will never visit the same doc twice in a single call, even if
|
|
791
|
+
// modifications are made.
|
|
792
|
+
//
|
|
793
|
+
// THIS API IS FOR MIGRATION AND TASK USE ONLY AND HAS NO SECURITY.
|
|
794
|
+
//
|
|
795
|
+
// Your iterator will be awaited.
|
|
796
|
+
<span class="fstat-no" title="function not covered" > as</span>ync eachArea(criteria, limit, iterator) {
|
|
797
|
+
<span class="cstat-no" title="statement not covered" > if (!iterator) {</span>
|
|
798
|
+
<span class="cstat-no" title="statement not covered" > iterator = limit;</span>
|
|
799
|
+
<span class="cstat-no" title="statement not covered" > limit = 1;</span>
|
|
800
|
+
}
|
|
801
|
+
<span class="cstat-no" title="statement not covered" > await self.eachDoc(criteria, limit, <span class="fstat-no" title="function not covered" >as</span>ync function (doc) {</span>
|
|
802
|
+
const areaInfos = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
803
|
+
<span class="cstat-no" title="statement not covered" > self.apos.area.walk(doc, <span class="fstat-no" title="function not covered" >fu</span>nction (area, dotPath) {</span>
|
|
804
|
+
<span class="cstat-no" title="statement not covered" > areaInfos.push({</span>
|
|
805
|
+
area: area,
|
|
806
|
+
dotPath: dotPath
|
|
807
|
+
});
|
|
808
|
+
});
|
|
809
|
+
<span class="cstat-no" title="statement not covered" > for (const areaInfo of areaInfos) {</span>
|
|
810
|
+
<span class="cstat-no" title="statement not covered" > await iterator(doc, areaInfo.area, areaInfo.dotPath);</span>
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
},
|
|
814
|
+
// Invoke the iterator function once for each widget in each area in each doc
|
|
815
|
+
// in the aposDocs collection. The `iterator` function receives
|
|
816
|
+
// `(doc, widget, dotPath)` and must be an async function.
|
|
817
|
+
//
|
|
818
|
+
// `limit` may be completely omitted and defaults to `1`.
|
|
819
|
+
//
|
|
820
|
+
// This method will never visit the same doc twice in a single call, even if
|
|
821
|
+
// modifications are made.
|
|
822
|
+
//
|
|
823
|
+
// Widget loaders are NOT called.
|
|
824
|
+
//
|
|
825
|
+
// THIS API IS FOR MIGRATION AND TASK USE ONLY AND HAS NO SECURITY.
|
|
826
|
+
//
|
|
827
|
+
// Your iterator will be awaited.
|
|
828
|
+
//
|
|
829
|
+
// `criteria` should be used to limit the docs for which
|
|
830
|
+
// `iterator` has to be invoked, for instance
|
|
831
|
+
// `{ type: 'article' }`.
|
|
832
|
+
<span class="fstat-no" title="function not covered" > as</span>ync eachWidget(criteria, limit, iterator) {
|
|
833
|
+
<span class="cstat-no" title="statement not covered" > if (!iterator) {</span>
|
|
834
|
+
<span class="cstat-no" title="statement not covered" > iterator = limit;</span>
|
|
835
|
+
<span class="cstat-no" title="statement not covered" > limit = 1;</span>
|
|
836
|
+
}
|
|
837
|
+
<span class="cstat-no" title="statement not covered" > await self.eachArea(criteria, limit, <span class="fstat-no" title="function not covered" >as</span>ync function (doc, area, dotPath) {</span>
|
|
838
|
+
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < area.items.length; i++) {</span>
|
|
839
|
+
<span class="cstat-no" title="statement not covered" > await iterator(doc, area.items[i], dotPath + '.items.' + i);</span>
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
},
|
|
843
|
+
// Normally, this is called automatically for you. Any
|
|
844
|
+
// doc type schema field marked with `sortify: true` automatically
|
|
845
|
+
// gets a migration implemented via this method. Just don't forget
|
|
846
|
+
// to run the `@apostrophecms/migration:migrate` task as part of
|
|
847
|
+
// your normal post-deployment process.
|
|
848
|
+
//
|
|
849
|
+
// Adds a migration that takes the given field, such as `lastName`, and
|
|
850
|
+
// creates a parallel `lastNameSortified` field, formatted with
|
|
851
|
+
// `apos.util.sortify` so that it sorts and compares in a more
|
|
852
|
+
// intuitive, case-insensitive way.
|
|
853
|
+
//
|
|
854
|
+
// The migration applies only to documents that match `criteria`.
|
|
855
|
+
//
|
|
856
|
+
// After adding such a migration, you can add `sortify: true` to the
|
|
857
|
+
// schema field declaration for `field`, and any calls to
|
|
858
|
+
// the `sort()` query builder for `lastName` will automatically
|
|
859
|
+
// use `lastNameSortified`. You can also do that explicitly of course.
|
|
860
|
+
//
|
|
861
|
+
// Note that you want to do both things (add the migration, and
|
|
862
|
+
// add `sortify: true`) because `sortify: true` guarantees that
|
|
863
|
+
// `lastNameSortified` gets updated on all saves of the doc.
|
|
864
|
+
//
|
|
865
|
+
// `migrationNamePrefix` just helps uniquely identify this
|
|
866
|
+
// migration, since different modules might contribute migrations
|
|
867
|
+
// for fields of the same name.
|
|
868
|
+
<span class="fstat-no" title="function not covered" > ad</span>dSortify(migrationNamePrefix, criteria, field) {
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > self.add(migrationNamePrefix + ':' + field + '-sortified', <span class="fstat-no" title="function not covered" >as</span>ync function () {</span>
|
|
870
|
+
const clauses = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
871
|
+
const clause = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > clause[field + 'Sortified'] = { $exists: 0 };</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" > clauses.push(clause);</span>
|
|
874
|
+
<span class="cstat-no" title="statement not covered" > clauses.push(criteria);</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > await self.eachDoc({ $and: clauses }, 5, <span class="fstat-no" title="function not covered" >as</span>ync function (doc) {</span>
|
|
876
|
+
const $set = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > $set[field + 'Sortified'] = self.apos.util.sortify(doc[field]);</span>
|
|
878
|
+
<span class="cstat-no" title="statement not covered" > await self.apos.doc.db.updateOne({ _id: doc._id }, { $set: $set });</span>
|
|
879
|
+
});
|
|
880
|
+
});
|
|
881
|
+
},
|
|
882
|
+
// How we now track migrations performed: a mongodb collection (persistent)
|
|
883
|
+
async enableCollection() {
|
|
884
|
+
self.db = await self.apos.db.collection('aposMigrations');
|
|
885
|
+
},
|
|
886
|
+
// Perform the actual migrations. Implementation of
|
|
887
|
+
// the @apostrophecms/migration:migrate task
|
|
888
|
+
async migrate(options) {
|
|
889
|
+
await self.emit('before');
|
|
890
|
+
if (self.apos.isNew) {
|
|
891
|
+
// Since the site is brand new (zero documents), we may assume
|
|
892
|
+
// it requires no migrations. Mark them all as "done" but note
|
|
893
|
+
// that they were skipped, just in case we decide that's an issue later
|
|
894
|
+
const at = new Date();
|
|
895
|
+
// Just in case the db has no documents but did
|
|
896
|
+
// start to run migrations on a previous attempt,
|
|
897
|
+
// which causes an occasional unique key error if not
|
|
898
|
+
// corrected for here
|
|
899
|
+
await self.db.removeMany({});
|
|
900
|
+
await self.db.insertMany(self.migrations.map(migration => ({
|
|
901
|
+
_id: migration.name,
|
|
902
|
+
at,
|
|
903
|
+
skipped: true
|
|
904
|
+
})));
|
|
905
|
+
} else {
|
|
906
|
+
for (const migration of self.migrations) {
|
|
907
|
+
await self.runOne(migration);
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
// In production, this event is emitted only at the end of the migrate command line task.
|
|
911
|
+
// In dev it is emitted at every startup after the automatic migration.
|
|
912
|
+
//
|
|
913
|
+
// Intentionally emitted regardless of whether the site is new or not.
|
|
914
|
+
//
|
|
915
|
+
// This is the right time to park pages, for instance, because the
|
|
916
|
+
// database is guaranteed to be in a stable state, whether because the
|
|
917
|
+
// site is new or because migrations ran successfully.
|
|
918
|
+
await self.emit('after');
|
|
919
|
+
},
|
|
920
|
+
async runOne(migration) {
|
|
921
|
+
const info = await self.db.findOne({ _id: migration.name });
|
|
922
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (info) {
|
|
923
|
+
// We don't need to run it again
|
|
924
|
+
return;
|
|
925
|
+
}
|
|
926
|
+
<span class="cstat-no" title="statement not covered" > self.apos.util.log('Running database migration: ' + migration.name);</span>
|
|
927
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
928
|
+
<span class="cstat-no" title="statement not covered" > await migration.fn();</span>
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > await self.db.insertOne({</span>
|
|
930
|
+
_id: migration.name,
|
|
931
|
+
at: new Date()
|
|
932
|
+
});
|
|
933
|
+
} catch (err) {
|
|
934
|
+
<span class="cstat-no" title="statement not covered" > if (err) {</span>
|
|
935
|
+
<span class="cstat-no" title="statement not covered" > self.apos.util.error(err);</span>
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > throw err;</span>
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
};
|
|
941
|
+
},
|
|
942
|
+
tasks(self) {
|
|
943
|
+
return {
|
|
944
|
+
migrate: {
|
|
945
|
+
usage: 'Apply any necessary migrations to the database.',
|
|
946
|
+
task: self.migrate
|
|
947
|
+
}
|
|
948
|
+
};
|
|
949
|
+
}
|
|
950
|
+
};
|
|
951
|
+
</pre></td></tr></table></pre>
|
|
952
|
+
|
|
953
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
954
|
+
</div><!-- /wrapper -->
|
|
955
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
956
|
+
Code coverage generated by
|
|
957
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
958
|
+
at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
|
|
959
|
+
</div>
|
|
960
|
+
<script src="../../../../prettify.js"></script>
|
|
961
|
+
<script>
|
|
962
|
+
window.onload = function () {
|
|
963
|
+
prettyPrint();
|
|
964
|
+
};
|
|
965
|
+
</script>
|
|
966
|
+
<script src="../../../../sorter.js"></script>
|
|
967
|
+
<script src="../../../../block-navigation.js"></script>
|
|
968
|
+
</body>
|
|
969
|
+
</html>
|
|
970
|
+
|