@hexonet/semantic-release-whmcs 3.1.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/.eslintrc.js +13 -12
  2. package/.github/workflows/pull-request.yml +12 -10
  3. package/.github/workflows/push.yml +23 -15
  4. package/HISTORY.md +31 -0
  5. package/{base.css → coverage/base.css} +0 -0
  6. package/{block-navigation.js → coverage/block-navigation.js} +8 -0
  7. package/{coverage-final.json → coverage/coverage-final.json} +8 -8
  8. package/{favicon.png → coverage/favicon.png} +0 -0
  9. package/{index.html → coverage/index.html} +8 -3
  10. package/{lib → coverage/lib}/definitions/errors.js.html +8 -3
  11. package/{lib → coverage/lib}/definitions/index.html +8 -3
  12. package/{lib → coverage/lib}/delete-marketplace-version.js.html +8 -3
  13. package/{lib → coverage/lib}/get-error.js.html +8 -3
  14. package/{lib → coverage/lib}/get-github-releases.js.html +8 -3
  15. package/{lib → coverage/lib}/index.html +8 -3
  16. package/{lib → coverage/lib}/publish.js.html +82 -20
  17. package/{lib → coverage/lib}/puppet.js.html +11 -6
  18. package/{lib → coverage/lib}/resolve-config.js.html +8 -3
  19. package/{lib → coverage/lib}/scrape-marketplace-versions.js.html +8 -3
  20. package/{lib → coverage/lib}/set-compatible-versions.js.html +8 -3
  21. package/{lib → coverage/lib}/verify.js.html +8 -3
  22. package/{prettify.css → coverage/prettify.css} +0 -0
  23. package/{prettify.js → coverage/prettify.js} +0 -0
  24. package/{sort-arrow-sprite.png → coverage/sort-arrow-sprite.png} +0 -0
  25. package/{sorter.js → coverage/sorter.js} +26 -0
  26. package/lib/publish.js +35 -16
  27. package/package.json +11 -12
  28. package/whmcs.js +0 -1
  29. package/test/publish.test.js +0 -83
  30. package/test/verify.test.js +0 -93
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <div class="pad1">
@@ -94,10 +100,9 @@
94
100
  </div><!-- /wrapper -->
95
101
  <div class='footer quiet pad2 space-top1 center small'>
96
102
  Code coverage generated by
97
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
103
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
99
105
  </div>
100
- </div>
101
106
  <script src="../../prettify.js"></script>
102
107
  <script>
