halo-infinite-api 14.2.2 → 14.3.1

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 (77) hide show
  1. package/.github/workflows/publish.yml +4 -5
  2. package/coverage/lcov-report/authentication/halo-authentication-client.ts.html +1 -1
  3. package/coverage/lcov-report/authentication/index.html +1 -1
  4. package/coverage/lcov-report/authentication/xbox-authentication-client.ts.html +1 -1
  5. package/coverage/lcov-report/core/halo-infinite-client.ts.html +97 -61
  6. package/coverage/lcov-report/core/index.html +15 -15
  7. package/coverage/lcov-report/core/request-policy.ts.html +1 -1
  8. package/coverage/lcov-report/core/token-persisters/in-memory-token-persister.ts.html +1 -1
  9. package/coverage/lcov-report/core/token-persisters/index.html +1 -1
  10. package/coverage/lcov-report/core/token-persisters/local-storage-token-persister.ts.html +1 -1
  11. package/coverage/lcov-report/core/token-persisters/node-fs-token-persister.ts.html +1 -1
  12. package/coverage/lcov-report/core/token-persisters/token-persister.ts.html +1 -1
  13. package/coverage/lcov-report/core/token-providers/auto-token-provider.ts.html +1 -1
  14. package/coverage/lcov-report/core/token-providers/index.html +1 -1
  15. package/coverage/lcov-report/core/token-providers/spartan-token-provider.ts.html +1 -1
  16. package/coverage/lcov-report/core/token-providers/static-xsts-ticket-token-spartan-token-provider.ts.html +1 -1
  17. package/coverage/lcov-report/core/token-providers/xbox-token-provider.ts.html +1 -1
  18. package/coverage/lcov-report/core/xbox-client.ts.html +1 -1
  19. package/coverage/lcov-report/endpoints/halo-core-endpoints.ts.html +1 -1
  20. package/coverage/lcov-report/endpoints/index.html +1 -1
  21. package/coverage/lcov-report/index.html +29 -29
  22. package/coverage/lcov-report/models/halo-infinite/api-formatted-date.ts.html +1 -1
  23. package/coverage/lcov-report/models/halo-infinite/asset-kind.ts.html +1 -1
  24. package/coverage/lcov-report/models/halo-infinite/asset-version-link.ts.html +1 -1
  25. package/coverage/lcov-report/models/halo-infinite/asset.ts.html +2 -2
  26. package/coverage/lcov-report/models/halo-infinite/ban-message.ts.html +1 -1
  27. package/coverage/lcov-report/models/halo-infinite/ban-summary.ts.html +1 -1
  28. package/coverage/lcov-report/models/halo-infinite/csr-season.ts.html +112 -0
  29. package/coverage/lcov-report/models/halo-infinite/game-variant-category.ts.html +1 -1
  30. package/coverage/lcov-report/models/halo-infinite/index.html +23 -8
  31. package/coverage/lcov-report/models/halo-infinite/match-count.ts.html +1 -1
  32. package/coverage/lcov-report/models/halo-infinite/match-info.ts.html +1 -1
  33. package/coverage/lcov-report/models/halo-infinite/match-outcome.ts.html +1 -1
  34. package/coverage/lcov-report/models/halo-infinite/match-skill.ts.html +1 -1
  35. package/coverage/lcov-report/models/halo-infinite/match-stats.ts.html +1 -1
  36. package/coverage/lcov-report/models/halo-infinite/match-type.ts.html +1 -1
  37. package/coverage/lcov-report/models/halo-infinite/matches-privacy.ts.html +1 -1
  38. package/coverage/lcov-report/models/halo-infinite/medals-metadata-file.ts.html +1 -1
  39. package/coverage/lcov-report/models/halo-infinite/player-match-history.ts.html +1 -1
  40. package/coverage/lcov-report/models/halo-infinite/playlist-csr-container.ts.html +1 -1
  41. package/coverage/lcov-report/models/halo-infinite/playlist-csr.ts.html +1 -1
  42. package/coverage/lcov-report/models/halo-infinite/playlist-experience.ts.html +1 -1
  43. package/coverage/lcov-report/models/halo-infinite/playlist.ts.html +1 -1
  44. package/coverage/lcov-report/models/halo-infinite/progression-file.ts.html +1 -1
  45. package/coverage/lcov-report/models/halo-infinite/season.ts.html +1 -1
  46. package/coverage/lcov-report/models/halo-infinite/service-record.ts.html +1 -1
  47. package/coverage/lcov-report/models/halo-infinite/settings.ts.html +1 -1
  48. package/coverage/lcov-report/models/halo-infinite/skill-result.ts.html +1 -1
  49. package/coverage/lcov-report/models/halo-infinite/stats.ts.html +1 -1
  50. package/coverage/lcov-report/models/halo-infinite/user-info.ts.html +1 -1
  51. package/coverage/lcov-report/models/index.html +1 -1
  52. package/coverage/lcov-report/models/spartan-token-proof.ts.html +1 -1
  53. package/coverage/lcov-report/models/spartan-token-request.ts.html +1 -1
  54. package/coverage/lcov-report/models/spartan-token.ts.html +1 -1
  55. package/coverage/lcov-report/models/xbox-ticket.ts.html +1 -1
  56. package/coverage/lcov-report/types/import-meta.d.ts.html +1 -1
  57. package/coverage/lcov-report/types/index.html +1 -1
  58. package/coverage/lcov-report/util/date-time.ts.html +1 -1
  59. package/coverage/lcov-report/util/expiry-token-cache.ts.html +18 -18
  60. package/coverage/lcov-report/util/fetch-function.ts.html +1 -1
  61. package/coverage/lcov-report/util/global-contants.ts.html +1 -1
  62. package/coverage/lcov-report/util/index.html +14 -14
  63. package/coverage/lcov-report/util/keyed-expiry-token-cache.ts.html +21 -21
  64. package/coverage/lcov-report/util/request-error.ts.html +7 -7
  65. package/coverage/lcov-report/util/resolvable-promise.ts.html +12 -12
  66. package/coverage/lcov-report/util/xuid.ts.html +1 -1
  67. package/coverage/lcov.info +217 -191
  68. package/dist/index.cjs +7 -0
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.d.cts +10 -1
  71. package/dist/index.d.ts +10 -1
  72. package/dist/index.js +7 -0
  73. package/dist/index.js.map +1 -1
  74. package/package.json +1 -1
  75. package/src/core/halo-infinite-client.ts +65 -53
  76. package/src/models/halo-infinite/asset.ts +1 -1
  77. package/src/models/halo-infinite/csr-season.ts +9 -0
