@insignia-education/api-sdk-js 0.15.61 → 0.15.63

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 (90) hide show
  1. package/.github/workflows/npm-publish-github-packages.yml +95 -12
  2. package/coverage/clover.xml +132 -1512
  3. package/coverage/coverage-final.json +1 -47
  4. package/coverage/lcov-report/Client.js.html +463 -0
  5. package/coverage/lcov-report/index.html +20 -65
  6. package/coverage/lcov-report/src/Client.js.html +141 -132
  7. package/coverage/lcov-report/src/api/index.html +1 -1
  8. package/coverage/lcov-report/src/api/index.js.html +8 -8
  9. package/coverage/lcov-report/src/api/v1/Accounts.js.html +3 -3
  10. package/coverage/lcov-report/src/api/v1/Admin.js.html +3 -3
  11. package/coverage/lcov-report/src/api/v1/Auth.js.html +7 -7
  12. package/coverage/lcov-report/src/api/v1/Categories.js.html +8 -8
  13. package/coverage/lcov-report/src/api/v1/Changelogs.js.html +8 -8
  14. package/coverage/lcov-report/src/api/v1/Configs.js.html +8 -8
  15. package/coverage/lcov-report/src/api/v1/ContactForms.js.html +8 -8
  16. package/coverage/lcov-report/src/api/v1/ConversationalTopics.js.html +8 -8
  17. package/coverage/lcov-report/src/api/v1/Countries.js.html +8 -8
  18. package/coverage/lcov-report/src/api/v1/Coupons.js.html +16 -16
  19. package/coverage/lcov-report/src/api/v1/Courses.js.html +27 -27
  20. package/coverage/lcov-report/src/api/v1/Currencies.js.html +10 -10
  21. package/coverage/lcov-report/src/api/v1/Dashboard.js.html +3 -3
  22. package/coverage/lcov-report/src/api/v1/EducationCenter.js.html +3 -3
  23. package/coverage/lcov-report/src/api/v1/Employee.js.html +5 -5
  24. package/coverage/lcov-report/src/api/v1/Files.js.html +8 -8
  25. package/coverage/lcov-report/src/api/v1/Forums.js.html +8 -8
  26. package/coverage/lcov-report/src/api/v1/Hashes.js.html +16 -13
  27. package/coverage/lcov-report/src/api/v1/Insignias.js.html +8 -8
  28. package/coverage/lcov-report/src/api/v1/Languages.js.html +8 -8
  29. package/coverage/lcov-report/src/api/v1/MailBlacklist.js.html +8 -8
  30. package/coverage/lcov-report/src/api/v1/MailingLists.js.html +3 -3
  31. package/coverage/lcov-report/src/api/v1/Offers.js.html +16 -16
  32. package/coverage/lcov-report/src/api/v1/Organizations.js.html +52 -52
  33. package/coverage/lcov-report/src/api/v1/PaymentMethods.js.html +7 -7
  34. package/coverage/lcov-report/src/api/v1/Payments.js.html +3 -3
  35. package/coverage/lcov-report/src/api/v1/Premiums.js.html +3 -3
  36. package/coverage/lcov-report/src/api/v1/Quizzes.js.html +42 -42
  37. package/coverage/lcov-report/src/api/v1/Sales.js.html +3 -3
  38. package/coverage/lcov-report/src/api/v1/Search.js.html +3 -3
  39. package/coverage/lcov-report/src/api/v1/ShortLinks.js.html +8 -8
  40. package/coverage/lcov-report/src/api/v1/Surveys.js.html +8 -8
  41. package/coverage/lcov-report/src/api/v1/Taxes.js.html +8 -8
  42. package/coverage/lcov-report/src/api/v1/Teacher.js.html +100 -70
  43. package/coverage/lcov-report/src/api/v1/Telegram.js.html +3 -3
  44. package/coverage/lcov-report/src/api/v1/TwoFactor.js.html +3 -3
  45. package/coverage/lcov-report/src/api/v1/UserSessionTypes.js.html +3 -3
  46. package/coverage/lcov-report/src/api/v1/UserTypes.js.html +8 -8
  47. package/coverage/lcov-report/src/api/v1/Users.js.html +112 -16
  48. package/coverage/lcov-report/src/api/v1/Utm.js.html +3 -3
  49. package/coverage/lcov-report/src/api/v1/Webauthn.js.html +3 -3
  50. package/coverage/lcov-report/src/api/v1/Zoom.js.html +19 -19
  51. package/coverage/lcov-report/src/api/v1/index.html +154 -184
  52. package/coverage/lcov-report/src/api/v1/index.js.html +52 -64
  53. package/coverage/lcov-report/src/index.html +21 -21
  54. package/coverage/lcov-report/src/index.js.html +3 -3
  55. package/coverage/lcov-report/tests/helpers.js.html +11 -11
  56. package/coverage/lcov-report/tests/index.html +7 -7
  57. package/coverage/lcov.info +146 -2451
  58. package/coverage/test-report.html +1 -10
  59. package/jest.config.mjs +12 -1
  60. package/package.json +2 -2
  61. package/src/api/v1/Coupons.js +11 -0
  62. package/src/api/v1/Courses.js +2 -0
  63. package/src/api/v1/Hashes.js +3 -2
  64. package/src/api/v1/Telegram.js +6 -0
  65. package/src/api/v1/Users.js +12 -0
  66. package/src/api/v1/index.js +0 -4
  67. package/tests/integration/api/v1/accounts.test.js +5 -11
  68. package/tests/integration/api/v1/auth/login.test.js +18 -34
  69. package/tests/integration/api/v1/conversational-topics.test.js +3 -5
  70. package/tests/integration/api/v1/countries.test.js +1 -1
  71. package/tests/integration/api/v1/coupons.test.js +2 -9
  72. package/tests/integration/api/v1/currencies/index.test.js +1 -1
  73. package/tests/integration/api/v1/files.test.js +18 -15
  74. package/tests/integration/api/v1/hashes.test.js +2 -10
  75. package/tests/integration/api/v1/mail-blacklist.test.js +2 -9
  76. package/tests/integration/api/v1/offers.test.js +2 -9
  77. package/tests/integration/api/v1/organizations.test.js +8 -8
  78. package/tests/integration/api/v1/quizzes/index.test.js +0 -2
  79. package/tests/integration/api/v1/short-links.test.js +2 -9
  80. package/tests/integration/api/v1/taxes.test.js +2 -3
  81. package/tests/integration/api/v1/teacher/index.test.js +1 -1
  82. package/tests/integration/api/v1/telegram.test.js +33 -0
  83. package/tests/integration/api/v1/user-types.test.js +2 -4
  84. package/tests/integration/api/v1/users/index.test.js +10 -13
  85. package/tests/integration/api/v1/users/telegram.test.js +36 -0
  86. package/tests/integration/api/v1/zoom.test.js +2 -9
  87. package/src/api/v1/Categories.js +0 -12
  88. package/src/api/v1/Configs.js +0 -12
  89. package/tests/integration/api/v1/categories.test.js +0 -19
  90. package/tests/integration/api/v1/configs.test.js +0 -20
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">65.85% </span>
26
+ <span class="strong">89.68% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>81/123</span>
28
+ <span class='fraction'>113/126</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">36.66% </span>
33
+ <span class="strong">62.22% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/30</span>
35
+ <span class='fraction'>28/45</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">71.42% </span>
40
+ <span class="strong">92.85% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/14</span>
42
+ <span class='fraction'>13/14</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">65.85% </span>
47
+ <span class="strong">89.68% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>81/123</span>
49
+ <span class='fraction'>113/126</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>
@@ -186,71 +186,74 @@
186
186
  <a name='L121'></a><a href='#L121'>121</a>