103
108
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -378,10 +384,9 @@ module.exports = async (pluginConfig, context) =&gt; {
378
384
  </div><!-- /wrapper -->
379
385
  <div class='footer quiet pad2 space-top1 center small'>
380
386
  Code coverage generated by
381
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
382
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
387
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
388
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
383
389
  </div>
384
- </div>
385
390
  <script src="../prettify.js"></script>
386
391
  <script>
387
392
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -84,10 +90,9 @@ module.exports = (code) =&gt; {
84
90
  </div><!-- /wrapper -->
85
91
  <div class='footer quiet pad2 space-top1 center small'>
86
92
  Code coverage generated by
87
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
88
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
93
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
94
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
89
95
  </div>
90
- </div>
91
96
  <script src="../prettify.js"></script>
92
97
  <script>
93
98
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line low'></div>
59
65
  <pre><table class="coverage">
@@ -168,10 +174,9 @@ const GitHub = <span class="cstat-no" title="statement not covered" >require('gi
168
174
  </div><!-- /wrapper -->
169
175
  <div class='footer quiet pad2 space-top1 center small'>
170
176
  Code coverage generated by
171
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
177
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
178
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
173
179
  </div>
174
- </div>
175
180
  <script src="../prettify.js"></script>
176
181
  <script>
177
182
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <div class="pad1">
@@ -214,10 +220,9 @@
214
220
  </div><!-- /wrapper -->
215
221
  <div class='footer quiet pad2 space-top1 center small'>
216
222
  Code coverage generated by
217
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
218
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
223
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
224
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
219
225
  </div>
220
- </div>
221
226
  <script src="../prettify.js"></script>
222
227
  <script>
223
228
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -174,7 +180,26 @@
174
180
  <a name='L115'></a><a href='#L115'>115</a>
175
181
  <a name='L116'></a><a href='#L116'>116</a>
176
182
  <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
178
203
  <span class="cline-any cline-yes">1x</span>
179
204
  <span class="cline-any cline-yes">1x</span>
180
205
  <span class="cline-any cline-yes">1x</span>
@@ -193,7 +218,10 @@
193
218
  <span class="cline-any cline-no">&nbsp;</span>
194
219
  <span class="cline-any cline-neutral">&nbsp;</span>
195
220
  <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
223
  <span class="cline-any cline-yes">3x</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
225
  <span class="cline-any cline-yes">3x</span>
198
226
  <span class="cline-any cline-yes">3x</span>
199
227
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -207,6 +235,7 @@
207
235
  <span class="cline-any cline-neutral">&nbsp;</span>
208
236
  <span class="cline-any cline-neutral">&nbsp;</span>
209
237
  <span class="cline-any cline-yes">3x</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
239
  <span class="cline-any cline-yes">3x</span>
211
240
  <span class="cline-any cline-yes">3x</span>
212
241
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -246,6 +275,10 @@
246
275
  <span class="cline-any cline-neutral">&nbsp;</span>
247
276
  <span class="cline-any cline-neutral">&nbsp;</span>
248
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
282
  <span class="cline-any cline-yes">1x</span>
250
283
  <span class="cline-any cline-neutral">&nbsp;</span>
251
284
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -257,6 +290,10 @@
257
290
  <span class="cline-any cline-neutral">&nbsp;</span>
258
291
  <span class="cline-any cline-neutral">&nbsp;</span>
259
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
297
  <span class="cline-any cline-yes">1x</span>
261
298
  <span class="cline-any cline-neutral">&nbsp;</span>
262
299
  <span class="cline-any cline-yes">1x</span>
@@ -264,6 +301,10 @@
264
301
  <span class="cline-any cline-neutral">&nbsp;</span>
265
302
  <span class="cline-any cline-neutral">&nbsp;</span>
266
303
  <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
308
  <span class="cline-any cline-yes">1x</span>
268
309
  <span class="cline-any cline-yes">1x</span>
269
310
  <span class="cline-any cline-yes">1x</span>
@@ -278,6 +319,9 @@
278
319
  <span class="cline-any cline-neutral">&nbsp;</span>
279
320
  <span class="cline-any cline-no">&nbsp;</span>
280
321
  <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
325
  <span class="cline-any cline-no">&nbsp;</span>
282
326
  <span class="cline-any cline-neutral">&nbsp;</span>
283
327
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -307,11 +351,14 @@ module.exports = async (pluginConfig, context) =&gt; {
307
351
  &nbsp;
308
352
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!notes || !notes.length || !version || !version.length) {
309
353
  <span class="cstat-no" title="statement not covered" > debug('publishing new product version failed. No input data available.')</span>
310
- <span class="cstat-no" title="statement not covered" > logger.error('WHMCS Marketplace publishing new product version failed. No input data available.')</span>
354
+ <span class="cstat-no" title="statement not covered" > logger.error(</span>
355
+ 'WHMCS Marketplace publishing new product version failed. No input data available.'
356
+ )
311
357
  }
312
358
  &nbsp;
313
359
  let success = true
314
- const { whmcsLOGIN, whmcsPASSWORD, whmcsPRODUCTID, DEBUG } = resolveConfig(context)
360
+ const { whmcsLOGIN, whmcsPASSWORD, whmcsPRODUCTID, DEBUG } =
361
+ resolveConfig(context)
315
362
  const { gotoOpts, navOpts, selectorOpts, page } = await puppet(DEBUG, logger)
316
363
  &nbsp;
317
364
  debug(`WHMCS Marketplace Product ID: ${whmcsPRODUCTID}`)
@@ -322,8 +369,9 @@ module.exports = async (pluginConfig, context) =&gt; {
322
369
  debug(`Notes: ${notes}`)
323
370
  logger.log(`Release Notes: ${notes}`)
324
371
  &nbsp;
325
- // strip markdown links from notes as not allowed to keep
326
- const cleanedNotes = notes.replace(/\[(.*?)\]\((.+?)\)/gm, '$1')
372
+ // strip markdown links from notes as not allowed to keep (taken from remove-markdown and cleaned up)
373
+ const cleanedNotes = notes.replace(/\[([^[\]]*)\]\([^()]*\)/gm, '$1')
374
+ &nbsp;
327
375
  const wmbase = 'https://marketplace.whmcs.com'
328
376
  let url = `${wmbase}/user/login`
329
377
  &nbsp;
@@ -360,27 +408,39 @@ module.exports = async (pluginConfig, context) =&gt; {
360
408
  await page.waitForSelector(selector, selectorOpts)
361
409
  debug('product page submit button selector found')
362
410
  /* istanbul ignore next */
363
- await page.$eval('#version', (el, value) =&gt; {
364
- el.value = value
365
- }, version)
411
+ await page.$eval(
412
+ '#version',
413
+ (el, value) =&gt; {
414
+ el.value = value
415
+ },
416
+ version
417
+ )
366
418
  debug('form input for version finished.')
367
419
  &nbsp;
368
420
  // fill input type date with localized string
369
421
  // https://www.mattzeunert.com/2020/04/01/filling-out-a-date-input-with-puppeteer.html
370
422
  const date = releaseDate ? <span class="branch-0 cbranch-no" title="branch not covered" >new Date(releaseDate) </span>: new Date()
371
423
  /* istanbul ignore next */
372
- const dateString = await page.evaluate(d =&gt; new Date(d).toLocaleDateString(navigator.language, {
373
- day: '2-digit',
374
- month: '2-digit',
375
- year: 'numeric'
376
- }), date.toISOString())
424
+ const dateString = await page.evaluate(
425
+ (d) =&gt;
426
+ new Date(d).toLocaleDateString(navigator.language, {
427
+ day: '2-digit',
428
+ month: '2-digit',
429
+ year: 'numeric'
430
+ }),
431
+ date.toISOString()
432
+ )
377
433
  await page.type('#released_at', dateString)
378
434
  &nbsp;
379
435
  debug('form input for released_at finished.')
380
436
  /* istanbul ignore next */
381
- await page.$eval('#description', (el, value) =&gt; {
382
- el.value = value
383
- }, cleanedNotes)
437
+ await page.$eval(
438
+ '#description',
439
+ (el, value) =&gt; {
440
+ el.value = value
441
+ },
442
+ cleanedNotes
443
+ )
384
444
  debug('form input for description finished.')
385
445
  const nav = page.waitForNavigation(navOpts)
386
446
  await page.hover(selector)
@@ -394,7 +454,10 @@ module.exports = async (pluginConfig, context) =&gt; {
394
454
  success = true
395
455
  } catch (error) {
396
456
  <span class="cstat-no" title="statement not covered" > debug('publishing new product version failed.', error.message)</span>
397
- <span class="cstat-no" title="statement not covered" > logger.error('WHMCS Marketplace publishing new product version failed.', error.message)</span>
457
+ <span class="cstat-no" title="statement not covered" > logger.error(</span>
458
+ 'WHMCS Marketplace publishing new product version failed.',
459
+ error.message
460
+ )
398
461
  <span class="cstat-no" title="statement not covered" > success = false</span>
399
462
  }
400
463
  }
@@ -414,10 +477,9 @@ module.exports = async (pluginConfig, context) =&gt; {
414
477
  </div><!-- /wrapper -->
415
478
  <div class='footer quiet pad2 space-top1 center small'>
416
479
  Code coverage generated by
417
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
418
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
480
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
481
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
419
482
  </div>
420
- </div>
421
483
  <script src="../prettify.js"></script>
422
484
  <script>
423
485
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
@@ -156,10 +162,10 @@
156
162
  <span class="cline-any cline-neutral">&nbsp;</span>
157
163
  <span class="cline-any cline-yes">5x</span>
158
164
  <span class="cline-any cline-yes">5x</span>
159
- <span class="cline-any cline-yes">333x</span>
160
- <span class="cline-any cline-yes">204x</span>
165
+ <span class="cline-any cline-yes">343x</span>
166
+ <span class="cline-any cline-yes">223x</span>
161
167
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">129x</span>
168
+ <span class="cline-any cline-yes">120x</span>
163
169
  <span class="cline-any cline-neutral">&nbsp;</span>
164
170
  <span class="cline-any cline-neutral">&nbsp;</span>
165
171
  <span class="cline-any cline-yes">5x</span>
@@ -249,10 +255,9 @@ module.exports = async (DEBUG, logger) =&gt; {
249
255
  </div><!-- /wrapper -->
250
256
  <div class='footer quiet pad2 space-top1 center small'>
251
257
  Code coverage generated by
252
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
253
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
258
+ <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)
254
260
  </div>
255
- </div>
256
261
  <script src="../prettify.js"></script>
257
262
  <script>
258
263
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -90,10 +96,9 @@
90
96
  </div><!-- /wrapper -->
91
97
  <div class='footer quiet pad2 space-top1 center small'>
92
98
  Code coverage generated by
93
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
94
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
99
+ <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)
95
101
  </div>
96
- </div>
97
102
  <script src="../prettify.js"></script>
98
103
  <script>
99
104
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line low'></div>
59
65
  <pre><table class="coverage">
@@ -300,10 +306,9 @@ const puppet = <span class="cstat-no" title="statement not covered" >require('./
300
306
  </div><!-- /wrapper -->
301
307
  <div class='footer quiet pad2 space-top1 center small'>
302
308
  Code coverage generated by
303
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
304
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
309
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
310
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
305
311
  </div>
306
- </div>
307
312
  <script src="../prettify.js"></script>
308
313
  <script>
309
314
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -354,10 +360,9 @@ module.exports = async (pluginConfig, context) =&gt; {
354
360
  </div><!-- /wrapper -->
355
361
  <div class='footer quiet pad2 space-top1 center small'>
356
362
  Code coverage generated by
357
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
358
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
363
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
364
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
359
365
  </div>
360
- </div>
361
366
  <script src="../prettify.js"></script>
362
367
  <script>
363
368
  window.onload = function () {
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -123,10 +129,9 @@ module.exports = async (pluginConfig, context) =&gt; {
123
129
  </div><!-- /wrapper -->
124
130
  <div class='footer quiet pad2 space-top1 center small'>
125
131
  Code coverage generated by
126
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
127
- at Tue Nov 09 2021 15:31:09 GMT+0000 (Coordinated Universal Time)
132
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
133
+ at Wed Jun 08 2022 13:10:47 GMT+0000 (Coordinated Universal Time)
128
134
  </div>
129
- </div>
130
135
  <script src="../prettify.js"></script>
131
136
  <script>
132
137
  window.onload = function () {
File without changes
File without changes
@@ -24,6 +24,31 @@ var addSorting = (function() {
24
24
  return getTableHeader().querySelectorAll('th')[n];
25
25
  }
26
26
 
27
+ function onFilterInput() {
28
+ const searchValue = document.getElementById('fileSearch').value;
29
+ const rows = document.getElementsByTagName('tbody')[0].children;
30
+ for (let i = 0; i < rows.length; i++) {
31
+ const row = rows[i];
32
+ if (
33
+ row.textContent
34
+ .toLowerCase()
35
+ .includes(searchValue.toLowerCase())
36
+ ) {
37
+ row.style.display = '';
38
+ } else {
39
+ row.style.display = 'none';
40
+ }
41
+ }
42
+ }
43
+
44
+ // loads the search box
45
+ function addSearchBox() {
46
+ var template = document.getElementById('filterTemplate');
47
+ var templateClone = template.content.cloneNode(true);
48
+ templateClone.getElementById('fileSearch').oninput = onFilterInput;
49
+ template.parentElement.appendChild(templateClone);
50
+ }
51
+
27
52
  // loads all columns
28
53
  function loadColumns() {
29
54
  var colNodes = getTableHeader().querySelectorAll('th'),
@@ -162,6 +187,7 @@ var addSorting = (function() {
162
187
  }
163
188
  cols = loadColumns();
164
189
  loadData();
190
+ addSearchBox();
165
191
  addSortIndicators();
166
192
  enableUI();
167
193
  };
package/lib/publish.js CHANGED
@@ -14,11 +14,14 @@ module.exports = async (pluginConfig, context) => {
14
14
 
15
15
  if (!notes || !notes.length || !version || !version.length) {
16
16
  debug('publishing new product version failed. No input data available.')
17
- logger.error('WHMCS Marketplace publishing new product version failed. No input data available.')
17
+ logger.error(
18
+ 'WHMCS Marketplace publishing new product version failed. No input data available.'
19
+ )
18
20
  }
19
21
 
20
22
  let success = true
21
- const { whmcsLOGIN, whmcsPASSWORD, whmcsPRODUCTID, DEBUG } = resolveConfig(context)
23
+ const { whmcsLOGIN, whmcsPASSWORD, whmcsPRODUCTID, DEBUG } =
24
+ resolveConfig(context)
22
25
  const { gotoOpts, navOpts, selectorOpts, page } = await puppet(DEBUG, logger)
23
26
 
24
27
  debug(`WHMCS Marketplace Product ID: ${whmcsPRODUCTID}`)
@@ -29,8 +32,9 @@ module.exports = async (pluginConfig, context) => {
29
32
  debug(`Notes: ${notes}`)
30
33
  logger.log(`Release Notes: ${notes}`)
31
34
 
32
- // strip markdown links from notes as not allowed to keep
33
- const cleanedNotes = notes.replace(/\[(.*?)\]\((.+?)\)/gm, '$1')
35
+ // strip markdown links from notes as not allowed to keep (taken from remove-markdown and cleaned up)
36
+ const cleanedNotes = notes.replace(/\[([^[\]]*)\]\([^()]*\)/gm, '$1')
37
+
34
38
  const wmbase = 'https://marketplace.whmcs.com'
35
39
  let url = `${wmbase}/user/login`
36
40
 
@@ -67,27 +71,39 @@ module.exports = async (pluginConfig, context) => {
67
71
  await page.waitForSelector(selector, selectorOpts)
68
72
  debug('product page submit button selector found')
69
73
  /* istanbul ignore next */
70
- await page.$eval('#version', (el, value) => {
71
- el.value = value
72
- }, version)
74
+ await page.$eval(
75
+ '#version',
76
+ (el, value) => {
77
+ el.value = value
78
+ },
79
+ version
80
+ )
73
81
  debug('form input for version finished.')
74
82
 
75
83
  // fill input type date with localized string
76
84
  // https://www.mattzeunert.com/2020/04/01/filling-out-a-date-input-with-puppeteer.html
77
85
  const date = releaseDate ? new Date(releaseDate) : new Date()
78
86
  /* istanbul ignore next */
79
- const dateString = await page.evaluate(d => new Date(d).toLocaleDateString(navigator.language, {
80
- day: '2-digit',
81
- month: '2-digit',
82
- year: 'numeric'
83
- }), date.toISOString())
87
+ const dateString = await page.evaluate(
88
+ (d) =>
89
+ new Date(d).toLocaleDateString(navigator.language, {
90
+ day: '2-digit',
91
+ month: '2-digit',
92
+ year: 'numeric'
93
+ }),
94
+ date.toISOString()
95
+ )
84
96
  await page.type('#released_at', dateString)
85
97
 
86
98
  debug('form input for released_at finished.')
87
99
  /* istanbul ignore next */
88
- await page.$eval('#description', (el, value) => {
89
- el.value = value
90
- }, cleanedNotes)
100
+ await page.$eval(
101
+ '#description',
102
+ (el, value) => {
103
+ el.value = value
104
+ },
105
+ cleanedNotes
106
+ )
91
107
  debug('form input for description finished.')
92
108
  const nav = page.waitForNavigation(navOpts)
93
109
  await page.hover(selector)
@@ -101,7 +117,10 @@ module.exports = async (pluginConfig, context) => {
101
117
  success = true
102
118
  } catch (error) {
103
119
  debug('publishing new product version failed.', error.message)
104
- logger.error('WHMCS Marketplace publishing new product version failed.', error.message)
120
+ logger.error(
121
+ 'WHMCS Marketplace publishing new product version failed.',
122
+ error.message
123
+ )
105
124
  success = false
106
125
  }
107
126
  }