@strapi/strapi 4.10.1 → 4.10.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/lib/commands/actions/{build → build-command}/command.js +1 -1
  2. package/lib/commands/actions/telemetry/enable/action.js +3 -3
  3. package/lib/commands/index.js +1 -1
  4. package/lib/core/loaders/apis.js +5 -0
  5. package/lib/utils/machine-id.js +2 -2
  6. package/package.json +16 -17
  7. package/coverage/clover.xml +0 -1613
  8. package/coverage/coverage-final.json +0 -48
  9. package/coverage/lcov-report/base.css +0 -224
  10. package/coverage/lcov-report/block-navigation.js +0 -87
  11. package/coverage/lcov-report/commands/__tests__/data-transfer/shared/index.html +0 -116
  12. package/coverage/lcov-report/commands/__tests__/data-transfer/shared/transfer.test.utils.js.html +0 -133
  13. package/coverage/lcov-report/commands/admin-create.js.html +0 -424
  14. package/coverage/lcov-report/commands/admin-reset.js.html +0 -241
  15. package/coverage/lcov-report/commands/generate-template.js.html +0 -373
  16. package/coverage/lcov-report/commands/index.html +0 -146
  17. package/coverage/lcov-report/commands/transfer/export.js.html +0 -619
  18. package/coverage/lcov-report/commands/transfer/import.js.html +0 -562
  19. package/coverage/lcov-report/commands/transfer/index.html +0 -146
  20. package/coverage/lcov-report/commands/transfer/transfer.js.html +0 -532
  21. package/coverage/lcov-report/commands/utils/helpers.js.html +0 -430
  22. package/coverage/lcov-report/commands/utils/index.html +0 -116
  23. package/coverage/lcov-report/core/registries/custom-fields.js.html +0 -301
  24. package/coverage/lcov-report/core/registries/index.html +0 -116
  25. package/coverage/lcov-report/core-api/controller/collection-type.js.html +0 -418
  26. package/coverage/lcov-report/core-api/controller/index.html +0 -161
  27. package/coverage/lcov-report/core-api/controller/index.js.html +0 -220
  28. package/coverage/lcov-report/core-api/controller/single-type.js.html +0 -274
  29. package/coverage/lcov-report/core-api/controller/transform.js.html +0 -376
  30. package/coverage/lcov-report/core-api/service/collection-type.js.html +0 -325
  31. package/coverage/lcov-report/core-api/service/index.html +0 -161
  32. package/coverage/lcov-report/core-api/service/index.js.html +0 -220
  33. package/coverage/lcov-report/core-api/service/pagination.js.html +0 -460
  34. package/coverage/lcov-report/core-api/service/single-type.js.html +0 -301
  35. package/coverage/lcov-report/favicon.png +0 -0
  36. package/coverage/lcov-report/index.html +0 -386
  37. package/coverage/lcov-report/load/filepath-to-prop-path.js.html +0 -151
  38. package/coverage/lcov-report/load/index.html +0 -116
  39. package/coverage/lcov-report/prettify.css +0 -1
  40. package/coverage/lcov-report/prettify.js +0 -2
  41. package/coverage/lcov-report/services/content-api/index.html +0 -116
  42. package/coverage/lcov-report/services/content-api/index.js.html +0 -307
  43. package/coverage/lcov-report/services/content-api/permissions/engine.js.html +0 -100
  44. package/coverage/lcov-report/services/content-api/permissions/index.html +0 -131
  45. package/coverage/lcov-report/services/content-api/permissions/index.js.html +0 -529
  46. package/coverage/lcov-report/services/content-api/permissions/providers/action.js.html +0 -142
  47. package/coverage/lcov-report/services/content-api/permissions/providers/condition.js.html +0 -142
  48. package/coverage/lcov-report/services/content-api/permissions/providers/index.html +0 -146
  49. package/coverage/lcov-report/services/content-api/permissions/providers/index.js.html +0 -112
  50. package/coverage/lcov-report/services/core-store.js.html +0 -520
  51. package/coverage/lcov-report/services/entity-service/attributes/index.html +0 -131
  52. package/coverage/lcov-report/services/entity-service/attributes/index.js.html +0 -178
  53. package/coverage/lcov-report/services/entity-service/attributes/transforms.js.html +0 -145
  54. package/coverage/lcov-report/services/entity-service/components.js.html +0 -1246
  55. package/coverage/lcov-report/services/entity-service/index.html +0 -146
  56. package/coverage/lcov-report/services/entity-service/index.js.html +0 -1120
  57. package/coverage/lcov-report/services/entity-service/params.js.html +0 -112
  58. package/coverage/lcov-report/services/entity-validator/__tests__/relations/utils/index.html +0 -116
  59. package/coverage/lcov-report/services/entity-validator/__tests__/relations/utils/relations.testdata.js.html +0 -544
  60. package/coverage/lcov-report/services/entity-validator/index.html +0 -131
  61. package/coverage/lcov-report/services/entity-validator/index.js.html +0 -1231
  62. package/coverage/lcov-report/services/entity-validator/validators.js.html +0 -733
  63. package/coverage/lcov-report/services/event-hub.js.html +0 -319
  64. package/coverage/lcov-report/services/fs.js.html +0 -259
  65. package/coverage/lcov-report/services/index.html +0 -161
  66. package/coverage/lcov-report/services/metrics/admin-user-hash.js.html +0 -148
  67. package/coverage/lcov-report/services/metrics/index.html +0 -206
  68. package/coverage/lcov-report/services/metrics/index.js.html +0 -265
  69. package/coverage/lcov-report/services/metrics/is-truthy.js.html +0 -112
  70. package/coverage/lcov-report/services/metrics/middleware.js.html +0 -184
  71. package/coverage/lcov-report/services/metrics/rate-limiter.js.html +0 -166
  72. package/coverage/lcov-report/services/metrics/sender.js.html +0 -394
  73. package/coverage/lcov-report/services/metrics/stringify-deep.js.html +0 -151
  74. package/coverage/lcov-report/services/utils/index.html +0 -116
  75. package/coverage/lcov-report/services/utils/upload-files.js.html +0 -322
  76. package/coverage/lcov-report/services/worker-queue.js.html +0 -262
  77. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  78. package/coverage/lcov-report/sorter.js +0 -196
  79. package/coverage/lcov-report/utils/convert-custom-field-type.js.html +0 -151
  80. package/coverage/lcov-report/utils/index.html +0 -146
  81. package/coverage/lcov-report/utils/machine-id.js.html +0 -127
  82. package/coverage/lcov-report/utils/url-from-segments.js.html +0 -121
  83. package/lib/commands/__tests__/commands.test.js +0 -20
  84. package/lib/commands/__tests__/commands.test.utils.js +0 -16
  85. package/lib/commands/actions/admin/create-user/__tests__/admin.create-user.test.js +0 -450
  86. package/lib/commands/actions/admin/reset-user-password/__tests__/admin.reset-user-password.test.js +0 -145
  87. package/lib/commands/actions/export/__tests__/export.test.js +0 -175
  88. package/lib/commands/actions/import/__tests__/import.test.js +0 -143
  89. package/lib/commands/actions/templates/generate/__tests__/templates.generate.js +0 -118
  90. package/lib/commands/actions/transfer/__tests__/transfer.test.js +0 -178
  91. package/lib/core/registries/__tests__/custom-fields.test.js +0 -152
  92. package/lib/core-api/__tests__/controller.test.js +0 -39
  93. package/lib/core-api/controller/__tests__/transform.test.js +0 -226
  94. package/lib/core-api/service/__tests__/index.test.js +0 -127
  95. package/lib/core-api/service/__tests__/pagination.test.js +0 -275
  96. package/lib/load/__tests__/filepath-to-prop-path.test.js +0 -30
  97. package/lib/middlewares/__tests__/errors.test.js +0 -21
  98. package/lib/services/__tests__/content-api-permissions.test.js +0 -291
  99. package/lib/services/__tests__/core-store.test.js +0 -148
  100. package/lib/services/__tests__/event-hub.test.js +0 -126
  101. package/lib/services/__tests__/fs.test.js +0 -78
  102. package/lib/services/__tests__/worker-queue.test.js +0 -47
  103. package/lib/services/entity-service/__tests__/entity-service-events.test.js +0 -117
  104. package/lib/services/entity-service/__tests__/entity-service.test.js +0 -587
  105. package/lib/services/entity-validator/__tests__/biginteger-validators.test.js +0 -220
  106. package/lib/services/entity-validator/__tests__/date-validators.test.js +0 -183
  107. package/lib/services/entity-validator/__tests__/datetime-validators.test.js +0 -183
  108. package/lib/services/entity-validator/__tests__/email-validators.test.js +0 -56
  109. package/lib/services/entity-validator/__tests__/enumeration-validators.test.js +0 -43
  110. package/lib/services/entity-validator/__tests__/float-validators.test.js +0 -278
  111. package/lib/services/entity-validator/__tests__/index.test.js +0 -609
  112. package/lib/services/entity-validator/__tests__/integer-validators.test.js +0 -278
  113. package/lib/services/entity-validator/__tests__/relations/attribute-level.test.js +0 -123
  114. package/lib/services/entity-validator/__tests__/relations/component-level.test.js +0 -275
  115. package/lib/services/entity-validator/__tests__/relations/dynamic-zone-level.test.js +0 -159
  116. package/lib/services/entity-validator/__tests__/relations/media-level.test.js +0 -74
  117. package/lib/services/entity-validator/__tests__/relations/utils/relations.testdata.js +0 -153
  118. package/lib/services/entity-validator/__tests__/string-validators.test.js +0 -374
  119. package/lib/services/entity-validator/__tests__/time-validators.test.js +0 -183
  120. package/lib/services/entity-validator/__tests__/timestamp-validators.test.js +0 -204
  121. package/lib/services/entity-validator/__tests__/uid-validators.test.js +0 -229
  122. package/lib/services/metrics/__tests__/admin-user-hash.test.js +0 -41
  123. package/lib/services/metrics/__tests__/index.test.js +0 -157
  124. package/lib/services/metrics/__tests__/is-truthy.js +0 -33
  125. package/lib/services/metrics/__tests__/middleware.test.js +0 -60
  126. package/lib/services/metrics/__tests__/rate-limiter.test.js +0 -50
  127. package/lib/services/metrics/__tests__/stringify-deep.test.js +0 -27
  128. package/lib/utils/__tests__/convert-custom-field-type.test.js +0 -69
  129. package/lib/utils/__tests__/url-from-segments.test.js +0 -40
  130. /package/lib/commands/actions/{build → build-command}/action.js +0 -0