@@ -6,6 +6,7 @@ on:
6
6
  - "[0-9]+.[0-9]+.[0-9]+"
7
7
 
8
8
  permissions:
9
+ id-token: write
9
10
  contents: write # for creating a release
10
11
  packages: write
11
12
 
@@ -15,14 +16,14 @@ jobs:
15
16
  runs-on: ubuntu-latest
16
17
  steps:
17
18
  - name: Checkout
18
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v6
19
20
  with:
20
21
  fetch-depth: 0
21
22
 
22
23
  - name: Use Node.js 20
23
- uses: actions/setup-node@v4
24
+ uses: actions/setup-node@v6
24
25
  with:
25
- node-version: 20
26
+ node-version: 24
26
27
  registry-url: https://registry.npmjs.org
27
28
  cache: "npm"
28
29
 
@@ -47,8 +48,6 @@ jobs:
47
48
  fi
48
49
 
49
50
  - name: Publish to npm
50
- env:
51
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
52
51
  run: |
53
52
  npm publish --access public
54
53
 
@@ -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 2026-01-09T16:49:48.934Z
382
+ at 2026-04-05T17:36:27.841Z
383
383
  </div>
384
384
  <script src="../prettify.js"></script>
385
385
  <script>
@@ -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 2026-01-09T16:49:48.934Z
119
+ at 2026-04-05T17:36:27.841Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -580,7 +580,7 @@
580
580
  <div class='footer quiet pad2 space-top1 center small'>
581
581
  Code coverage generated by
582
582
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
583
- at 2026-01-09T16:49:48.934Z
583
+ at 2026-04-05T17:36:27.841Z
584
584
  </div>
585
585
  <script src="../prettify.js"></script>
586
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.04% </span>
26
+ <span class="strong">43.8% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>233/529</span>
28
+ <span class='fraction'>237/541</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">18.51% </span>
40
+ <span class="strong">17.85% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/27</span>
42
+ <span class='fraction'>5/28</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">44.04% </span>
47
+ <span class="strong">43.8% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>233/529</span>
49
+ <span class='fraction'>237/541</span>
50
50
  </div>
51
51
 
52
52
 
@@ -592,7 +592,20 @@
592
592
  <a name='L527'></a><a href='#L527'>527</a>
593
593
  <a name='L528'></a><a href='#L528'>528</a>
594
594
  <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
608
+ <span class="cline-any cline-yes">1x</span>
596
609
  <span class="cline-any cline-yes">1x</span>
597
610
  <span class="cline-any cline-yes">1x</span>
598
611
  <span class="cline-any cline-yes">1x</span>
@@ -1118,6 +1131,17 @@
1118
1131
  <span class="cline-any cline-no">&nbsp;</span>
