halo-infinite-api 14.0.0 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/lcov-report/authentication/halo-authentication-client.ts.html +1 -1
- package/coverage/lcov-report/authentication/index.html +5 -5
- package/coverage/lcov-report/authentication/xbox-authentication-client.ts.html +18 -6
- package/coverage/lcov-report/core/halo-infinite-client.ts.html +127 -16
- package/coverage/lcov-report/core/index.html +14 -14
- package/coverage/lcov-report/core/request-policy.ts.html +1 -1
- package/coverage/lcov-report/core/token-persisters/in-memory-token-persister.ts.html +1 -1
- package/coverage/lcov-report/core/token-persisters/index.html +1 -1
- package/coverage/lcov-report/core/token-persisters/local-storage-token-persister.ts.html +1 -1
- package/coverage/lcov-report/core/token-persisters/node-fs-token-persister.ts.html +1 -1
- package/coverage/lcov-report/core/token-persisters/token-persister.ts.html +1 -1
- package/coverage/lcov-report/core/token-providers/auto-token-provider.ts.html +8 -11
- package/coverage/lcov-report/core/token-providers/index.html +7 -7
- package/coverage/lcov-report/core/token-providers/spartan-token-provider.ts.html +1 -1
- package/coverage/lcov-report/core/token-providers/static-xsts-ticket-token-spartan-token-provider.ts.html +7 -10
- package/coverage/lcov-report/core/token-providers/xbox-token-provider.ts.html +1 -1
- package/coverage/lcov-report/core/xbox-client.ts.html +1 -1
- package/coverage/lcov-report/endpoints/halo-core-endpoints.ts.html +1 -1
- package/coverage/lcov-report/endpoints/index.html +1 -1
- package/coverage/lcov-report/index.html +36 -36
- package/coverage/lcov-report/models/halo-infinite/api-formatted-date.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/asset-kind.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/asset-version-link.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/asset.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/ban-summary.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/game-variant-category.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/index.html +38 -8
- package/coverage/lcov-report/models/halo-infinite/match-count.ts.html +100 -0
- package/coverage/lcov-report/models/halo-infinite/match-info.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/match-outcome.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/match-skill.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/match-stats.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/match-type.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/matches-privacy.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/medals-metadata-file.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/player-match-history.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/playlist-csr-container.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/playlist-csr.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/playlist-experience.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/playlist.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/progression-file.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/season.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/service-record.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/settings.ts.html +205 -0
- package/coverage/lcov-report/models/halo-infinite/skill-result.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/stats.ts.html +1 -1
- package/coverage/lcov-report/models/halo-infinite/user-info.ts.html +1 -1
- package/coverage/lcov-report/models/index.html +1 -1
- package/coverage/lcov-report/models/spartan-token-proof.ts.html +1 -1
- package/coverage/lcov-report/models/spartan-token-request.ts.html +1 -1
- package/coverage/lcov-report/models/spartan-token.ts.html +1 -1
- package/coverage/lcov-report/models/xbox-ticket.ts.html +1 -1
- package/coverage/lcov-report/util/date-time.ts.html +21 -21
- package/coverage/lcov-report/util/expiry-token-cache.ts.html +1 -1
- package/coverage/lcov-report/util/fetch-function.ts.html +1 -1
- package/coverage/lcov-report/util/global-contants.ts.html +1 -1
- package/coverage/lcov-report/util/index.html +16 -16
- package/coverage/lcov-report/util/keyed-expiry-token-cache.ts.html +1 -1
- package/coverage/lcov-report/util/request-error.ts.html +1 -1
- package/coverage/lcov-report/util/resolvable-promise.ts.html +1 -1
- package/coverage/lcov-report/util/xuid.ts.html +1 -1
- package/coverage/lcov.info +331 -216
- package/dist/index.cjs +31 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -2
- package/dist/index.d.ts +45 -2
- package/dist/index.js +31 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/authentication/xbox-authentication-client.ts +6 -2
- package/src/core/halo-infinite-client.ts +45 -8
- package/src/core/token-providers/auto-token-provider.ts +3 -4
- package/src/core/token-providers/static-xsts-ticket-token-spartan-token-provider.ts +2 -3
- package/src/models/halo-infinite/match-count.ts +6 -0
- package/src/models/halo-infinite/settings.ts +40 -0
|
@@ -379,7 +379,7 @@
|
|
|
379
379
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
380
380
|
Code coverage generated by
|
|
381
381
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
382
|
-
at 2025-
|
|
382
|
+
at 2025-12-14T17:51:28.165Z
|
|
383
383
|
</div>
|
|
384
384
|
<script src="../prettify.js"></script>
|
|
385
385
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/273</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/
|
|
49
|
+
<span class='fraction'>0/273</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -99,13 +99,13 @@
|
|
|
99
99
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
100
100
|
</td>
|
|
101
101
|
<td data-value="0" class="pct low">0%</td>
|
|
102
|
-
<td data-value="
|
|
102
|
+
<td data-value="170" class="abs low">0/170</td>
|
|
103
103
|
<td data-value="0" class="pct low">0%</td>
|
|
104
104
|
<td data-value="1" class="abs low">0/1</td>
|
|
105
105
|
<td data-value="0" class="pct low">0%</td>
|
|
106
106
|
<td data-value="1" class="abs low">0/1</td>
|
|
107
107
|
<td data-value="0" class="pct low">0%</td>
|
|
108
|
-
<td data-value="
|
|
108
|
+
<td data-value="170" class="abs low">0/170</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
</tbody>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2025-
|
|
119
|
+
at 2025-12-14T17:51:28.165Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/170</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/
|
|
49
|
+
<span class='fraction'>0/170</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -229,7 +229,15 @@
|
|
|
229
229
|
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
230
|
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
231
|
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
237
|
+
<span class="cline-any cline-no"> </span>
|
|
238
|
+
<span class="cline-any cline-no"> </span>
|
|
239
|
+
<span class="cline-any cline-no"> </span>
|
|
240
|
+
<span class="cline-any cline-no"> </span>
|
|
233
241
|
<span class="cline-any cline-no"> </span>
|
|
234
242
|
<span class="cline-any cline-no"> </span>
|
|
235
243
|
<span class="cline-any cline-no"> </span>
|
|
@@ -416,6 +424,10 @@
|
|
|
416
424
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
417
425
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
418
426
|
<span class="cstat-no" title="statement not covered" >export class XboxAuthenticationClient {</span>
|
|
427
|
+
<span class="cstat-no" title="statement not covered" > static readonly userTokenName = "xbox.userToken";</span>
|
|
428
|
+
<span class="cstat-no" title="statement not covered" > static readonly xstsTicketName = (relyingParty: RelyingParty) =></span>
|
|
429
|
+
<span class="cstat-no" title="statement not covered" > `xbox.xstsTicket.${relyingParty}`;</span>
|
|
430
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
419
431
|
<span class="cstat-no" title="statement not covered" > private userTokenCache = new ExpiryTokenCache(</span>
|
|
420
432
|
<span class="cstat-no" title="statement not covered" > async (accessToken: string) => {</span>
|
|
421
433
|
<span class="cstat-no" title="statement not covered" > const url = "https://user.auth.xboxlive.com/user/authenticate";</span>
|
|
@@ -456,7 +468,7 @@
|
|
|
456
468
|
<span class="cstat-no" title="statement not covered" > const tokenPersister = await this.tokenPersisterOrPromise;</span>
|
|
457
469
|
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
458
470
|
<span class="cstat-no" title="statement not covered" > (await tokenPersister?.load<XboxTicket & { expiresAt: unknown }>(</span>
|
|
459
|
-
<span class="cstat-no" title="statement not covered" >
|
|
471
|
+
<span class="cstat-no" title="statement not covered" > XboxAuthenticationClient.userTokenName</span>
|
|
460
472
|
<span class="cstat-no" title="statement not covered" > )) ?? null</span>
|
|
461
473
|
<span class="cstat-no" title="statement not covered" > );</span>
|
|
462
474
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -490,7 +502,7 @@
|
|
|
490
502
|
<span class="cstat-no" title="statement not covered" > };</span>
|
|
491
503
|
<span class="cstat-no" title="statement not covered" > await (</span>
|
|
492
504
|
<span class="cstat-no" title="statement not covered" > await this.tokenPersisterOrPromise</span>
|
|
493
|
-
<span class="cstat-no" title="statement not covered" > )?.save(
|
|
505
|
+
<span class="cstat-no" title="statement not covered" > )?.save(XboxAuthenticationClient.xstsTicketName(relyingParty), token);</span>
|
|
494
506
|
<span class="cstat-no" title="statement not covered" > return token;</span>
|
|
495
507
|
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
496
508
|
<span class="cstat-no" title="statement not covered" > throw new RequestError(url, response);</span>
|
|
@@ -568,7 +580,7 @@
|
|
|
568
580
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
569
581
|
Code coverage generated by
|
|
570
582
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
571
|
-
at 2025-
|
|
583
|
+
at 2025-12-14T17:51:28.165Z
|
|
572
584
|
</div>
|
|
573
585
|
<script src="../prettify.js"></script>
|
|
574
586
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">44.
|
|
26
|
+
<span class="strong">44.83% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>230/513</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">19.23% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>5/
|
|
42
|
+
<span class='fraction'>5/26</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">44.
|
|
47
|
+
<span class="strong">44.83% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>230/513</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -539,7 +539,46 @@
|
|
|
539
539
|
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
540
|
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
541
|
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a
|
|
542
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
+
<a name='L514'></a><a href='#L514'>514</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
580
|
+
<span class="cline-any cline-yes">1x</span>
|
|
581
|
+
<span class="cline-any cline-yes">1x</span>
|
|
543
582
|
<span class="cline-any cline-yes">1x</span>
|
|
544
583
|
<span class="cline-any cline-yes">1x</span>
|
|
545
584
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -635,6 +674,11 @@
|
|
|
635
674
|
<span class="cline-any cline-no"> </span>
|
|
636
675
|
<span class="cline-any cline-no"> </span>
|
|
637
676
|
<span class="cline-any cline-no"> </span>
|
|
677
|
+
<span class="cline-any cline-no"> </span>
|
|
678
|
+
<span class="cline-any cline-yes">1x</span>
|
|
679
|
+
<span class="cline-any cline-yes">1x</span>
|
|
680
|
+
<span class="cline-any cline-yes">1x</span>
|
|
681
|
+
<span class="cline-any cline-yes">1x</span>
|
|
638
682
|
<span class="cline-any cline-yes">1x</span>
|
|
639
683
|
<span class="cline-any cline-yes">1x</span>
|
|
640
684
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -672,6 +716,12 @@
|
|
|
672
716
|
<span class="cline-any cline-yes">2x</span>
|
|
673
717
|
<span class="cline-any cline-yes">2x</span>
|
|
674
718
|
<span class="cline-any cline-yes">2x</span>
|
|
719
|
+
<span class="cline-any cline-yes">2x</span>
|
|
720
|
+
<span class="cline-any cline-yes">2x</span>
|
|
721
|
+
<span class="cline-any cline-yes">1x</span>
|
|
722
|
+
<span class="cline-any cline-yes">1x</span>
|
|
723
|
+
<span class="cline-any cline-yes">1x</span>
|
|
724
|
+
<span class="cline-any cline-yes">1x</span>
|
|
675
725
|
<span class="cline-any cline-yes">1x</span>
|
|
676
726
|
<span class="cline-any cline-yes">1x</span>
|
|
677
727
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -882,6 +932,18 @@
|
|
|
882
932
|
<span class="cline-any cline-no"> </span>
|
|
883
933
|
<span class="cline-any cline-no"> </span>
|
|
884
934
|
<span class="cline-any cline-no"> </span>
|
|
935
|
+
<span class="cline-any cline-yes">1x</span>
|
|
936
|
+
<span class="cline-any cline-yes">1x</span>
|
|
937
|
+
<span class="cline-any cline-yes">1x</span>
|
|
938
|
+
<span class="cline-any cline-no"> </span>
|
|
939
|
+
<span class="cline-any cline-no"> </span>
|
|
940
|
+
<span class="cline-any cline-no"> </span>
|
|
941
|
+
<span class="cline-any cline-no"> </span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
943
|
+
<span class="cline-any cline-no"> </span>
|
|
944
|
+
<span class="cline-any cline-no"> </span>
|
|
945
|
+
<span class="cline-any cline-no"> </span>
|
|
946
|
+
<span class="cline-any cline-no"> </span>
|
|
885
947
|
<span class="cline-any cline-no"> </span>
|
|
886
948
|
<span class="cline-any cline-no"> </span>
|
|
887
949
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1015,6 +1077,18 @@
|
|
|
1015
1077
|
<span class="cline-any cline-no"> </span>
|
|
1016
1078
|
<span class="cline-any cline-yes">1x</span>
|
|
1017
1079
|
<span class="cline-any cline-yes">1x</span>
|
|
1080
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1081
|
+
<span class="cline-any cline-no"> </span>
|
|
1082
|
+
<span class="cline-any cline-no"> </span>
|
|
1083
|
+
<span class="cline-any cline-no"> </span>
|
|
1084
|
+
<span class="cline-any cline-no"> </span>
|
|
1085
|
+
<span class="cline-any cline-no"> </span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
1087
|
+
<span class="cline-any cline-no"> </span>
|
|
1088
|
+
<span class="cline-any cline-no"> </span>
|
|
1089
|
+
<span class="cline-any cline-no"> </span>
|
|
1090
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1091
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1018
1092
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { FetchFunction, defaultFetch } from "../util/fetch-function";
|
|
1019
1093
|
import { HaloCoreEndpoints } from "../endpoints/halo-core-endpoints";
|
|
1020
1094
|
import {
|
|
@@ -1047,6 +1121,8 @@ import { KeyedExpiryTokenCache } from "../util/keyed-expiry-token-cache";
|
|
|
1047
1121
|
import { DateTime } from "luxon";
|
|
1048
1122
|
import { wrapPlayerId, unwrapPlayerId } from "../util/xuid";
|
|
1049
1123
|
import { SeasonCalendarContainer } from "../models/halo-infinite/season";
|
|
1124
|
+
import { Settings } from "../models/halo-infinite/settings";
|
|
1125
|
+
import { MatchCount } from "src/models/halo-infinite/match-count";
|
|
1050
1126
|
|
|
1051
1127
|
export interface ResultContainer<TValue> {
|
|
1052
1128
|
Id: string;
|
|
@@ -1097,7 +1173,8 @@ export class HaloInfiniteClient {
|
|
|
1097
1173
|
<span class="cstat-no" title="statement not covered" > }/oban/flight-configurations/titles/hi/audiences/retail/players/${wrapPlayerId(</span>
|
|
1098
1174
|
<span class="cstat-no" title="statement not covered" > xuid</span>
|
|
1099
1175
|
<span class="cstat-no" title="statement not covered" > )}/active`,</span>
|
|
1100
|
-
<span class="cstat-no" title="statement not covered" > { method: "get" }
|
|
1176
|
+
<span class="cstat-no" title="statement not covered" > { method: "get" },</span>
|
|
1177
|
+
<span class="cstat-no" title="statement not covered" > false</span>
|
|
1101
1178
|
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1102
1179
|
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1103
1180
|
<span class="cstat-no" title="statement not covered" > FlightConfigurationId,</span>
|
|
@@ -1120,7 +1197,11 @@ export class HaloInfiniteClient {
|
|
|
1120
1197
|
private readonly fetchFn: FetchFunction = defaultFetch
|
|
1121
1198
|
) {}
|
|
1122
1199
|
|
|
1123
|
-
protected async executeRequest(
|
|
1200
|
+
protected async executeRequest(
|
|
1201
|
+
url: string,
|
|
1202
|
+
init: RequestInit,
|
|
1203
|
+
skipAuth: boolean
|
|
1204
|
+
) {
|
|
1124
1205
|
const failureHandler = unauthorizedRetryPolicy.onFailure(
|
|
1125
1206
|
async ({ handled }) => {
|
|
1126
1207
|
if (handled) {
|
|
@@ -1137,10 +1218,12 @@ export class HaloInfiniteClient {
|
|
|
1137
1218
|
if (!headers.has("Accept")) {
|
|
1138
1219
|
headers.set("Accept", "application/json");
|
|
1139
1220
|
}
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1221
|
+
if (!skipAuth) {
|
|
1222
|
+
headers.set(
|
|
1223
|
+
"x-343-authorization-spartan",
|
|
1224
|
+
await this.spartanTokenProvider.getSpartanToken()
|
|
1225
|
+
);
|
|
1226
|
+
}
|
|
1144
1227
|
|
|
1145
1228
|
const response = await this.fetchFn(url, {
|
|
1146
1229
|
...init,
|
|
@@ -1158,8 +1241,12 @@ export class HaloInfiniteClient {
|
|
|
1158
1241
|
}
|
|
1159
1242
|
}
|
|
1160
1243
|
|
|
1161
|
-
protected async executeJsonRequest<T>(
|
|
1162
|
-
|
|
1244
|
+
protected async executeJsonRequest<T>(
|
|
1245
|
+
url: string,
|
|
1246
|
+
init: RequestInit,
|
|
1247
|
+
skipAuth?: boolean
|
|
1248
|
+
) {
|
|
1249
|
+
const response = await this.executeRequest(url, init, skipAuth ?? false);
|
|
1163
1250
|
|
|
1164
1251
|
if (response.status >= 200 && response.status < 300) {
|
|
1165
1252
|
return (await response.json()) as T;
|
|
@@ -1335,6 +1422,18 @@ export class HaloInfiniteClient {
|
|
|
1335
1422
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1336
1423
|
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1337
1424
|
};
|
|
1425
|
+
|
|
1426
|
+
public getPlayerMatchCount = <span class="fstat-no" title="function not covered" >(</span>
|
|
1427
|
+
<span class="cstat-no" title="statement not covered" > playerXuid: string,</span>
|
|
1428
|
+
<span class="cstat-no" title="statement not covered" > init?: Omit<RequestInit, "body" | "method"></span>
|
|
1429
|
+
<span class="cstat-no" title="statement not covered" > ) =></span>
|
|
1430
|
+
<span class="cstat-no" title="statement not covered" > this.executeJsonRequest<MatchCount>(</span>
|
|
1431
|
+
<span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${wrapPlayerId(playerXuid)}/matches/count`,</span>
|
|
1432
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1433
|
+
<span class="cstat-no" title="statement not covered" > ...init,</span>
|
|
1434
|
+
<span class="cstat-no" title="statement not covered" > method: "get",</span>
|
|
1435
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1436
|
+
);
|
|
1338
1437
|
|
|
1339
1438
|
public getMatchStats = <span class="fstat-no" title="function not covered" >(</span>
|
|
1340
1439
|
<span class="cstat-no" title="statement not covered" > matchId: string,</span>
|
|
@@ -1490,6 +1589,18 @@ export class HaloInfiniteClient {
|
|
|
1490
1589
|
<span class="cstat-no" title="statement not covered" > method: "get",</span>
|
|
1491
1590
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1492
1591
|
);
|
|
1592
|
+
|
|
1593
|
+
public getSettings = <span class="fstat-no" title="function not covered" >(</span>
|
|
1594
|
+
<span class="cstat-no" title="statement not covered" > init?: Omit<RequestInit, "body" | "method"></span>
|
|
1595
|
+
<span class="cstat-no" title="statement not covered" > ): Promise<Settings> =></span>
|
|
1596
|
+
<span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
|
|
1597
|
+
<span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.SettingsOrigin}.${HaloCoreEndpoints.ServiceDomain}/settings/hipc/e2a0a7c6-6efe-42af-9283-c2ab73250c48`,</span>
|
|
1598
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1599
|
+
<span class="cstat-no" title="statement not covered" > ...init,</span>
|
|
1600
|
+
<span class="cstat-no" title="statement not covered" > method: "get",</span>
|
|
1601
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1602
|
+
<span class="cstat-no" title="statement not covered" > true</span>
|
|
1603
|
+
);
|
|
1493
1604
|
}
|
|
1494
1605
|
</pre></td></tr></table></pre>
|
|
1495
1606
|
|
|
@@ -1498,7 +1609,7 @@ export class HaloInfiniteClient {
|
|
|
1498
1609
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1499
1610
|
Code coverage generated by
|
|
1500
1611
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1501
|
-
at 2025-
|
|
1612
|
+
at 2025-12-14T17:51:28.165Z
|
|
1502
1613
|
</div>
|
|
1503
1614
|
<script src="../prettify.js"></script>
|
|
1504
1615
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">37.
|
|
26
|
+
<span class="strong">37.98% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>237/624</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">18.51% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>5/
|
|
42
|
+
<span class='fraction'>5/27</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">37.
|
|
47
|
+
<span class="strong">37.98% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>237/624</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file low" data-value="halo-infinite-client.ts"><a href="halo-infinite-client.ts.html">halo-infinite-client.ts</a></td>
|
|
83
|
-
<td data-value="44.
|
|
83
|
+
<td data-value="44.83" class="pic low">
|
|
84
84
|
<div class="chart"><div class="cover-fill" style="width: 44%"></div><div class="cover-empty" style="width: 56%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="44.
|
|
87
|
-
<td data-value="
|
|
86
|
+
<td data-value="44.83" class="pct low">44.83%</td>
|
|
87
|
+
<td data-value="513" class="abs low">230/513</td>
|
|
88
88
|
<td data-value="88.88" class="pct high">88.88%</td>
|
|
89
89
|
<td data-value="9" class="abs high">8/9</td>
|
|
90
|
-
<td data-value="
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="44.
|
|
93
|
-
<td data-value="
|
|
90
|
+
<td data-value="19.23" class="pct low">19.23%</td>
|
|
91
|
+
<td data-value="26" class="abs low">5/26</td>
|
|
92
|
+
<td data-value="44.83" class="pct low">44.83%</td>
|
|
93
|
+
<td data-value="513" class="abs low">230/513</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
132
132
|
Code coverage generated by
|
|
133
133
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
134
|
-
at 2025-
|
|
134
|
+
at 2025-12-14T17:51:28.165Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -91,7 +91,7 @@ export const unauthorizedRetryPolicy = retry(
|
|
|
91
91
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
92
92
|
Code coverage generated by
|
|
93
93
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
94
|
-
at 2025-
|
|
94
|
+
at 2025-12-14T17:51:28.165Z
|
|
95
95
|
</div>
|
|
96
96
|
<script src="../prettify.js"></script>
|
|
97
97
|
<script>
|
|
@@ -115,7 +115,7 @@ export const inMemoryTokenPersister: TokenPersister = {
|
|
|
115
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
116
116
|
Code coverage generated by
|
|
117
117
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
118
|
-
at 2025-
|
|
118
|
+
at 2025-12-14T17:51:28.165Z
|
|
119
119
|
</div>
|
|
120
120
|
<script src="../../prettify.js"></script>
|
|
121
121
|
<script>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2025-
|
|
149
|
+
at 2025-12-14T17:51:28.165Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="../../prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
125
125
|
Code coverage generated by
|
|
126
126
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
127
|
-
at 2025-
|
|
127
|
+
at 2025-12-14T17:51:28.165Z
|
|
128
128
|
</div>
|
|
129
129
|
<script src="../../prettify.js"></script>
|
|
130
130
|
<script>
|
|
@@ -184,7 +184,7 @@ export const nodeFsTokenPersister: TokenPersister = {
|
|
|
184
184
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
185
185
|
Code coverage generated by
|
|
186
186
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
187
|
-
at 2025-
|
|
187
|
+
at 2025-12-14T17:51:28.165Z
|
|
188
188
|
</div>
|
|
189
189
|
<script src="../../prettify.js"></script>
|
|
190
190
|
<script>
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
86
86
|
Code coverage generated by
|
|
87
87
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
88
|
-
at 2025-
|
|
88
|
+
at 2025-12-14T17:51:28.165Z
|
|
89
89
|
</div>
|
|
90
90
|
<script src="../../prettify.js"></script>
|
|
91
91
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/70</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/
|
|
49
|
+
<span class='fraction'>0/70</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -133,8 +133,7 @@
|
|
|
133
133
|
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
134
|
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
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></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
138
137
|
<span class="cline-any cline-no"> </span>
|
|
139
138
|
<span class="cline-any cline-no"> </span>
|
|
140
139
|
<span class="cline-any cline-no"> </span>
|
|
@@ -204,18 +203,16 @@
|
|
|
204
203
|
<span class="cline-any cline-no"> </span>
|
|
205
204
|
<span class="cline-any cline-no"> </span>
|
|
206
205
|
<span class="cline-any cline-no"> </span>
|
|
207
|
-
<span class="cline-any cline-
|
|
208
|
-
<span class="
|
|
206
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";</span></span></span>
|
|
207
|
+
<span class="cstat-no" title="statement not covered" >import {</span>
|
|
209
208
|
<span class="cstat-no" title="statement not covered" > RelyingParty,</span>
|
|
210
209
|
<span class="cstat-no" title="statement not covered" > XboxAuthenticationClient,</span>
|
|
211
210
|
<span class="cstat-no" title="statement not covered" >} from "../../authentication/xbox-authentication-client";</span>
|
|
211
|
+
<span class="cstat-no" title="statement not covered" >import type { FetchFunction } from "../../util/fetch-function";</span>
|
|
212
212
|
<span class="cstat-no" title="statement not covered" >import { TokenPersister } from "../token-persisters";</span>
|
|
213
|
-
<span class="cstat-no" title="statement not covered" >import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";</span>
|
|
214
|
-
<span class="cstat-no" title="statement not covered" >import { SpartanTokenProvider } from "./spartan-token-provider";</span>
|
|
215
213
|
<span class="cstat-no" title="statement not covered" >import { inMemoryTokenPersister } from "../token-persisters/in-memory-token-persister";</span>
|
|
214
|
+
<span class="cstat-no" title="statement not covered" >import { SpartanTokenProvider } from "./spartan-token-provider";</span>
|
|
216
215
|
<span class="cstat-no" title="statement not covered" >import { XboxTokenProvider } from "./xbox-token-provider";</span>
|
|
217
|
-
<span class="cstat-no" title="statement not covered" >import type { FetchFunction } from "../../util/fetch-function";</span>
|
|
218
|
-
<span class="cstat-no" title="statement not covered" >import type { DateTime } from "luxon";</span>
|
|
219
216
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
220
217
|
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
221
218
|
<span class="cstat-no" title="statement not covered" > * A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same</span>
|
|
@@ -283,7 +280,7 @@
|
|
|
283
280
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
284
281
|
Code coverage generated by
|
|
285
282
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
286
|
-
at 2025-
|
|
283
|
+
at 2025-12-14T17:51:28.165Z
|
|
287
284
|
</div>
|
|
288
285
|
<script src="../../prettify.js"></script>
|
|
289
286
|
<script>
|