187
187
  <a name='L122'></a><a href='#L122'>122</a>
188
188
  <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
190
193
  <span class="cline-any cline-yes">1x</span>
191
194
  <span class="cline-any cline-yes">1x</span>
192
195
  <span class="cline-any cline-yes">1x</span>
193
196
  <span class="cline-any cline-yes">1x</span>
197
+ <span class="cline-any cline-yes">30x</span>
198
+ <span class="cline-any cline-yes">30x</span>
194
199
  <span class="cline-any cline-yes">1x</span>
195
200
  <span class="cline-any cline-yes">1x</span>
201
+ <span class="cline-any cline-yes">120x</span>
202
+ <span class="cline-any cline-yes">120x</span>
203
+ <span class="cline-any cline-yes">120x</span>
204
+ <span class="cline-any cline-yes">120x</span>
205
+ <span class="cline-any cline-yes">120x</span>
206
+ <span class="cline-any cline-yes">120x</span>
207
+ <span class="cline-any cline-yes">120x</span>
208
+ <span class="cline-any cline-yes">120x</span>
196
209
  <span class="cline-any cline-yes">1x</span>
197
210
  <span class="cline-any cline-yes">1x</span>
198
- <span class="cline-any cline-yes">4x</span>
199
- <span class="cline-any cline-yes">4x</span>
200
- <span class="cline-any cline-yes">4x</span>
201
- <span class="cline-any cline-yes">4x</span>
202
- <span class="cline-any cline-yes">4x</span>
203
- <span class="cline-any cline-yes">4x</span>
204
- <span class="cline-any cline-yes">4x</span>
205
- <span class="cline-any cline-yes">4x</span>
206
- <span class="cline-any cline-yes">1x</span>
211
+ <span class="cline-any cline-yes">103x</span>
212
+ <span class="cline-any cline-yes">103x</span>
213
+ <span class="cline-any cline-yes">103x</span>
214
+ <span class="cline-any cline-yes">103x</span>
215
+ <span class="cline-any cline-yes">103x</span>
216
+ <span class="cline-any cline-yes">103x</span>
217
+ <span class="cline-any cline-yes">103x</span>
218
+ <span class="cline-any cline-yes">103x</span>
219
+ <span class="cline-any cline-yes">103x</span>
220
+ <span class="cline-any cline-yes">103x</span>
221
+ <span class="cline-any cline-yes">103x</span>
222
+ <span class="cline-any cline-yes">103x</span>
207
223
  <span class="cline-any cline-yes">1x</span>