1119
1132
  <span class="cline-any cline-no">&nbsp;</span>
1120
1133
  <span class="cline-any cline-no">&nbsp;</span>
1134
+ <span class="cline-any cline-yes">1x</span>
1135
+ <span class="cline-any cline-yes">1x</span>
1136
+ <span class="cline-any cline-yes">1x</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-no">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1142
+ <span class="cline-any cline-no">&nbsp;</span>
1143
+ <span class="cline-any cline-no">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1121
1145
  <span class="cline-any cline-no">&nbsp;</span>
1122
1146
  <span class="cline-any cline-yes">1x</span>
1123
1147
  <span class="cline-any cline-yes">1x</span>
@@ -1154,8 +1178,9 @@ import { DateTime } from "luxon";
1154
1178
  import { wrapPlayerId, unwrapPlayerId } from "../util/xuid";
1155
1179
  import { SeasonCalendarContainer } from "../models/halo-infinite/season";
1156
1180
  import { Settings } from "../models/halo-infinite/settings";
1157
- import { MatchCount } from "src/models/halo-infinite/match-count";
1181
+ import { MatchCount } from "../models/halo-infinite/match-count";
1158
1182
  import { BanMessage } from "../models/halo-infinite/ban-message";
1183
+ import { CsrSeasonCalendarContainer } from "../models/halo-infinite/csr-season";
1159
1184
  &nbsp;
1160
1185
  export interface ResultContainer&lt;TValue&gt; {
1161
1186
  Id: string;
@@ -1204,10 +1229,10 @@ export class HaloInfiniteClient {
1204
1229
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.SettingsOrigin}.${</span>
1205
1230
  <span class="cstat-no" title="statement not covered" > HaloCoreEndpoints.ServiceDomain</span>
1206
1231
  <span class="cstat-no" title="statement not covered" > }/oban/flight-configurations/titles/hi/audiences/retail/players/${wrapPlayerId(</span>
1207
- <span class="cstat-no" title="statement not covered" > xuid</span>
1232
+ <span class="cstat-no" title="statement not covered" > xuid,</span>
1208
1233
  <span class="cstat-no" title="statement not covered" > )}/active`,</span>
1209
1234
  <span class="cstat-no" title="statement not covered" > { method: "get" },</span>
1210
- <span class="cstat-no" title="statement not covered" > false</span>
1235
+ <span class="cstat-no" title="statement not covered" > false,</span>
1211
1236
  <span class="cstat-no" title="statement not covered" > );</span>
1212
1237
  <span class="cstat-no" title="statement not covered" > const {</span>
1213
1238
  <span class="cstat-no" title="statement not covered" > FlightConfigurationId,</span>
@@ -1222,25 +1247,25 @@ export class HaloInfiniteClient {
1222
1247
  <span class="cstat-no" title="statement not covered" > : DateTime.now().plus({ seconds: 5 }),</span>
1223
1248
  <span class="cstat-no" title="statement not covered" > };</span>
1224
1249
  },
1225
- <span class="fstat-no" title="function not covered" > async (spartanToken) =&gt; this.clearanceMap.get(spartanToken) ?? null</span>
1250
+ <span class="fstat-no" title="function not covered" > async (spartanToken) =&gt; this.clearanceMap.get(spartanToken) ?? null,</span>
1226
1251
  );
1227
1252
  &nbsp;
1228
1253
  constructor(
1229
1254
  private readonly spartanTokenProvider: SpartanTokenProvider,
1230
- private readonly fetchFn: FetchFunction = defaultFetch
1255
+ private readonly fetchFn: FetchFunction = defaultFetch,
1231
1256
  ) {}
1232
1257
  &nbsp;
1233
1258
  protected async executeRequest(
1234
1259
  url: string,
1235
1260
  init: RequestInit,
1236
- skipAuth: boolean
1261
+ skipAuth: boolean,
1237
1262
  ) {
1238
1263
  const failureHandler = unauthorizedRetryPolicy.onFailure(
1239
1264
  async ({ handled }) =&gt; {
1240
1265
  if (handled) {
1241
1266
  await this.spartanTokenProvider.clearSpartanToken();
1242
1267
  }
1243
- }
1268
+ },
1244
1269
  );
1245
1270
  try {
1246
1271
  return await unauthorizedRetryPolicy.execute(async () =&gt; {
@@ -1254,7 +1279,7 @@ export class HaloInfiniteClient {
1254
1279
  if (!skipAuth) {
1255
1280
  headers.set(
1256
1281
  "x-343-authorization-spartan",
1257
- await this.spartanTokenProvider.getSpartanToken()
1282
+ await this.spartanTokenProvider.getSpartanToken(),
1258
1283
  );
1259
1284
  }
1260
1285
  &nbsp;
@@ -1277,7 +1302,7 @@ export class HaloInfiniteClient {
1277
1302
  protected async executeJsonRequest&lt;T&gt;(
1278
1303
  url: string,
1279
1304
  init: RequestInit,
1280
- skipAuth?: boolean
1305
+ skipAuth?: boolean,
1281
1306
  ) {
1282
1307
  const response = await this.executeRequest(url, init, skipAuth ?? false);
1283
1308
  &nbsp;
@@ -1294,7 +1319,7 @@ export class HaloInfiniteClient {
1294
1319
  <span class="cstat-no" title="statement not covered" > let resultsContainer: ResultsContainer&lt;T&gt;;</span>
1295
1320
  <span class="cstat-no" title="statement not covered" > try {</span>
1296
1321
  <span class="cstat-no" title="statement not covered" > resultsContainer = await this.executeJsonRequest&lt;ResultsContainer&lt;T&gt;&gt;(</span>
1297
- <span class="cstat-no" title="statement not covered" > ...args</span>
1322
+ <span class="cstat-no" title="statement not covered" > ...args,</span>
1298
1323
  <span class="cstat-no" title="statement not covered" > );</span>
1299
1324
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
1300
1325
  <span class="cstat-no" title="statement not covered" > if (e instanceof RequestError &amp;&amp; e.response.status === 404) {</span>
@@ -1323,7 +1348,7 @@ export class HaloInfiniteClient {
1323
1348
  <span class="cstat-no" title="statement not covered" > count: count.toString(),</span>
1324
1349
  <span class="cstat-no" title="statement not covered" > start: start.toString(),</span>
1325
1350
  <span class="cstat-no" title="statement not covered" > })}`,</span>
1326
- <span class="cstat-no" title="statement not covered" > ...rest</span>
1351
+ <span class="cstat-no" title="statement not covered" > ...rest,</span>
1327
1352
  <span class="cstat-no" title="statement not covered" > );</span>
