@hexonet/semantic-release-whmcs 4.0.0 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">65.38% </span>
26
+ <span class="strong">88.23% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>17/26</span>
28
+ <span class='fraction'>45/51</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.66% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>4/6</span>
35
+ <span class='fraction'>7/7</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">50% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/4</span>
42
+ <span class='fraction'>4/5</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68% </span>
47
+ <span class="strong">90% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>17/25</span>
49
+ <span class='fraction'>45/50</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -125,21 +125,77 @@
125
125
  <a name='L60'></a><a href='#L60'>60</a>
126
126
  <a name='L61'></a><a href='#L61'>61</a>
127
127
  <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
180
+ <span class="cline-any cline-yes">1x</span>
181
+ <span class="cline-any cline-yes">1x</span>
129
182
  <span class="cline-any cline-neutral">&nbsp;</span>
130
183
  <span class="cline-any cline-yes">1x</span>
131
184
  <span class="cline-any cline-yes">5x</span>
132
- <span class="cline-any cline-no">&nbsp;</span>
133
185
  <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-yes">5x</span>
135
186
  <span class="cline-any cline-neutral">&nbsp;</span>
136
187
  <span class="cline-any cline-neutral">&nbsp;</span>
137
188
  <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-yes">5x</span>
139
189
  <span class="cline-any cline-neutral">&nbsp;</span>
140
190
  <span class="cline-any cline-neutral">&nbsp;</span>
141
191
  <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-yes">5x</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-neutral">&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>
143
199
  <span class="cline-any cline-neutral">&nbsp;</span>
144
200
  <span class="cline-any cline-neutral">&nbsp;</span>
145
201
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -159,19 +215,17 @@
159
215
  <span class="cline-any cline-neutral">&nbsp;</span>
160
216
  <span class="cline-any cline-neutral">&nbsp;</span>
161
217
  <span class="cline-any cline-yes">5x</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
218
  <span class="cline-any cline-yes">5x</span>
164
219
  <span class="cline-any cline-yes">5x</span>
165
- <span class="cline-any cline-yes">343x</span>
166
- <span class="cline-any cline-yes">223x</span>
167
220
  <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-yes">120x</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-yes">5x</span>
169
223
  <span class="cline-any cline-neutral">&nbsp;</span>
170
224
  <span class="cline-any cline-neutral">&nbsp;</span>
171
225
  <span class="cline-any cline-yes">5x</span>
172
226
  <span class="cline-any cline-neutral">&nbsp;</span>
173
227
  <span class="cline-any cline-yes">5x</span>
174
- <span class="cline-any cline-no">&nbsp;</span>
228
+ <span class="cline-any cline-yes">3x</span>
175
229
  <span class="cline-any cline-no">&nbsp;</span>
176
230
  <span class="cline-any cline-no">&nbsp;</span>
177
231
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -179,36 +233,90 @@
179
233
  <span class="cline-any cline-neutral">&nbsp;</span>
180
234
  <span class="cline-any cline-neutral">&nbsp;</span>
181
235
  <span class="cline-any cline-yes">5x</span>
236
+ <span class="cline-any cline-yes">9x</span>
237
+ <span class="cline-any cline-yes">9x</span>
238
+ <span class="cline-any cline-yes">9x</span>
239
+ <span class="cline-any cline-yes">9x</span>
240
+ <span class="cline-any cline-yes">9x</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-yes">5x</span>
244
+ <span class="cline-any cline-yes">11x</span>
245
+ <span class="cline-any cline-yes">11x</span>
246
+ <span class="cline-any cline-yes">11x</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-yes">5x</span>
250
+ <span class="cline-any cline-yes">5x</span>
251
+ <span class="cline-any cline-yes">5x</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-yes">5x</span>
254
+ <span class="cline-any cline-yes">5x</span>
255
+ <span class="cline-any cline-yes">5x</span>
256
+ <span class="cline-any cline-yes">5x</span>
257
+ <span class="cline-any cline-yes">5x</span>
258
+ <span class="cline-any cline-yes">5x</span>
259
+ <span class="cline-any cline-yes">5x</span>
260
+ <span class="cline-any cline-yes">5x</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
262
  <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
266
  <span class="cline-any cline-no">&nbsp;</span>
184
267
  <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-yes">5x</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-yes">5x</span>
273
+ <span class="cline-any cline-yes">5x</span>
274
+ <span class="cline-any cline-yes">2x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">2x</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-yes">3x</span>
280
+ <span class="cline-any cline-yes">3x</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">3x</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">5x</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
186
288
  <span class="cline-any cline-neutral">&nbsp;</span>
187
289
  <span class="cline-any cline-neutral">&nbsp;</span>
188
290
  <span class="cline-any cline-yes">5x</span>
189
291
  <span class="cline-any cline-neutral">&nbsp;</span>