208
- <span class="cline-any cline-yes">3x</span>
209
- <span class="cline-any cline-yes">3x</span>
210
- <span class="cline-any cline-yes">3x</span>
211
- <span class="cline-any cline-yes">3x</span>
212
- <span class="cline-any cline-yes">3x</span>
213
- <span class="cline-any cline-yes">3x</span>
214
- <span class="cline-any cline-yes">3x</span>
215
- <span class="cline-any cline-yes">3x</span>
216
- <span class="cline-any cline-yes">3x</span>
217
- <span class="cline-any cline-yes">3x</span>
218
- <span class="cline-any cline-yes">3x</span>
219
- <span class="cline-any cline-yes">3x</span>
220
224
  <span class="cline-any cline-yes">1x</span>
225
+ <span class="cline-any cline-yes">104x</span>
226
+ <span class="cline-any cline-yes">57x</span>
227
+ <span class="cline-any cline-yes">57x</span>
228
+ <span class="cline-any cline-yes">57x</span>
229
+ <span class="cline-any cline-yes">57x</span>
230
+ <span class="cline-any cline-yes">57x</span>
221
231
  <span class="cline-any cline-yes">1x</span>
222
- <span class="cline-any cline-yes">3x</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
232
  <span class="cline-any cline-yes">1x</span>
229
- <span class="cline-any cline-yes">1x</span>
230
- <span class="cline-any cline-yes">3x</span>
231
- <span class="cline-any cline-yes">3x</span>
232
- <span class="cline-any cline-yes">3x</span>
233
- <span class="cline-any cline-yes">3x</span>
234
- <span class="cline-any cline-yes">3x</span>
235
- <span class="cline-any cline-yes">3x</span>
236
- <span class="cline-any cline-yes">3x</span>
237
- <span class="cline-any cline-yes">3x</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-yes">3x</span>
233
+ <span class="cline-any cline-yes">103x</span>
234
+ <span class="cline-any cline-yes">103x</span>
235
+ <span class="cline-any cline-yes">103x</span>
236
+ <span class="cline-any cline-yes">103x</span>
237
+ <span class="cline-any cline-yes">103x</span>
238
+ <span class="cline-any cline-yes">103x</span>
239
+ <span class="cline-any cline-yes">103x</span>
240
+ <span class="cline-any cline-yes">103x</span>
241
+ <span class="cline-any cline-yes">37x</span>
242
+ <span class="cline-any cline-yes">37x</span>
243
+ <span class="cline-any cline-yes">37x</span>
244
+ <span class="cline-any cline-yes">37x</span>
245
+ <span class="cline-any cline-yes">37x</span>
246
+ <span class="cline-any cline-yes">37x</span>
247
+ <span class="cline-any cline-yes">103x</span>
245
248
  <span class="cline-any cline-yes">1x</span>
246
249
  <span class="cline-any cline-yes">1x</span>