1328
1353
  <span class="cstat-no" title="statement not covered" ></span>
1329
1354
  <span class="cstat-no" title="statement not covered" > return result.Results;</span>
@@ -1337,7 +1362,7 @@ export class HaloInfiniteClient {
1337
1362
  <span class="cstat-no" title="statement not covered" > playlistId: string,</span>
1338
1363
  <span class="cstat-no" title="statement not covered" > playerIds: string[],</span>
1339
1364
  <span class="cstat-no" title="statement not covered" > seasonId?: string,</span>
1340
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1365
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1341
1366
  <span class="cstat-no" title="statement not covered" > ) =&gt; {</span>
1342
1367
  <span class="cstat-no" title="statement not covered" > const urlParams = new URLSearchParams({</span>
1343
1368
  <span class="cstat-no" title="statement not covered" > players: playerIds.map(wrapPlayerId).join(","),</span>
@@ -1350,7 +1375,7 @@ export class HaloInfiniteClient {
1350
1375
  <span class="cstat-no" title="statement not covered" > {</span>
1351
1376
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1352
1377
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1353
- <span class="cstat-no" title="statement not covered" > }</span>
1378
+ <span class="cstat-no" title="statement not covered" > },</span>
1354
1379
  <span class="cstat-no" title="statement not covered" > );</span>
1355
1380
  };
1356
1381
  &nbsp;
@@ -1359,7 +1384,7 @@ export class HaloInfiniteClient {
1359
1384
  */
1360
1385
  public getUser = <span class="fstat-no" title="function not covered" >(</span>
1361
1386
  <span class="cstat-no" title="statement not covered" > gamerTag: string,</span>
1362
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1387
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1363
1388
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1364
1389
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;UserInfo&gt;(</span>
1365
1390
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.Profile}.${HaloCoreEndpoints.ServiceDomain}/users/gt(${gamerTag})`,</span>
@@ -1367,7 +1392,7 @@ export class HaloInfiniteClient {
1367
1392
  <span class="cstat-no" title="statement not covered" > {</span>
1368
1393
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1369
1394
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1370
- <span class="cstat-no" title="statement not covered" > }</span>
1395
+ <span class="cstat-no" title="statement not covered" > },</span>
1371
1396
  );
1372
1397
  &nbsp;
1373
1398
  /** Get gamertag info for several players.
@@ -1375,7 +1400,7 @@ export class HaloInfiniteClient {
1375
1400
  */
1376
1401
  public getUsers = <span class="fstat-no" title="function not covered" >(</span>
1377
1402
  <span class="cstat-no" title="statement not covered" > xuids: string[],</span>
1378
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1403
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1379
1404
  <span class="cstat-no" title="statement not covered" > ) =&gt; {</span>
1380
1405
  <span class="cstat-no" title="statement not covered" > return this.executeJsonRequest&lt;UserInfo[]&gt;(</span>
1381
1406
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.Profile}.${</span>
@@ -1384,7 +1409,7 @@ export class HaloInfiniteClient {
1384
1409
  <span class="cstat-no" title="statement not covered" > {</span>
1385
1410
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1386
1411
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1387
- <span class="cstat-no" title="statement not covered" > }</span>
1412
+ <span class="cstat-no" title="statement not covered" > },</span>
1388
1413
  <span class="cstat-no" title="statement not covered" > );</span>
1389
1414
  };
1390
1415
  &nbsp;
@@ -1394,18 +1419,18 @@ export class HaloInfiniteClient {
1394
1419
  public getUserServiceRecord = <span class="fstat-no" title="function not covered" >(</span>
1395
1420
  <span class="cstat-no" title="statement not covered" > gamerTagOrWrappedXuid: string,</span>
1396
1421
  <span class="cstat-no" title="statement not covered" > queryParameters?: { seasonId?: string; playlistAssetId?: string },</span>
1397
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1422
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1398
1423
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1399
1424
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;ServiceRecord&gt;(</span>
1400
1425
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.StatsOrigin}.${</span>
1401
1426
  <span class="cstat-no" title="statement not covered" > HaloCoreEndpoints.ServiceDomain</span>
1402
1427
  <span class="cstat-no" title="statement not covered" > }/hi/players/${gamerTagOrWrappedXuid}/Matchmade/servicerecord?${new URLSearchParams(</span>
1403
- <span class="cstat-no" title="statement not covered" > queryParameters</span>
1428
+ <span class="cstat-no" title="statement not covered" > queryParameters,</span>
1404
1429
  <span class="cstat-no" title="statement not covered" > ).toString()}`,</span>
1405
1430
  <span class="cstat-no" title="statement not covered" > {</span>
1406
1431
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1407
1432
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1408
- <span class="cstat-no" title="statement not covered" > }</span>
1433
+ <span class="cstat-no" title="statement not covered" > },</span>
1409
1434
  );
1410
1435
  &nbsp;
1411
1436
  /** Get playlist information
@@ -1413,10 +1438,10 @@ export class HaloInfiniteClient {
1413
1438
  */
1414
1439
  public getPlaylist = <span class="fstat-no" title="function not covered" >async (</span>
1415
1440
  <span class="cstat-no" title="statement not covered" > playlistId: string,</span>
1416
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1441
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1417
1442
  <span class="cstat-no" title="statement not covered" > ) =&gt; {</span>
1418
1443
  <span class="cstat-no" title="statement not covered" > const clearanceToken = await this.clearanceCache.getToken(</span>
1419
- <span class="cstat-no" title="statement not covered" > await this.spartanTokenProvider.getSpartanToken()</span>
1444
+ <span class="cstat-no" title="statement not covered" > await this.spartanTokenProvider.getSpartanToken(),</span>
1420
1445
  <span class="cstat-no" title="statement not covered" > );</span>
1421
1446
  <span class="cstat-no" title="statement not covered" > return this.executeJsonRequest&lt;Playlist&gt;(</span>
1422
1447
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/multiplayer/file/playlists/assets/${playlistId}.json`,</span>
@@ -1427,7 +1452,7 @@ export class HaloInfiniteClient {
1427
1452
  <span class="cstat-no" title="statement not covered" > ...init?.headers,</span>
1428
1453
  <span class="cstat-no" title="statement not covered" > "343-clearance": clearanceToken.FlightConfigurationId,</span>
1429
1454
  <span class="cstat-no" title="statement not covered" > },</span>
1430
- <span class="cstat-no" title="statement not covered" > }</span>
1455
+ <span class="cstat-no" title="statement not covered" > },</span>
1431
1456
  <span class="cstat-no" title="statement not covered" > );</span>
1432
1457
  };
1433
1458
  &nbsp;
@@ -1436,7 +1461,7 @@ export class HaloInfiniteClient {
1436
1461
  <span class="cstat-no" title="statement not covered" > type: MatchType = MatchType.All,</span>
1437
1462
  <span class="cstat-no" title="statement not covered" > count: number = 25,</span>
1438
1463
  <span class="cstat-no" title="statement not covered" > start: number = 0,</span>
1439
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1464
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1440
1465
  <span class="cstat-no" title="statement not covered" > ) =&gt; {</span>
1441
1466
  <span class="cstat-no" title="statement not covered" > let params: Record&lt;string, string&gt; = {};</span>
1442
1467
  <span class="cstat-no" title="statement not covered" > if (type !== MatchType.All) {</span>
@@ -1452,13 +1477,13 @@ export class HaloInfiniteClient {
1452
1477
  <span class="cstat-no" title="statement not covered" > {</span>
1453
1478
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1454
1479
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1455
- <span class="cstat-no" title="statement not covered" > }</span>
1480
+ <span class="cstat-no" title="statement not covered" > },</span>
1456
1481
  <span class="cstat-no" title="statement not covered" > );</span>
1457
1482
  };
1458
1483
  &nbsp;
1459
1484
  public getPlayerMatchCount = <span class="fstat-no" title="function not covered" >(</span>
1460
1485
  <span class="cstat-no" title="statement not covered" > playerXuid: string,</span>
1461
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1486
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1462
1487
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1463
1488
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;MatchCount&gt;(</span>
1464
1489
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.StatsOrigin}.${</span>
@@ -1467,25 +1492,25 @@ export class HaloInfiniteClient {
1467
1492
  <span class="cstat-no" title="statement not covered" > {</span>
1468
1493
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1469
1494
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1470
- <span class="cstat-no" title="statement not covered" > }</span>
1495
+ <span class="cstat-no" title="statement not covered" > },</span>
1471
1496
  );
1472
1497
  &nbsp;
1473
1498
  public getMatchStats = <span class="fstat-no" title="function not covered" >(</span>
1474
1499
  <span class="cstat-no" title="statement not covered" > matchId: string,</span>
1475
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1500
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1476
1501
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1477
1502
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;MatchStats&gt;(</span>
1478
1503
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/matches/${matchId}/stats`,</span>
1479
1504
  <span class="cstat-no" title="statement not covered" > {</span>
1480
1505
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1481
1506
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1482
- <span class="cstat-no" title="statement not covered" > }</span>
1507
+ <span class="cstat-no" title="statement not covered" > },</span>
1483
1508
  );
1484
1509
  &nbsp;
1485
1510
  public getMatchSkill = <span class="fstat-no" title="function not covered" >async (</span>
1486
1511
  <span class="cstat-no" title="statement not covered" > matchId: string,</span>
1487
1512
  <span class="cstat-no" title="statement not covered" > playerIds: string[],</span>
1488
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1513
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1489
1514
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1490
1515
  <span class="cstat-no" title="statement not covered" > await this.executeResultsRequest&lt;MatchSkill&gt;(</span>
1491
1516
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.SkillOrigin}.${</span>
@@ -1496,21 +1521,21 @@ export class HaloInfiniteClient {
1496
1521
  <span class="cstat-no" title="statement not covered" > {</span>
1497
1522
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1498
1523
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1499
- <span class="cstat-no" title="statement not covered" > }</span>
1524
+ <span class="cstat-no" title="statement not covered" > },</span>
1500
1525
  );
1501
1526
  &nbsp;
1502
1527
  /** Gets authoring metadata about a specific asset. */
1503
1528
  public getAsset = <span class="fstat-no" title="function not covered" >&lt;TAssetType extends keyof AssetKindTypeMap&gt;(</span>
1504
1529
  <span class="cstat-no" title="statement not covered" > assetType: TAssetType,</span>
1505
1530
  <span class="cstat-no" title="statement not covered" > assetId: string,</span>
1506
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1531
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1507
1532
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1508
1533
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;AssetKindTypeMap[TAssetType]&gt;(</span>
1509
1534
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.DiscoveryOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/${assetKindUrlMap[assetType]}/${assetId}`,</span>
1510
1535
  <span class="cstat-no" title="statement not covered" > {</span>
1511
1536
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1512
1537
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1513
- <span class="cstat-no" title="statement not covered" > }</span>
1538
+ <span class="cstat-no" title="statement not covered" > },</span>
1514
1539
  );
1515
1540
  &nbsp;
1516
1541
  /** Gets metadata related to a concrete version of a specified asset. */
@@ -1518,7 +1543,7 @@ export class HaloInfiniteClient {
1518
1543
  <span class="cstat-no" title="statement not covered" > assetType: TAssetType,</span>
1519
1544
  <span class="cstat-no" title="statement not covered" > assetId: string,</span>
1520
1545
  <span class="cstat-no" title="statement not covered" > versionId: string,</span>
1521
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1546
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1522
1547
  <span class="cstat-no" title="statement not covered" > ) =&gt;</span>
1523
1548
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest&lt;AssetKindTypeMap[TAssetType]&gt;(</span>
1524
1549
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.DiscoveryOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/${assetKindUrlMap[assetType]}/${assetId}/versions/${versionId}`,</span>
@@ -1528,24 +1553,24 @@ export class HaloInfiniteClient {
1528
1553
  <span class="cstat-no" title="statement not covered" > Origin: "https://www.halowaypoint.com",</span>
1529
1554
  <span class="cstat-no" title="statement not covered" > },</span>
1530
1555
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1531
- <span class="cstat-no" title="statement not covered" > }</span>
1556
+ <span class="cstat-no" title="statement not covered" > },</span>
1532
1557
  );
1533
1558
  &nbsp;
1534
1559
  // Don't be fooled, the "profile" version of this endpoint is worthless
1535
1560
  public getCurrentUser = (
1536
- init?: Omit&lt;RequestInit, "body" | "method"&gt;
1561
+ init?: Omit&lt;RequestInit, "body" | "method"&gt;,
1537
1562
  ): Promise&lt;{ xuid: string; notificationsReadDate: string }&gt; =&gt;
1538
1563
  this.executeJsonRequest(
1539
1564
  `https://${HaloCoreEndpoints.CommsOrigin}.${HaloCoreEndpoints.ServiceDomain}/users/me`,
1540
1565
  {
1541
1566
  ...init,
1542
1567
  method: "get",
1543
- }
1568
+ },
1544
1569
  );