190
292
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const puppeteer = require('puppeteer')
293
+ const debug = require('debug')('semantic-release:whmcs')
294
+ const resolveConfig = require('./resolve-config')
191
295
  &nbsp;
192
- module.exports = async (DEBUG, logger) =&gt; {
193
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!logger) {
194
- <span class="cstat-no" title="statement not covered" > logger = console</span>
195
- }
196
- const gotoOpts = {
197
- waitUntil: ['load', 'domcontentloaded'],
198
- timeout: 240000
199
- }
200
- const navOpts = {
201
- waitUntil: 'networkidle0',
202
- timeout: 240000
203
- }
204
- const selectorOpts = {
205
- timeout: 10000
296
+ module.exports = async (context) =&gt; {
297
+ const cfg = {
298
+ urlbase: 'https://marketplace.whmcs.com',
299
+ ...resolveConfig(context),
300
+ // logger: logger,
301
+ gotoOpts: {
302
+ waitUntil: ['load', 'domcontentloaded'],
303
+ timeout: 240000
304
+ },
305
+ navOpts: {
306
+ waitUntil: ['networkidle0'],
307
+ timeout: 240000
308
+ },
309
+ selectorOpts: {
310
+ timeout: 10000
311
+ },
312
+ logger: context.logger
206
313
  }
207
314
  &nbsp;
208
315
  const browser = await puppeteer.launch({
209
- headless: !DEBUG,
316
+ headless: cfg.headless === '1',
210
317
  defaultViewport: null, // automatically full-sized
211
318
  args: [
319
+ '--disable-gpu',
212
320
  '--incognito',
213
321
  '--start-maximized',
214
322
  '--no-sandbox',
@@ -216,38 +324,83 @@ module.exports = async (DEBUG, logger) =&gt; {
216
324
  '--disable-infobars',
217
325
  '--ignore-certifcate-errors',
218
326
  '--ignore-certifcate-errors-spki-list',
219
- '--ignoreHTTPSErrors=true',
220
- '--user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"'
327
+ '--ignoreHTTPSErrors=true'
221
328
  ]
222
329
  })
330
+ const { logger } = cfg
223
331
  const [page] = await browser.pages()
224
- &nbsp;
225
- await page.setRequestInterception(true)
226
- page.on('request', request =&gt; {
227
- if (/^(image|stylesheet|other)$/i.test(request.resourceType())) {
228
- request.abort()
229
- } else {
230
- request.continue()
231
- }
332
+ await page.setExtraHTTPHeaders({
333
+ 'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8'
232
334
  })
335
+ await page.setUserAgent(
336
+ 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
337
+ )
233
338
  await page.setJavaScriptEnabled(true)
234
339
  &nbsp;
235
- <span class="missing-if-branch" title="if path not taken" >I</span>if (DEBUG) {
236
- <span class="cstat-no" title="statement not covered" > page.on('console', <span class="fstat-no" title="function not covered" >ms</span>g =&gt; {</span>
340
+ if (cfg.debug) {
341
+ page.on('console', <span class="fstat-no" title="function not covered" >(m</span>sg) =&gt; {
237
342
  <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; msg.args().length; i++) {</span>
238
343
  <span class="cstat-no" title="statement not covered" > logger.log(`${i}: ${msg.args()[i]}`)</span>
239
344
  }
240
345
  })
241
346
  }
242
347
  &nbsp;
243
- page.clickAndNavigate = <span class="fstat-no" title="function not covered" >as</span>ync (selector) =&gt; {
244
- const nav = <span class="cstat-no" title="statement not covered" >page.waitForNavigation(navOpts)</span>
245
- <span class="cstat-no" title="statement not covered" > await page.hover(selector)</span>
246
- <span class="cstat-no" title="statement not covered" > await page.click(selector)</span>
247
- <span class="cstat-no" title="statement not covered" > await nav</span>
348
+ page.clickAndNavigate = async (selector) =&gt; {
349
+ const { page, navOpts } = this.config
350
+ const nav = page.waitForNavigation(navOpts)
351
+ await page.hover(selector)
352
+ await page.click(selector)
353
+ await nav
354
+ }
355
+ &nbsp;
356
+ page.enterAndType = async (selector, value) =&gt; {
357
+ const { page, selectorOpts } = this.config
358
+ await page.waitForSelector(selector, selectorOpts)
359
+ await page.type(selector, value)
360
+ }
361
+ &nbsp;
362
+ this.login = async () =&gt; {
363
+ const { page, login, password, productid, gotoOpts, urlbase } = this.config
364
+ const selector = 'div.login-leftcol form button[type="submit"]'
365
+ // do login
366
+ try {
367
+ await page.goto(`${urlbase}/user/login`, gotoOpts)
368
+ debug('login form loaded at %s', `${urlbase}/user/login`)
369
+ await page.enterAndType('#email', login)
370
+ await page.enterAndType('#password', password)
371
+ debug('WHMCS Marketplace credentials entered')
372
+ await page.clickAndNavigate(selector)
373
+ debug('WHMCS Marketplace login form submitted.')
374
+ } catch (error) {
375
+ <span class="cstat-no" title="statement not covered" > debug(</span>
376
+ 'WHMCS Marketplace login failed or Product ID missing',
377
+ error.message
378
+ )
379
+ <span class="cstat-no" title="statement not covered" > await page.browser().close()</span>
380
+ <span class="cstat-no" title="statement not covered" > return false</span>
381
+ }
382
+ debug('WHMCS Marketplace login succeeded.')
383
+ &nbsp;
384
+ // access MP Product ID
385
+ let tmp = productid
386
+ if (!tmp || !/^[0-9]+$/.test(productid) || !parseInt(productid, 10)) {
387
+ debug('No or invalid WHMCS Marketplace Product ID provided.')
388
+ await page.browser().close()
389
+ return false
390
+ }
391
+ &nbsp;
392
+ tmp = tmp.replace(/(.)/g, '$&amp;\u200E')
393
+ debug(`WHMCS Marketplace Product ID: ${tmp}`)
394
+ &nbsp;
395
+ return true
396
+ }
397
+ &nbsp;
398
+ this.config = {
399
+ ...cfg,
400
+ page
248
401
  }
249
402
  &nbsp;
250
- return { page, gotoOpts, navOpts, selectorOpts }
403
+ return this
251
404
  }
252
405
  &nbsp;</pre></td></tr></table></pre>
253
406
 
@@ -256,7 +409,7 @@ module.exports = async (DEBUG, logger) =&gt; {
256
409
  <div class='footer quiet pad2 space-top1 center small'>
257
410
  Code coverage generated by
258
411
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
259
- at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
412
+ at 2022-08-09T11:01:27.229Z
260
413
  </div>
261
414
  <script src="../prettify.js"></script>
262
415
  <script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">94.11% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>16/17</span>
35
+ <span class='fraction'>19/19</span>
36
36
  </div>
37
37
 
38
38
 
@@ -72,7 +72,11 @@
72
72
  <a name='L7'></a><a href='#L7'>7</a>
73
73
  <a name='L8'></a><a href='#L8'>8</a>
74
74
  <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">10x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">10x</span>
78
+ <span class="cline-any cline-neutral">&nbsp;</span>
79
+ <span class="cline-any cline-neutral">&nbsp;</span>
76
80
  <span class="cline-any cline-neutral">&nbsp;</span>
77
81
  <span class="cline-any cline-neutral">&nbsp;</span>
78
82
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -82,13 +86,15 @@
82
86
  <span class="cline-any cline-neutral">&nbsp;</span>
83
87
  <span class="cline-any cline-neutral">&nbsp;</span>
84
88
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">module.exports = ({ env }) =&gt; ({
85
- whmcsLOGIN: env.WHMCSMP_LOGIN || false,
86
- whmcsPASSWORD: env.WHMCSMP_PASSWORD || false,
87
- whmcsPRODUCTID: env.WHMCSMP_PRODUCTID || false,
88
- whmcsMINVERSION: env.WHMCSMP_MINVERSION || '7.10',
89
- githubTOKEN: env.GH_TOKEN || env.GITHUB_TOKEN || false,
90
- githubREPO: env.GH_REPO || env.GITHUB_REPO || false,
91
- DEBUG: (env.DEBUG &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >/^semantic-release:(\*|whmcs)$/.test(env.DEBUG))</span> || false
89
+ login: env.WHMCSMP_LOGIN || false,
90
+ password: env.WHMCSMP_PASSWORD || false,
91
+ productid: env.WHMCSMP_PRODUCTID || false,
92
+ minversion: env.WHMCSMP_MINVERSION || '7.10',
93
+ ghtoken: env.GH_TOKEN || env.GITHUB_TOKEN || false,
94
+ ghrepo: env.GH_REPO || env.GITHUB_REPO || false,
95
+ headless: env.PUPPETEER_HEADLESS || '1',
96
+ debug:
97
+ (env.DEBUG &amp;&amp; /^semantic-release:(\*|whmcs)$/.test(env.DEBUG)) || false
92
98
  })
93
99
  &nbsp;</pre></td></tr></table></pre>
94
100
 
@@ -97,7 +103,7 @@
97
103
  <div class='footer quiet pad2 space-top1 center small'>
98
104
  Code coverage generated by
99
105
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
100
- at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
106
+ at 2022-08-09T11:01:27.229Z
101
107
  </div>
102
108
  <script src="../prettify.js"></script>
103
109
  <script>