247
- <span class="cline-any cline-yes">3x</span>
248
- <span class="cline-any cline-yes">3x</span>
249
- <span class="cline-any cline-yes">3x</span>
250
- <span class="cline-any cline-yes">3x</span>
251
- <span class="cline-any cline-yes">3x</span>
252
- <span class="cline-any cline-yes">3x</span>
253
- <span class="cline-any cline-yes">3x</span>
250
+ <span class="cline-any cline-yes">103x</span>
251
+ <span class="cline-any cline-yes">103x</span>
252
+ <span class="cline-any cline-yes">103x</span>
253
+ <span class="cline-any cline-yes">103x</span>
254
+ <span class="cline-any cline-yes">103x</span>
255
+ <span class="cline-any cline-yes">103x</span>
256
+ <span class="cline-any cline-yes">103x</span>
254
257
  <span class="cline-any cline-no">&nbsp;</span>
255
258
  <span class="cline-any cline-no">&nbsp;</span>
256
259
  <span class="cline-any cline-no">&nbsp;</span>
@@ -259,41 +262,33 @@
259
262
  <span class="cline-any cline-no">&nbsp;</span>
260
263
  <span class="cline-any cline-no">&nbsp;</span>
261
264
  <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-yes">3x</span>
263
- <span class="cline-any cline-yes">1x</span>
264
- <span class="cline-any cline-yes">1x</span>
265
- <span class="cline-any cline-yes">3x</span>
266
- <span class="cline-any cline-yes">3x</span>
267
- <span class="cline-any cline-yes">3x</span>
268
- <span class="cline-any cline-yes">3x</span>
269
- <span class="cline-any cline-yes">3x</span>
270
- <span class="cline-any cline-yes">3x</span>
271
- <span class="cline-any cline-yes">3x</span>
272
- <span class="cline-any cline-yes">3x</span>
273
- <span class="cline-any cline-yes">3x</span>
274
- <span class="cline-any cline-yes">3x</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
- <span class="cline-any cline-yes">3x</span>
277
- <span class="cline-any cline-yes">3x</span>
265
+ <span class="cline-any cline-yes">103x</span>
266
+ <span class="cline-any cline-yes">1x</span>
267
+ <span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-yes">103x</span>
269
+ <span class="cline-any cline-yes">103x</span>
270
+ <span class="cline-any cline-yes">103x</span>
271
+ <span class="cline-any cline-yes">102x</span>
272
+ <span class="cline-any cline-yes">103x</span>
273
+ <span class="cline-any cline-yes">8x</span>
274
+ <span class="cline-any cline-yes">8x</span>
275
+ <span class="cline-any cline-yes">8x</span>
276
+ <span class="cline-any cline-yes">8x</span>
277
+ <span class="cline-any cline-yes">8x</span>
278
+ <span class="cline-any cline-yes">94x</span>
279
+ <span class="cline-any cline-yes">103x</span>
280
+ <span class="cline-any cline-yes">103x</span>
281
+ <span class="cline-any cline-yes">1x</span>
282
+ <span class="cline-any cline-yes">1x</span>
283
+ <span class="cline-any cline-yes">1x</span>
284
+ <span class="cline-any cline-yes">1x</span>
285
+ <span class="cline-any cline-yes">1x</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-yes">1x</span>
288
+ <span class="cline-any cline-yes">1x</span>
289
+ <span class="cline-any cline-yes">1x</span>
278
290
  <span class="cline-any cline-yes">1x</span>
279
291
  <span class="cline-any cline-yes">1x</span>
280
- <span class="cline-any cline-no">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
283
- <span class="cline-any cline-no">&nbsp;</span>
284
- <span class="cline-any cline-no">&nbsp;</span>
285
- <span class="cline-any cline-no">&nbsp;</span>
286
- <span class="cline-any cline-no">&nbsp;</span>
287
- <span class="cline-any cline-no">&nbsp;</span>
288
- <span class="cline-any cline-no">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-no">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
292
  <span class="cline-any cline-yes">1x</span>
298
293
  <span class="cline-any cline-yes">1x</span>
299
294
  <span class="cline-any cline-yes">1x</span>
@@ -307,6 +302,17 @@
307
302
  <span class="cline-any cline-yes">1x</span>
308
303
  <span class="cline-any cline-yes">1x</span>
309
304
  <span class="cline-any cline-yes">1x</span>