1545
1570
  &nbsp;
1546
1571
  public getMatchesPrivacy = <span class="fstat-no" title="function not covered" >(</span>
1547
1572
  <span class="cstat-no" title="statement not covered" > playerXuid: string,</span>
1548
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1573
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1549
1574
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;MatchesPrivacy&gt; =&gt;</span>
1550
1575
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1551
1576
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.StatsOrigin}.${</span>
@@ -1554,13 +1579,13 @@ export class HaloInfiniteClient {
1554
1579
  <span class="cstat-no" title="statement not covered" > {</span>
1555
1580
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1556
1581
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1557
- <span class="cstat-no" title="statement not covered" > }</span>
1582
+ <span class="cstat-no" title="statement not covered" > },</span>
1558
1583
  );
1559
1584
  &nbsp;
1560
1585
  public updateMatchesPrivacy = <span class="fstat-no" title="function not covered" >(</span>
1561
1586
  <span class="cstat-no" title="statement not covered" > playerXuid: string,</span>
1562
1587
  <span class="cstat-no" title="statement not covered" > matchesPrivacy: MatchesPrivacy,</span>
1563
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1588
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1564
1589
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;MatchesPrivacy&gt; =&gt; {</span>
1565
1590
  <span class="cstat-no" title="statement not covered" > const headers = new Headers(init?.headers);</span>
1566
1591
  <span class="cstat-no" title="statement not covered" > headers.set("Content-Type", "application/json");</span>
@@ -1573,36 +1598,36 @@ export class HaloInfiniteClient {
1573
1598
  <span class="cstat-no" title="statement not covered" > method: "put",</span>
1574
1599
  <span class="cstat-no" title="statement not covered" > headers,</span>
1575
1600
  <span class="cstat-no" title="statement not covered" > body: JSON.stringify({ matchesPrivacy }),</span>
1576
- <span class="cstat-no" title="statement not covered" > }</span>
1601
+ <span class="cstat-no" title="statement not covered" > },</span>
1577
1602
  <span class="cstat-no" title="statement not covered" > );</span>