@@ -1,241 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for commands/admin-reset.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">commands</a> admin-reset.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>20/20</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>12/12</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>20/20</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-yes">1x</span>
121
- <span class="cline-any cline-yes">1x</span>
122
- <span class="cline-any cline-yes">1x</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-yes">1x</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-neutral">&nbsp;</span>
135
- <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-yes">1x</span>
141
- <span class="cline-any cline-yes">4x</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">4x</span>
144
- <span class="cline-any cline-yes">2x</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-yes">2x</span>
147
- <span class="cline-any cline-yes">1x</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-yes">1x</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-yes">2x</span>
154
- <span class="cline-any cline-yes">1x</span>
155
- <span class="cline-any cline-yes">1x</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">1x</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">2x</span>
163
- <span class="cline-any cline-yes">2x</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-yes">2x</span>
166
- <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-yes">2x</span>
168
- <span class="cline-any cline-yes">2x</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
171
- &nbsp;
172
- const _ = require('lodash');
173
- const inquirer = require('inquirer');
174
- const strapi = require('../index');
175
- &nbsp;
176
- const promptQuestions = [
177
- { type: 'input', name: 'email', message: 'User email?' },
178
- { type: 'password', name: 'password', message: 'New password?' },
179
- {
180
- type: 'confirm',
181
- name: 'confirm',
182
- message: "Do you really want to reset this user's password?",
183
- },
184
- ];
185
- &nbsp;
186
- /**
187
- * Reset user's password
188
- * @param {Object} cmdOptions - command options
189
- * @param {string} cmdOptions.email - user's email
190
- * @param {string} cmdOptions.password - user's new password
191
- */
192
- module.exports = async function (cmdOptions = {}) {
193
- const { email, password } = cmdOptions;
194
- &nbsp;
195
- if (_.isEmpty(email) &amp;&amp; _.isEmpty(password) &amp;&amp; process.stdin.isTTY) {
196
- const inquiry = await inquirer.prompt(promptQuestions);
197
- &nbsp;
198
- if (!inquiry.confirm) {
199
- process.exit(0);
200
- }
201
- &nbsp;
202
- return changePassword(inquiry);
203
- }
204
- &nbsp;
205
- if (_.isEmpty(email) || _.isEmpty(password)) {
206
- console.error('Missing required options `email` or `password`');
207
- process.exit(1);
208
- }
209
- &nbsp;
210
- return changePassword({ email, password });
211
- };
212
- &nbsp;
213
- async function changePassword({ email, password }) {
214
- const appContext = await strapi.compile();
215
- const app = await strapi(appContext).load();
216
- &nbsp;
217
- await app.admin.services.user.resetPasswordByEmail(email, password);
218
- &nbsp;
219
- console.log(`Successfully reset user's password`);
220
- process.exit(0);
221
- }
222
- &nbsp;</pre></td></tr></table></pre>
223
-
224
- <div class='push'></div><!-- for sticky footer -->
225
- </div><!-- /wrapper -->
226
- <div class='footer quiet pad2 space-top1 center small'>
227
- Code coverage generated by
228
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
229
- at 2023-03-15T08:52:47.190Z
230
- </div>
231
- <script src="../prettify.js"></script>
232
- <script>
233
- window.onload = function () {
234
- prettyPrint();
235
- };
236
- </script>
237
- <script src="../sorter.js"></script>
238
- <script src="../block-navigation.js"></script>
239
- </body>
240
- </html>
241
-
@@ -1,373 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for commands/generate-template.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">commands</a> generate-template.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">94.44% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>34/36</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>8/8</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>4/4</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">94.44% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>34/36</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-yes">1x</span>
165
- <span class="cline-any cline-yes">1x</span>
166
- <span class="cline-any cline-yes">1x</span>
167
- <span class="cline-any cline-yes">1x</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-yes">1x</span>
171
- <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">6x</span>
179
- <span class="cline-any cline-yes">12x</span>
180
- <span class="cline-any cline-yes">12x</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-yes">12x</span>
183
- <span class="cline-any cline-yes">4x</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">8x</span>
187
- <span class="cline-any cline-yes">8x</span>
188
- <span class="cline-any cline-yes">8x</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">2x</span>
205
- <span class="cline-any cline-yes">2x</span>
206
- <span class="cline-any cline-yes">2x</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-neutral">&nbsp;</span>
214
- <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-yes">6x</span>
219
- <span class="cline-any cline-yes">6x</span>
220
- <span class="cline-any cline-yes">6x</span>
221
- <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-yes">1x</span>
224
- <span class="cline-any cline-yes">7x</span>
225
- <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-yes">7x</span>
228
- <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-yes">7x</span>
231
- <span class="cline-any cline-yes">7x</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-yes">7x</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">3x</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-yes">3x</span>
242
- <span class="cline-any cline-yes">1x</span>
243
- <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-yes">6x</span>
248
- <span class="cline-any cline-neutral">&nbsp;</span>
249
- <span class="cline-any cline-yes">6x</span>
250
- <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-yes">6x</span>
252
- <span class="cline-any cline-yes">6x</span>
253
- <span class="cline-any cline-yes">2x</span>
254
- <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-neutral">&nbsp;</span>
256
- <span class="cline-any cline-yes">6x</span>
257
- <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
259
- &nbsp;
260
- const { resolve, join, basename } = require('path');
261
- const fse = require('fs-extra');
262
- const chalk = require('chalk');
263
- const inquirer = require('inquirer');
264
- &nbsp;
265
- // All directories that a template could need
266
- const TEMPLATE_CONTENT = ['src', 'data'];
267
- &nbsp;
268
- /**
269
- *
270
- * @param {string} templatePath Absolute path to template directory
271
- * @param {string} rootBase Name of the root directory
272
- */
273
- async function copyContent(templatePath, rootBase) {
274
- for (const item of TEMPLATE_CONTENT) {
275
- try {
276
- const pathToCopy = join(process.cwd(), item);
277
- &nbsp;
278
- if (!(await fse.pathExists(pathToCopy))) {
279
- continue;
280
- }
281
- &nbsp;
282
- await fse.copy(pathToCopy, join(templatePath, item));
283
- const currentProjectBase = basename(process.cwd());
284
- console.log(
285
- `${chalk.green(
286
- 'success'
287
- )}: copy ${currentProjectBase}/${item} =&gt; ${rootBase}/template/${item}`
288
- );
289
- } catch (error) {
290
- <span class="cstat-no" title="statement not covered" > console.error(`${chalk.red('error')}: ${error.message}`);</span>
291
- }
292
- }
293
- }
294
- &nbsp;
295
- /**
296
- *
297
- * @param {string} rootPath Absolute path to the root directory
298
- */
299
- async function writeTemplateJson(rootPath) {
300
- try {
301
- await fse.writeJSON(join(rootPath, 'template.json'), {});
302
- console.log(`${chalk.green('success')}: create JSON config file`);
303
- } catch (error) {
304
- <span class="cstat-no" title="statement not covered" > console.error(`${chalk.red('error')}: ${error.message}`);</span>
305
- }
306
- }
307
- &nbsp;
308
- /**
309
- *
310
- * @param {string} rootPath Absolute path to the root directory
311
- * @returns boolean
312
- */
313
- async function templateConfigExists(rootPath) {
314
- const configExists = await fse.pathExists(join(rootPath, 'template.json'));
315
- console.log(`checking: ${join(rootPath, 'template.json')}. result ${configExists}`);
316
- return configExists;
317
- }
318
- &nbsp;
319
- module.exports = async function generateTemplate(directory) {
320
- const rootPath = resolve(directory);
321
- &nbsp;
322
- // Get path to template directory: &lt;rootPath&gt;/template
323
- const templatePath = join(rootPath, 'template');
324
- &nbsp;
325
- // Check if the template directory exists
326
- const exists = await fse.pathExists(templatePath);
327
- const rootBase = basename(rootPath);
328
- &nbsp;
329
- if (exists) {
330
- // Confirm the user wants to replace the existing template
331
- const inquiry = await inquirer.prompt({
332
- type: 'confirm',
333
- name: 'confirm',
334
- message: `${chalk.yellow(rootBase)} already exists. Do you want to replace it?`,
335
- });
336
- &nbsp;
337
- if (!inquiry.confirm) {
338
- process.exit(0);
339
- }
340
- }
341
- &nbsp;
342
- // Create or replace root directory with &lt;roothPath&gt;/template
343
- await fse.ensureDir(templatePath);
344
- // Copy content to /template
345
- await copyContent(templatePath, rootBase);
346
- // Create config file if it doesn't exist
347
- const configExists = await templateConfigExists(rootPath);
348
- if (!configExists) {
349
- await writeTemplateJson(rootPath);
350
- }
351
- &nbsp;
352
- console.log(`${chalk.green('success')}: generated template at ${chalk.yellow(rootPath)}`);
353
- };
354
- &nbsp;</pre></td></tr></table></pre>
355
-
356
- <div class='push'></div><!-- for sticky footer -->
357
- </div><!-- /wrapper -->
358
- <div class='footer quiet pad2 space-top1 center small'>
359
- Code coverage generated by
360
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
361
- at 2023-03-15T08:52:47.190Z
362
- </div>
363
- <script src="../prettify.js"></script>
364
- <script>
365
- window.onload = function () {
366
- prettyPrint();
367
- };
368
- </script>
369
- <script src="../sorter.js"></script>
370
- <script src="../block-navigation.js"></script>
371
- </body>
372
- </html>
373
-