305
+ <span class="cline-any cline-yes">56x</span>
306
+ <span class="cline-any cline-yes">4x</span>
307
+ <span class="cline-any cline-yes">4x</span>
308
+ <span class="cline-any cline-yes">4x</span>
309
+ <span class="cline-any cline-yes">4x</span>
310
+ <span class="cline-any cline-yes">4x</span>
311
+ <span class="cline-any cline-yes">56x</span>
312
+ <span class="cline-any cline-yes">56x</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-yes">1x</span>
310
316
  <span class="cline-any cline-yes">1x</span>
311
317
  <span class="cline-any cline-yes">1x</span>
312
318
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export default class InsigniaClient {
@@ -336,18 +342,18 @@
336
342
  if (this.#baseUrl.includes('ngrok')) <span class="branch-0 cbranch-no" title="branch not covered" >headers['ngrok-skip-browser-warning'] = 'true';</span>
337
343
  &nbsp;
338
344
  const cookie = this.#cookieHeader();
339
- if (cookie) <span class="branch-0 cbranch-no" title="branch not covered" >headers.Cookie = cookie;</span>
345
+ if (cookie) headers.Cookie = cookie;
340
346
  &nbsp;
341
347
  return headers;
342
348
  }
343
349
  &nbsp;
344
350
  #cookieHeader() {
345
- if (typeof window !== 'undefined' || this.#cookies.size === 0) return null<span class="branch-0 cbranch-no" title="branch not covered" >;</span>
346
- <span class="cstat-no" title="statement not covered" ></span>
347
- <span class="cstat-no" title="statement not covered" > return Array.from(this.#cookies.entries())</span>
348
- <span class="cstat-no" title="statement not covered" > .map(([name, value]) =&gt; `${name}=${value}`)</span>
349
- <span class="cstat-no" title="statement not covered" > .join('; ');</span>
350
- <span class="cstat-no" title="statement not covered" > }</span>
351
+ if (typeof window !== 'undefined' || this.#cookies.size === 0) return null;
352
+ &nbsp;
353
+ return Array.from(this.#cookies.entries())
354
+ .map(([name, value]) =&gt; `${name}=${value}`)
355
+ .join('; ');
356
+ }
351
357
  &nbsp;
352
358
  #storeCookies(response) {
353
359
  if (typeof window !== 'undefined') <span class="branch-0 cbranch-no" title="branch not covered" >return;</span>
@@ -357,13 +363,13 @@
357
363
  ? headers.getSetCookie()
358
364
  <span class="branch-0 cbranch-no" title="branch not covered" > : [headers?.get?.('set-cookie')].filter(Boolean);</span>
359
365
  &nbsp;
360
- for (const setCookie of setCookies) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
361
- <span class="cstat-no" title="statement not covered" > const [pair] = setCookie.split(';');</span>
362
- <span class="cstat-no" title="statement not covered" > const separator = pair.indexOf('=');</span>
363
- <span class="cstat-no" title="statement not covered" > if (separator === -1) continue;</span>
364
- <span class="cstat-no" title="statement not covered" ></span>
365
- <span class="cstat-no" title="statement not covered" > this.#cookies.set(pair.slice(0, separator), pair.slice(separator + 1));</span>
366
- <span class="cstat-no" title="statement not covered" > }</span>
366
+ for (const setCookie of setCookies) {
367
+ const [pair] = setCookie.split(';');
368
+ const separator = pair.indexOf('=');
369
+ if (separator === -1) <span class="branch-0 cbranch-no" title="branch not covered" >continue;</span>
370
+ &nbsp;
371
+ this.#cookies.set(pair.slice(0, separator), pair.slice(separator + 1));
372
+ }
367
373
  }
368
374
  &nbsp;
369
375
  async #parseResponse(response) {
@@ -394,42 +400,45 @@
394
400
  err.status = response.status;
395
401
  try { err.data = await this.#parseResponse(response); } <span class="branch-0 cbranch-no" title="branch not covered" >catch { /* body wasn't parseable — leave err.data unset */ }</span>
396
402
  throw err;
397
- <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
398
- <span class="cstat-no" title="statement not covered" > const data = await this.#parseResponse(response);</span>
399
- return data?.success<span class="branch-0 cbranch-no" title="branch not covered" > ? data.response<span class="branch-0 cbranch-no" title="branch not covered" > </span>: data;</span>
403
+ }
404
+ const data = await this.#parseResponse(response);
405
+ return data?.success ? data.response<span class="branch-0 cbranch-no" title="branch not covered" > : data;</span>
400
406
  }