1578
1603
  };
1579
1604
  &nbsp;
1580
1605
  public getProgressionFile = <span class="fstat-no" title="function not covered" >&lt;TFileType extends ProgressionFileType&gt;(</span>
1581
1606
  <span class="cstat-no" title="statement not covered" > filename: `${TFileType}/${string}.json`,</span>
1582
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1607
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1583
1608
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;ProgressionFileTypeMap[TFileType]&gt; =&gt;</span>
1584
1609
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1585
1610
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/Progression/file/${filename}`,</span>
1586
1611
  <span class="cstat-no" title="statement not covered" > {</span>
1587
1612
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1588
1613
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1589
- <span class="cstat-no" title="statement not covered" > }</span>
1614
+ <span class="cstat-no" title="statement not covered" > },</span>
1590
1615
  );
1591
1616
  &nbsp;
1592
1617
  public getMedalsMetadataFile = <span class="fstat-no" title="function not covered" >(</span>
1593
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1618
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1594
1619
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;MedalsMetadataFile&gt; =&gt;</span>
1595
1620
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1596
1621
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/Waypoint/file/medals/metadata.json`,</span>
1597
1622
  <span class="cstat-no" title="statement not covered" > {</span>
1598
1623
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1599
1624
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1600
- <span class="cstat-no" title="statement not covered" > }</span>
1625
+ <span class="cstat-no" title="statement not covered" > },</span>
1601
1626
  );
1602
1627
  &nbsp;
1603
1628
  public getBanSummary = <span class="fstat-no" title="function not covered" >(</span>
1604
1629
  <span class="cstat-no" title="statement not covered" > xuids: string[],</span>
1605
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1630
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1606
1631
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;BanSummary&gt; =&gt;</span>
1607
1632
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1608
1633
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.BanProcessorOrigin}.${</span>
@@ -1611,35 +1636,46 @@ export class HaloInfiniteClient {
1611
1636
  <span class="cstat-no" title="statement not covered" > {</span>
1612
1637
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1613
1638
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1614
- <span class="cstat-no" title="statement not covered" > }</span>
1639
+ <span class="cstat-no" title="statement not covered" > },</span>
1615
1640
  );
1616
1641
  &nbsp;
1617
1642
  public <span class="fstat-no" title="function not covered" >getBanMessage(</span>
1618
1643
  <span class="cstat-no" title="statement not covered" > banPath: string,</span>
1619
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1644
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1620
1645
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;BanMessage&gt; {</span>
1621
1646
  <span class="cstat-no" title="statement not covered" > return this.executeJsonRequest(</span>
1622
1647
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/banning/file/${banPath}`,</span>
1623
1648
  <span class="cstat-no" title="statement not covered" > {</span>
1624
1649
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1625
1650
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1626
- <span class="cstat-no" title="statement not covered" > }</span>
1651
+ <span class="cstat-no" title="statement not covered" > },</span>
1627
1652
  <span class="cstat-no" title="statement not covered" > );</span>
1628
1653
  <span class="cstat-no" title="statement not covered" > }</span>
1629
1654
  &nbsp;
1630
1655
  public getSeasonCalendar = <span class="fstat-no" title="function not covered" >(</span>
1631
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1656
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1632
1657
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;SeasonCalendarContainer&gt; =&gt;</span>
1633
1658
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1634
1659
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/progression/file/calendars/seasons/seasoncalendar.json`,</span>
1635
1660
  <span class="cstat-no" title="statement not covered" > {</span>
1636
1661
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1637
1662
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1638
- <span class="cstat-no" title="statement not covered" > }</span>
1663
+ <span class="cstat-no" title="statement not covered" > },</span>
1664
+ );
1665
+ &nbsp;
1666
+ public getCsrSeasonCalendar = <span class="fstat-no" title="function not covered" >(</span>
1667
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1668
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;CsrSeasonCalendarContainer&gt; =&gt;</span>
1669
+ <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1670
+ <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/Progression/file/Csr/Calendars/CsrSeasonCalendar.json`,</span>
1671
+ <span class="cstat-no" title="statement not covered" > {</span>
1672
+ <span class="cstat-no" title="statement not covered" > ...init,</span>
1673
+ <span class="cstat-no" title="statement not covered" > method: "get",</span>
1674
+ <span class="cstat-no" title="statement not covered" > },</span>
1639
1675
  );
1640
1676
  &nbsp;
1641
1677
  public getSettings = <span class="fstat-no" title="function not covered" >(</span>
1642
- <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;</span>
1678
+ <span class="cstat-no" title="statement not covered" > init?: Omit&lt;RequestInit, "body" | "method"&gt;,</span>
1643
1679
  <span class="cstat-no" title="statement not covered" > ): Promise&lt;Settings&gt; =&gt;</span>
1644
1680
  <span class="cstat-no" title="statement not covered" > this.executeJsonRequest(</span>
1645
1681
  <span class="cstat-no" title="statement not covered" > `https://${HaloCoreEndpoints.SettingsOrigin}.${HaloCoreEndpoints.ServiceDomain}/settings/hipc/e2a0a7c6-6efe-42af-9283-c2ab73250c48`,</span>
@@ -1647,7 +1683,7 @@ export class HaloInfiniteClient {
1647
1683
  <span class="cstat-no" title="statement not covered" > ...init,</span>
1648
1684
  <span class="cstat-no" title="statement not covered" > method: "get",</span>
1649
1685
  <span class="cstat-no" title="statement not covered" > },</span>
1650
- <span class="cstat-no" title="statement not covered" > true</span>
1686
+ <span class="cstat-no" title="statement not covered" > true,</span>
1651
1687
  );
1652
1688
  }
1653
1689
  &nbsp;</pre></td></tr></table></pre>
@@ -1657,7 +1693,7 @@ export class HaloInfiniteClient {
1657
1693
  <div class='footer quiet pad2 space-top1 center small'>
1658
1694
  Code coverage generated by
1659
1695
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1660
- at 2026-01-09T16:49:48.934Z
1696
+ at 2026-04-05T17:36:27.841Z
1661
1697
  </div>
1662
1698
  <script src="../prettify.js"></script>
1663
1699
  <script>