401
407
  &nbsp;
402
- <span class="fstat-no" title="function not covered" > async upload(path, formData) {</span>
403
- <span class="cstat-no" title="statement not covered" > const headers = { 'Accept': 'application/json' };</span>
404
- <span class="cstat-no" title="statement not covered" > if (this.#baseUrl.includes('ngrok')) headers['ngrok-skip-browser-warning'] = 'true';</span>
405
- <span class="cstat-no" title="statement not covered" > const cookie = this.#cookieHeader();</span>
406
- <span class="cstat-no" title="statement not covered" > if (cookie) headers.Cookie = cookie;</span>
407
- <span class="cstat-no" title="statement not covered" > const response = await fetch(`${this.#baseUrl}${path}`, {</span>
408
- <span class="cstat-no" title="statement not covered" > method: 'PUT', headers, credentials: 'include', body: formData,</span>
409
- <span class="cstat-no" title="statement not covered" > });</span>
410
- <span class="cstat-no" title="statement not covered" > this.#storeCookies(response);</span>
411
- <span class="cstat-no" title="statement not covered" > if (!response.ok) {</span>
408
+ async upload(path, formData) {
409
+ const headers = { 'Accept': 'application/json' };
410
+ if (this.#baseUrl.includes('ngrok')) <span class="branch-0 cbranch-no" title="branch not covered" >headers['ngrok-skip-browser-warning'] = 'true';</span>
411
+ const cookie = this.#cookieHeader();
412
+ if (cookie) headers.Cookie = cookie;
413
+ // POST, not PUT: PHP only parses multipart/form-data bodies into $_FILES for
414
+ // POST requests a PUT with the exact same body leaves $_FILES empty and the
415
+ // raw body unread, so `$request-&gt;file(...)` is always null server-side.
416
+ const response = await fetch(`${this.#baseUrl}${path}`, {
417
+ method: 'POST', headers, credentials: 'include', body: formData,
418
+ });
419
+ this.#storeCookies(response);
420
+ if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
412
421
  <span class="cstat-no" title="statement not covered" > const err = new Error(`HTTP ${response.status}`);</span>
413
422
  <span class="cstat-no" title="statement not covered" > err.status = response.status;</span>
414
423
  <span class="cstat-no" title="statement not covered" > try { err.data = await this.#parseResponse(response); } catch { /* body wasn't parseable — leave err.data unset */ }</span>
415
424
  <span class="cstat-no" title="statement not covered" > throw err;</span>
416
425
  <span class="cstat-no" title="statement not covered" > }</span>
417
- <span class="cstat-no" title="statement not covered" > const data = await this.#parseResponse(response);</span>
418
- <span class="cstat-no" title="statement not covered" > return data?.success ? data.response : data;</span>
419
- <span class="cstat-no" title="statement not covered" > }</span>
426
+ const data = await this.#parseResponse(response);
427
+ return data?.success ? data.response<span class="branch-0 cbranch-no" title="branch not covered" > : data;</span>
428
+ }
420
429
  &nbsp;
421
430
  get(path, params = null) {
422
- if (params<span class="branch-0 cbranch-no" title="branch not covered" > &amp;&amp; typeof params === 'object')</span> <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
423
- <span class="cstat-no" title="statement not covered" > const qs = new URLSearchParams(</span>
424
- <span class="cstat-no" title="statement not covered" > Object.entries(params).filter(([, v]) =&gt; v !== undefined &amp;&amp; v !== null)</span>
425
- <span class="cstat-no" title="statement not covered" > ).toString();</span>
426
- <span class="cstat-no" title="statement not covered" > if (qs) path += (path.includes('?') ? '&amp;' : '?') + qs;</span>
427
- <span class="cstat-no" title="statement not covered" > }</span>
431
+ if (params &amp;&amp; typeof params === 'object') {
432
+ const qs = new URLSearchParams(
433
+ Object.entries(params).filter(([, v]) =&gt; v !== undefined &amp;&amp; v !== null)
434
+ ).toString();
435
+ if (qs) path += (path.includes('?')<span class="branch-0 cbranch-no" title="branch not covered" > ? '&amp;' </span>: '?') + qs;
436
+ }
428
437
  return this.#request('GET', path);
429
438
  }
430
439
  post(path, body = null) { return this.#request('POST', path, body); }
431
- <span class="fstat-no" title="function not covered" > put(path, body = null) { return this.#request('PUT', path, body); }</span>
432
- <span class="fstat-no" title="function not covered" > patch(path, body = null){ return this.#request('PATCH', path, body); }</span>
440
+ put(path, body = null) { return this.#request('PUT', path, body); }
441
+ patch(path, body = null){ return this.#request('PATCH', path, body); }
433
442
  <span class="fstat-no" title="function not covered" > del(path) { return this.#request('DELETE', path); }</span>
434
443
  }
435
444
  &nbsp;</pre></td></tr></table></pre>
@@ -439,7 +448,7 @@
439
448
  <div class='footer quiet pad2 space-top1 center small'>
440
449
  Code coverage generated by
441
450
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
442
- at 2026-08-03T13:22:45.069Z
451
+ at 2026-08-09T19:41:47.271Z
443
452
  </div>
444
453
  <script src="../prettify.js"></script>
445
454
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-08-03T13:22:45.069Z
104
+ at 2026-08-09T19:41:47.271Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -81,15 +81,15 @@
81
81
  <span class="cline-any cline-yes">1x</span>
82
82
  <span class="cline-any cline-yes">1x</span>
83
83
  <span class="cline-any cline-yes">1x</span>
84
+ <span class="cline-any cline-yes">30x</span>
85
+ <span class="cline-any cline-yes">30x</span>
86
+ <span class="cline-any cline-yes">30x</span>
84
87
  <span class="cline-any cline-yes">1x</span>
85
88
  <span class="cline-any cline-yes">1x</span>
86
- <span class="cline-any cline-yes">1x</span>
87
- <span class="cline-any cline-yes">1x</span>
88
- <span class="cline-any cline-yes">1x</span>
89
- <span class="cline-any cline-yes">2x</span>
90
- <span class="cline-any cline-yes">2x</span>
91
- <span class="cline-any cline-yes">2x</span>
92
- <span class="cline-any cline-yes">2x</span>
89
+ <span class="cline-any cline-yes">60x</span>
90
+ <span class="cline-any cline-yes">60x</span>
91
+ <span class="cline-any cline-yes">60x</span>
92
+ <span class="cline-any cline-yes">60x</span>
93
93
  <span class="cline-any cline-yes">1x</span>
94
94
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import Insignia from '../index.js';
95
95
  &nbsp;
@@ -112,7 +112,7 @@ export default class InsigniaApi extends Insignia {
112
112
  <div class='footer quiet pad2 space-top1 center small'>
113
113
  Code coverage generated by
114
114
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
- at 2026-08-03T13:22:45.069Z
115
+ at 2026-08-09T19:41:47.271Z
116
116
  </div>
117
117
  <script src="../../prettify.js"></script>
118
118
  <script>
@@ -89,8 +89,8 @@
89
89
  <span class="cline-any cline-yes">1x</span>
90
90
  <span class="cline-any cline-yes">1x</span>
91
91
  <span class="cline-any cline-yes">1x</span>
92
- <span class="cline-any cline-yes">1x</span>
93
- <span class="cline-any cline-yes">1x</span>
92
+ <span class="cline-any cline-yes">30x</span>
93
+ <span class="cline-any cline-yes">30x</span>
94
94
  <span class="cline-any cline-yes">1x</span>
95
95
  <span class="cline-any cline-yes">1x</span>
96
96
  <span class="cline-any cline-yes">1x</span>
@@ -136,7 +136,7 @@
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at 2026-08-03T13:22:45.069Z
139
+ at 2026-08-09T19:41:47.271Z
140
140
  </div>
141
141
  <script src="../../../prettify.js"></script>
142
142
  <script>
@@ -79,8 +79,8 @@
79
79
  <span class="cline-any cline-yes">1x</span>
80
80
  <span class="cline-any cline-yes">1x</span>
81
81
  <span class="cline-any cline-yes">1x</span>
82
- <span class="cline-any cline-yes">1x</span>
83
- <span class="cline-any cline-yes">1x</span>
82
+ <span class="cline-any cline-yes">30x</span>
83
+ <span class="cline-any cline-yes">30x</span>
84
84
  <span class="cline-any cline-yes">1x</span>
85
85
  <span class="cline-any cline-yes">1x</span>
86
86
  <span class="cline-any cline-yes">1x</span>
@@ -106,7 +106,7 @@
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
- at 2026-08-03T13:22:45.069Z
109
+ at 2026-08-09T19:41:47.271Z
110
110
  </div>
111
111
  <script src="../../../prettify.js"></script>
112
112
  <script>
@@ -32,14 +32,14 @@
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>3/3</span>
35
+ <span class='fraction'>4/4</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">18.75% </span>
40
+ <span class="strong">25% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/16</span>
42
+ <span class='fraction'>4/16</span>
43
43
  </div>
44
44
 
45
45
 
@@ -91,8 +91,8 @@
91
91
  <span class="cline-any cline-yes">1x</span>
92
92
  <span class="cline-any cline-yes">1x</span>
93
93
  <span class="cline-any cline-yes">1x</span>
94
- <span class="cline-any cline-yes">1x</span>
95
- <span class="cline-any cline-yes">1x</span>
94
+ <span class="cline-any cline-yes">30x</span>
95
+ <span class="cline-any cline-yes">30x</span>
96
96
  <span class="cline-any cline-yes">1x</span>
97
97
  <span class="cline-any cline-yes">1x</span>
98
98
  <span class="cline-any cline-yes">1x</span>
@@ -124,7 +124,7 @@
124
124
  login(data) { return this.#client.post('/auth/login', data); }
125
125
  <span class="fstat-no" title="function not covered" > googleLogin(data) { return this.#client.post('/auth/google', data); }</span>
126
126
  <span class="fstat-no" title="function not covered" > refresh() { return this.#client.post('/auth/refresh'); }</span>
127
- <span class="fstat-no" title="function not covered" > logout() { return this.#client.post('/auth/logout'); }</span>
127
+ logout() { return this.#client.post('/auth/logout'); }
128
128
  <span class="fstat-no" title="function not covered" > user() { return this.#client.get('/auth/user'); }</span>
129
129
  <span class="fstat-no" title="function not covered" > forgotPassword(email, captcha_token) { return this.#client.post('/auth/forgot-password', { email, captcha_token }); }</span>
130
130
  <span class="fstat-no" title="function not covered" > resetPassword(data) { return this.#client.post('/auth/reset-password', data); }</span>
@@ -142,7 +142,7 @@
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at 2026-08-03T13:22:45.069Z
145
+ at 2026-08-09T19:41:47.271Z
146
146
  </div>
147
147
  <script src="../../../prettify.js"></script>
148
148
  <script>
@@ -30,16 +30,16 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/2</span>
35
+ <span class='fraction'>3/4</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">33.33% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/6</span>
42
+ <span class='fraction'>3/6</span>
43
43
  </div>
44
44
 
45
45
 
@@ -79,8 +79,8 @@
79
79
  <span class="cline-any cline-yes">1x</span>
80
80
  <span class="cline-any cline-yes">1x</span>
81
81
  <span class="cline-any cline-yes">1x</span>
82
- <span class="cline-any cline-yes">1x</span>
83
- <span class="cline-any cline-yes">1x</span>
82
+ <span class="cline-any cline-yes">32x</span>
83
+ <span class="cline-any cline-yes">32x</span>
84
84
  <span class="cline-any cline-yes">1x</span>
85
85
  <span class="cline-any cline-yes">1x</span>
86
86
  <span class="cline-any cline-yes">1x</span>
@@ -94,7 +94,7 @@
94
94
  this.#client = client;
95
95
  }
96
96
  &nbsp;
97
- <span class="fstat-no" title="function not covered" > get(id = null) { return id ? this.#client.get(`/categories/${id}`) : this.#client.get('/categories'); }</span>
97
+ get(id = null) { return id<span class="branch-0 cbranch-no" title="branch not covered" > ? this.#client.get(`/categories/${id}`) </span>: this.#client.get('/categories'); }
98
98
  <span class="fstat-no" title="function not covered" > create(data) { return this.#client.put('/categories', data); }</span>
99
99
  <span class="fstat-no" title="function not covered" > edit(id, data) { return this.#client.patch(`/categories/${id}`, data); }</span>
100
100
  <span class="fstat-no" title="function not covered" > delete(id) { return this.#client.del(`/categories/${id}`); }</span>
@@ -106,7 +106,7 @@
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
- at 2026-08-03T13:22:45.069Z
109
+ at 2026-08-09T18:35:41.178Z
110
110
  </div>
111
111
  <script src="../../../prettify.js"></script>
112
112
  <script>