halo-infinite-api 5.3.2 → 6.0.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/dist/authentication/halo-authentication-client.js +15 -7
- package/dist/authentication/halo-authentication-client.js.map +1 -1
- package/dist/authentication/xbox-authentication-client.js +29 -14
- package/dist/authentication/xbox-authentication-client.js.map +1 -1
- package/dist/core/halo-infinite-client.js +28 -12
- package/dist/core/halo-infinite-client.js.map +1 -1
- package/dist/core/xbox-client.js +8 -2
- package/dist/core/xbox-client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/halo-infinite/match-skill.d.ts +3 -12
- package/dist/util/fetch-function.d.ts +2 -2
- package/dist/util/fetch-function.js +1 -4
- package/dist/util/fetch-function.js.map +1 -1
- package/dist/util/request-error.d.ts +5 -0
- package/dist/util/request-error.js +10 -0
- package/dist/util/request-error.js.map +1 -0
- package/package.json +1 -1
- package/src/authentication/halo-authentication-client.ts +22 -18
- package/src/authentication/xbox-authentication-client.ts +62 -51
- package/src/core/halo-infinite-client.ts +23 -8
- package/src/core/xbox-client.ts +7 -2
- package/src/index.ts +1 -0
- package/src/models/halo-infinite/match-skill.ts +3 -12
- package/src/util/fetch-function.ts +4 -7
- package/src/util/request-error.ts +12 -0
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.d.ts +0 -11
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.js +0 -43
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-fetchers/index.d.ts +0 -3
- package/dist/core/spartan-token-fetchers/index.js +0 -2
- package/dist/core/spartan-token-fetchers/index.js.map +0 -1
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.d.ts +0 -12
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.js +0 -26
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.d.ts +0 -11
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.js +0 -29
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-providers/index.d.ts +0 -3
- package/dist/core/spartan-token-providers/index.js +0 -2
- package/dist/core/spartan-token-providers/index.js.map +0 -1
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.d.ts +0 -12
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js +0 -25
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js.map +0 -1
- package/dist/core/token-persister.d.ts +0 -4
- package/dist/core/token-persister.js +0 -2
- package/dist/core/token-persister.js.map +0 -1
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.d.ts +0 -11
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js +0 -29
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js.map +0 -1
- package/dist/models/halo-infinite/authoring-asset.d.ts +0 -56
- package/dist/models/halo-infinite/authoring-asset.js +0 -2
- package/dist/models/halo-infinite/authoring-asset.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { DateTime } from "luxon";
|
|
|
2
2
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
3
3
|
import { defaultFetch } from "../util/fetch-function";
|
|
4
4
|
import { GlobalConstants } from "../util/global-contants";
|
|
5
|
+
import { RequestError } from "../util/request-error";
|
|
5
6
|
export class HaloAuthenticationClient {
|
|
6
7
|
fetchXstsToken;
|
|
7
8
|
loadToken;
|
|
@@ -19,7 +20,8 @@ export class HaloAuthenticationClient {
|
|
|
19
20
|
},
|
|
20
21
|
],
|
|
21
22
|
};
|
|
22
|
-
const
|
|
23
|
+
const url = "https://settings.svc.halowaypoint.com/spartan-token";
|
|
24
|
+
const response = await this.fetchFn(url, {
|
|
23
25
|
method: "POST",
|
|
24
26
|
body: JSON.stringify(tokenRequest),
|
|
25
27
|
headers: {
|
|
@@ -28,12 +30,18 @@ export class HaloAuthenticationClient {
|
|
|
28
30
|
Accept: "application/json, text/plain, */*",
|
|
29
31
|
},
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
if (response.status >= 200 && response.status < 300) {
|
|
34
|
+
const result = (await response.json());
|
|
35
|
+
const newToken = {
|
|
36
|
+
token: result.SpartanToken,
|
|
37
|
+
expiresAt: DateTime.fromISO(result.ExpiresUtc.ISO8601Date),
|
|
38
|
+
};
|
|
39
|
+
await this.saveToken(newToken);
|
|
40
|
+
return newToken;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new RequestError(url, response);
|
|
44
|
+
}
|
|
37
45
|
}, () => this.loadToken());
|
|
38
46
|
constructor(fetchXstsToken, loadToken, saveToken, fetchFn = defaultFetch) {
|
|
39
47
|
this.fetchXstsToken = fetchXstsToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/halo-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"halo-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/halo-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAOrD,MAAM,OAAO,wBAAwB;IA0ChB;IACA;IAIA;IACA;IA/CX,iBAAiB,GAAG,IAAI,gBAAgB,CAC9C,KAAK,IAAI,EAAE;QACT,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,MAAM,YAAY,GAAwB;YACxC,QAAQ,EAAE,qBAAqB;YAC/B,UAAU,EAAE,GAAG;YACf,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,aAAa;iBACzB;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAG,qDAAqD,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAClC,OAAO,EAAE;gBACP,YAAY,EAAE,eAAe,CAAC,wBAAwB;gBACtD,cAAc,EAAE,iCAAiC;gBACjD,MAAM,EAAE,mCAAmC;aAC5C;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;YAEvD,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC1B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;aAC3D,CAAC;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC;SACjB;aAAM;YACL,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACvC;IACH,CAAC,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CACvB,CAAC;IAEF,YACmB,cAA8C,EAC9C,SAGR,EACQ,SAA0C,EAC1C,UAAyB,YAAY;QANrC,mBAAc,GAAd,cAAc,CAAgC;QAC9C,cAAS,GAAT,SAAS,CAGjB;QACQ,cAAS,GAAT,SAAS,CAAiC;QAC1C,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEG,KAAK,CAAC,eAAe;QAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -2,6 +2,7 @@ import { DateTime } from "luxon";
|
|
|
2
2
|
import { KeyedExpiryTokenCache } from "../util/keyed-expiry-token-cache";
|
|
3
3
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
4
4
|
import { defaultFetch } from "../util/fetch-function";
|
|
5
|
+
import { RequestError } from "../util/request-error";
|
|
5
6
|
export var RelyingParty;
|
|
6
7
|
(function (RelyingParty) {
|
|
7
8
|
RelyingParty["Xbox"] = "http://xboxlive.com";
|
|
@@ -11,7 +12,8 @@ export class XboxAuthenticationClient {
|
|
|
11
12
|
tokenPersisterOrPromise;
|
|
12
13
|
fetchFn;
|
|
13
14
|
userTokenCache = new ExpiryTokenCache(async (accessToken) => {
|
|
14
|
-
const
|
|
15
|
+
const url = "https://user.auth.xboxlive.com/user/authenticate";
|
|
16
|
+
const response = await this.fetchFn(url, {
|
|
15
17
|
method: "POST",
|
|
16
18
|
headers: {
|
|
17
19
|
"Content-Type": "application/json",
|
|
@@ -28,18 +30,25 @@ export class XboxAuthenticationClient {
|
|
|
28
30
|
},
|
|
29
31
|
}),
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
if (response.status >= 200 && response.status < 300) {
|
|
34
|
+
const result = (await response.json());
|
|
35
|
+
const token = {
|
|
36
|
+
...result,
|
|
37
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
38
|
+
};
|
|
39
|
+
await (await this.tokenPersisterOrPromise)?.save("xbox.userToken", token);
|
|
40
|
+
return token;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new RequestError(url, response);
|
|
44
|
+
}
|
|
37
45
|
}, async () => {
|
|
38
46
|
const tokenPersister = await this.tokenPersisterOrPromise;
|
|
39
47
|
return ((await tokenPersister?.load("xbox.userToken")) ?? null);
|
|
40
48
|
});
|
|
41
49
|
xstsTicketCache = new KeyedExpiryTokenCache(async (relyingParty, userToken) => {
|
|
42
|
-
const
|
|
50
|
+
const url = "https://xsts.auth.xboxlive.com/xsts/authorize";
|
|
51
|
+
const response = await this.fetchFn(url, {
|
|
43
52
|
method: "POST",
|
|
44
53
|
headers: {
|
|
45
54
|
"Content-Type": "application/json",
|
|
@@ -55,12 +64,18 @@ export class XboxAuthenticationClient {
|
|
|
55
64
|
},
|
|
56
65
|
}),
|
|
57
66
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
if (response.status >= 200 && response.status < 300) {
|
|
68
|
+
const result = (await response.json());
|
|
69
|
+
const token = {
|
|
70
|
+
...result,
|
|
71
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
72
|
+
};
|
|
73
|
+
await (await this.tokenPersisterOrPromise)?.save("xbox.xstsTicket." + relyingParty, token);
|
|
74
|
+
return token;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new RequestError(url, response);
|
|
78
|
+
}
|
|
64
79
|
}, async (relyingParty) => (await (await this.tokenPersisterOrPromise)?.load("xbox.xstsTicket." + relyingParty)) ?? null);
|
|
65
80
|
constructor(tokenPersisterOrPromise, fetchFn = defaultFetch) {
|
|
66
81
|
this.tokenPersisterOrPromise = tokenPersisterOrPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xbox-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/xbox-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"xbox-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/xbox-authentication-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { HaloCoreEndpoints } from "../endpoints/halo-core-endpoints";
|
|
|
3
3
|
import { AssetKind } from "../models/halo-infinite/asset-kind";
|
|
4
4
|
import { MatchType } from "../models/halo-infinite/match-type";
|
|
5
5
|
import { GlobalConstants } from "../util/global-contants";
|
|
6
|
+
import { RequestError } from "../util/request-error";
|
|
6
7
|
const assetKindUrlMap = {
|
|
7
8
|
[AssetKind.Map]: "Maps",
|
|
8
9
|
[AssetKind.UgcGameVariant]: "UgcGameVariants",
|
|
@@ -42,15 +43,32 @@ export class HaloInfiniteClient {
|
|
|
42
43
|
headers.set("Accept", "application/json");
|
|
43
44
|
}
|
|
44
45
|
headers.set("x-343-authorization-spartan", await this.spartanTokenProvider.getSpartanToken());
|
|
45
|
-
const
|
|
46
|
+
const response = await this.fetchFn(url, {
|
|
46
47
|
...init,
|
|
47
48
|
headers,
|
|
48
49
|
});
|
|
49
|
-
|
|
50
|
+
if (response.status >= 200 && response.status < 300) {
|
|
51
|
+
return (await response.json());
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
throw new RequestError(url, response);
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
57
|
async executeResultsRequest(...args) {
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
let resultsContainer;
|
|
59
|
+
try {
|
|
60
|
+
resultsContainer = await this.executeRequest(...args);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (e instanceof RequestError && e.response.status === 404) {
|
|
64
|
+
// 404s if even one of the xuids is invalid
|
|
65
|
+
resultsContainer = (await e.response.json());
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw e;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return resultsContainer.Value;
|
|
54
72
|
}
|
|
55
73
|
async executePaginationRequest(count, start, queryParameters, ...args) {
|
|
56
74
|
const [url, ...rest] = args;
|
|
@@ -127,14 +145,12 @@ export class HaloInfiniteClient {
|
|
|
127
145
|
...init,
|
|
128
146
|
method: "get",
|
|
129
147
|
});
|
|
130
|
-
getMatchSkill = async (matchId, playerIds, init) => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
});
|
|
137
|
-
};
|
|
148
|
+
getMatchSkill = async (matchId, playerIds, init) => await this.executeResultsRequest(`https://${HaloCoreEndpoints.SkillOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/matches/${matchId}/skill?players=${playerIds
|
|
149
|
+
.map(wrapPlayerId)
|
|
150
|
+
.join(",")}`, {
|
|
151
|
+
...init,
|
|
152
|
+
method: "get",
|
|
153
|
+
});
|
|
138
154
|
/** Gets authoring metadata about a specific asset. */
|
|
139
155
|
getAsset = (assetType, assetId, init) => this.executeRequest(`https://${HaloCoreEndpoints.DiscoveryOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/${assetKindUrlMap[assetType]}/${assetId}`, {
|
|
140
156
|
...init,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAM/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/xbox-client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestError } from "../util/request-error";
|
|
1
2
|
import { defaultFetch } from "../util/fetch-function";
|
|
2
3
|
export class XboxClient {
|
|
3
4
|
xboxTokenProvider;
|
|
@@ -17,11 +18,16 @@ export class XboxClient {
|
|
|
17
18
|
if (!headers.has("x-xbl-contract-version")) {
|
|
18
19
|
headers.set("x-xbl-contract-version", "1");
|
|
19
20
|
}
|
|
20
|
-
const
|
|
21
|
+
const response = await this.fetchFn(url, {
|
|
21
22
|
...init,
|
|
22
23
|
headers,
|
|
23
24
|
});
|
|
24
|
-
|
|
25
|
+
if (response.status >= 200 && response.status < 300) {
|
|
26
|
+
return (await response.json());
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new RequestError(url, response);
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
32
|
async searchUsers(query, init) {
|
|
27
33
|
const { results } = await this.executeRequest(`https://usersearch.xboxlive.com/suggest?q=${encodeURIComponent(query)}`, { ...init, method: "GET" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xbox-client.js","sourceRoot":"","sources":["../../src/core/xbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,OAAO,UAAU;IAEF;IACA;IAFnB,YACmB,iBAAoC,EACpC,UAAyB,YAAY;QADrC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEI,KAAK,CAAC,cAAc,CAAI,GAAW,EAAE,IAAiB;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACjC,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAClD,CAAC;SACH;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAC5C;QACD,MAAM,
|
|
1
|
+
{"version":3,"file":"xbox-client.js","sourceRoot":"","sources":["../../src/core/xbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,OAAO,UAAU;IAEF;IACA;IAFnB,YACmB,iBAAoC,EACpC,UAAyB,YAAY;QADrC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEI,KAAK,CAAC,cAAc,CAAI,GAAW,EAAE,IAAiB;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACjC,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAClD,CAAC;SACH;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAC5C;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,GAAG,IAAI;YACP,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;YACnD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;SACrC;aAAM;YACL,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,KAAa,EACb,IAA2C;QAE3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAa3C,6CAA6C,kBAAkB,CAAC,KAAK,CAAC,EAAE,EACxE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAC3B,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAA2C;QACpE,OAAO,MAAM,IAAI,CAAC,cAAc,CAC9B,8DAA8D,EAC9D,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAC3B,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,3 +24,4 @@ export { ServiceRecord } from "./models/halo-infinite/service-record";
|
|
|
24
24
|
export { Stats } from "./models/halo-infinite/stats";
|
|
25
25
|
export { UserInfo } from "./models/halo-infinite/user-info";
|
|
26
26
|
export { FetchFunction } from "./util/fetch-function";
|
|
27
|
+
export { RequestError } from "./util/request-error";
|
package/dist/index.js
CHANGED
|
@@ -9,4 +9,5 @@ export { GameVariantCategory } from "./models/halo-infinite/game-variant-categor
|
|
|
9
9
|
export { MatchOutcome } from "./models/halo-infinite/match-outcome";
|
|
10
10
|
export { MatchType } from "./models/halo-infinite/match-type";
|
|
11
11
|
export { PlaylistExperience } from "./models/halo-infinite/playlist-experience";
|
|
12
|
+
export { RequestError } from "./util/request-error";
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAK9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAK9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Value: number;
|
|
3
|
-
MeasurementMatchesRemaining: number;
|
|
4
|
-
Tier: string;
|
|
5
|
-
TierStart: number;
|
|
6
|
-
NextTier: string;
|
|
7
|
-
NextTierStart: number;
|
|
8
|
-
NextSubTier: number;
|
|
9
|
-
InitialMeasurementMatches: number;
|
|
10
|
-
}
|
|
1
|
+
import { PlaylistCsr } from "./playlist-csr";
|
|
11
2
|
interface StatPerformance {
|
|
12
3
|
Count: number;
|
|
13
4
|
Expected: number;
|
|
@@ -24,8 +15,8 @@ export interface MatchSkill<TResult extends 1 | 0 = 0> {
|
|
|
24
15
|
[key: number]: number;
|
|
25
16
|
};
|
|
26
17
|
RankRecap: {
|
|
27
|
-
PreMatchCsr:
|
|
28
|
-
PostMatchCsr:
|
|
18
|
+
PreMatchCsr: PlaylistCsr;
|
|
19
|
+
PostMatchCsr: PlaylistCsr;
|
|
29
20
|
};
|
|
30
21
|
StatPerformances: TResult extends 0 ? {
|
|
31
22
|
Kills: StatPerformance;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type FetchFunction =
|
|
2
|
-
export declare const defaultFetch:
|
|
1
|
+
export type FetchFunction = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
2
|
+
export declare const defaultFetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-function.js","sourceRoot":"","sources":["../../src/util/fetch-function.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAwB,EACxB,IAAkB,
|
|
1
|
+
{"version":3,"file":"fetch-function.js","sourceRoot":"","sources":["../../src/util/fetch-function.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAwB,EACxB,IAAkB,EACC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class RequestError extends Error {
|
|
2
|
+
request;
|
|
3
|
+
response;
|
|
4
|
+
constructor(request, response) {
|
|
5
|
+
super(`${typeof request === "object" && "url" in request ? request.url : request} ${response.status} ${response.statusText}`);
|
|
6
|
+
this.request = request;
|
|
7
|
+
this.response = response;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=request-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-error.js","sourceRoot":"","sources":["../../src/util/request-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAEnB;IACA;IAFlB,YACkB,OAA0B,EAC1B,QAAkB;QAElC,KAAK,CACH,GACE,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAClE,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC7C,CAAC;QAPc,YAAO,GAAP,OAAO,CAAmB;QAC1B,aAAQ,GAAR,QAAQ,CAAU;IAOpC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import type { SpartanTokenRequest } from "../models/spartan-token-request";
|
|
|
4
4
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
5
5
|
import { FetchFunction, defaultFetch } from "../util/fetch-function";
|
|
6
6
|
import { GlobalConstants } from "../util/global-contants";
|
|
7
|
+
import { RequestError } from "../util/request-error";
|
|
7
8
|
|
|
8
9
|
export interface Token {
|
|
9
10
|
token: string;
|
|
@@ -25,25 +26,28 @@ export class HaloAuthenticationClient {
|
|
|
25
26
|
},
|
|
26
27
|
],
|
|
27
28
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
const url = "https://settings.svc.halowaypoint.com/spartan-token";
|
|
30
|
+
const response = await this.fetchFn(url, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
body: JSON.stringify(tokenRequest),
|
|
33
|
+
headers: {
|
|
34
|
+
"User-Agent": GlobalConstants.HALO_WAYPOINT_USER_AGENT,
|
|
35
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
36
|
+
Accept: "application/json, text/plain, */*",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (response.status >= 200 && response.status < 300) {
|
|
40
|
+
const result = (await response.json()) as SpartanToken;
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
const newToken = {
|
|
43
|
+
token: result.SpartanToken,
|
|
44
|
+
expiresAt: DateTime.fromISO(result.ExpiresUtc.ISO8601Date),
|
|
45
|
+
};
|
|
46
|
+
await this.saveToken(newToken);
|
|
47
|
+
return newToken;
|
|
48
|
+
} else {
|
|
49
|
+
throw new RequestError(url, response);
|
|
50
|
+
}
|
|
47
51
|
},
|
|
48
52
|
() => this.loadToken()
|
|
49
53
|
);
|
|
@@ -4,6 +4,7 @@ import { XboxTicket } from "../models/xbox-ticket";
|
|
|
4
4
|
import { KeyedExpiryTokenCache } from "../util/keyed-expiry-token-cache";
|
|
5
5
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
6
6
|
import { FetchFunction, defaultFetch } from "../util/fetch-function";
|
|
7
|
+
import { RequestError } from "../util/request-error";
|
|
7
8
|
|
|
8
9
|
export enum RelyingParty {
|
|
9
10
|
Xbox = "http://xboxlive.com",
|
|
@@ -19,33 +20,39 @@ export interface XboxAuthenticationToken {
|
|
|
19
20
|
export class XboxAuthenticationClient {
|
|
20
21
|
private userTokenCache = new ExpiryTokenCache(
|
|
21
22
|
async (accessToken: string) => {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
const url = "https://user.auth.xboxlive.com/user/authenticate";
|
|
24
|
+
const response = await this.fetchFn(url, {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers: {
|
|
27
|
+
"Content-Type": "application/json",
|
|
28
|
+
Accept: "application/json",
|
|
29
|
+
"x-xbl-contract-version": "1",
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
RelyingParty: "http://auth.xboxlive.com",
|
|
33
|
+
TokenType: "JWT",
|
|
34
|
+
Properties: {
|
|
35
|
+
AuthMethod: "RPS",
|
|
36
|
+
SiteName: "user.auth.xboxlive.com",
|
|
37
|
+
RpsTicket: `d=${accessToken}`,
|
|
30
38
|
},
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
SiteName: "user.auth.xboxlive.com",
|
|
37
|
-
RpsTicket: `d=${accessToken}`,
|
|
38
|
-
},
|
|
39
|
-
}),
|
|
40
|
-
}
|
|
41
|
-
);
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (response.status >= 200 && response.status < 300) {
|
|
43
|
+
const result = (await response.json()) as XboxTicket;
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const token = {
|
|
46
|
+
...result,
|
|
47
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
48
|
+
};
|
|
49
|
+
await (
|
|
50
|
+
await this.tokenPersisterOrPromise
|
|
51
|
+
)?.save("xbox.userToken", token);
|
|
52
|
+
return token;
|
|
53
|
+
} else {
|
|
54
|
+
throw new RequestError(url, response);
|
|
55
|
+
}
|
|
49
56
|
},
|
|
50
57
|
async () => {
|
|
51
58
|
const tokenPersister = await this.tokenPersisterOrPromise;
|
|
@@ -58,34 +65,38 @@ export class XboxAuthenticationClient {
|
|
|
58
65
|
);
|
|
59
66
|
private xstsTicketCache = new KeyedExpiryTokenCache(
|
|
60
67
|
async (relyingParty: RelyingParty, userToken: string) => {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
const url = "https://xsts.auth.xboxlive.com/xsts/authorize";
|
|
69
|
+
const response = await this.fetchFn(url, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: {
|
|
72
|
+
"Content-Type": "application/json",
|
|
73
|
+
Accept: "application/json",
|
|
74
|
+
"x-xbl-contract-version": "1",
|
|
75
|
+
},
|
|
76
|
+
body: JSON.stringify({
|
|
77
|
+
RelyingParty: relyingParty,
|
|
78
|
+
TokenType: "JWT",
|
|
79
|
+
Properties: {
|
|
80
|
+
SandboxId: "RETAIL",
|
|
81
|
+
UserTokens: [userToken],
|
|
69
82
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
TokenType: "JWT",
|
|
73
|
-
Properties: {
|
|
74
|
-
SandboxId: "RETAIL",
|
|
75
|
-
UserTokens: [userToken],
|
|
76
|
-
},
|
|
77
|
-
}),
|
|
78
|
-
}
|
|
79
|
-
);
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
if (response.status >= 200 && response.status < 300) {
|
|
87
|
+
const result = (await response.json()) as XboxTicket;
|
|
88
|
+
|
|
89
|
+
const token = {
|
|
90
|
+
...result,
|
|
91
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
92
|
+
};
|
|
93
|
+
await (
|
|
94
|
+
await this.tokenPersisterOrPromise
|
|
95
|
+
)?.save("xbox.xstsTicket." + relyingParty, token);
|
|
96
|
+
return token;
|
|
97
|
+
} else {
|
|
98
|
+
throw new RequestError(url, response);
|
|
99
|
+
}
|
|
89
100
|
},
|
|
90
101
|
async (relyingParty) =>
|
|
91
102
|
(await (
|
|
@@ -16,6 +16,7 @@ import { ServiceRecord } from "../models/halo-infinite/service-record";
|
|
|
16
16
|
import { UserInfo } from "../models/halo-infinite/user-info";
|
|
17
17
|
import { GlobalConstants } from "../util/global-contants";
|
|
18
18
|
import { SpartanTokenProvider } from "./token-providers/spartan-token-providers";
|
|
19
|
+
import { RequestError } from "../util/request-error";
|
|
19
20
|
|
|
20
21
|
export interface ResultContainer<TValue> {
|
|
21
22
|
Id: string;
|
|
@@ -85,20 +86,35 @@ export class HaloInfiniteClient {
|
|
|
85
86
|
await this.spartanTokenProvider.getSpartanToken()
|
|
86
87
|
);
|
|
87
88
|
|
|
88
|
-
const
|
|
89
|
+
const response = await this.fetchFn(url, {
|
|
89
90
|
...init,
|
|
90
91
|
headers,
|
|
91
92
|
});
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
if (response.status >= 200 && response.status < 300) {
|
|
95
|
+
return (await response.json()) as T;
|
|
96
|
+
} else {
|
|
97
|
+
throw new RequestError(url, response);
|
|
98
|
+
}
|
|
94
99
|
}
|
|
95
100
|
|
|
96
101
|
private async executeResultsRequest<T>(
|
|
97
102
|
...args: Parameters<HaloInfiniteClient["executeRequest"]>
|
|
98
103
|
) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
let resultsContainer: ResultsContainer<T>;
|
|
105
|
+
try {
|
|
106
|
+
resultsContainer = await this.executeRequest<ResultsContainer<T>>(
|
|
107
|
+
...args
|
|
108
|
+
);
|
|
109
|
+
} catch (e) {
|
|
110
|
+
if (e instanceof RequestError && e.response.status === 404) {
|
|
111
|
+
// 404s if even one of the xuids is invalid
|
|
112
|
+
resultsContainer = (await e.response.json()) as ResultsContainer<T>;
|
|
113
|
+
} else {
|
|
114
|
+
throw e;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return resultsContainer.Value;
|
|
102
118
|
}
|
|
103
119
|
|
|
104
120
|
private async executePaginationRequest<T>(
|
|
@@ -265,8 +281,8 @@ export class HaloInfiniteClient {
|
|
|
265
281
|
matchId: string,
|
|
266
282
|
playerIds: string[],
|
|
267
283
|
init?: Omit<RequestInit, "body" | "method">
|
|
268
|
-
) =>
|
|
269
|
-
|
|
284
|
+
) =>
|
|
285
|
+
await this.executeResultsRequest<MatchSkill>(
|
|
270
286
|
`https://${HaloCoreEndpoints.SkillOrigin}.${
|
|
271
287
|
HaloCoreEndpoints.ServiceDomain
|
|
272
288
|
}/hi/matches/${matchId}/skill?players=${playerIds
|
|
@@ -277,7 +293,6 @@ export class HaloInfiniteClient {
|
|
|
277
293
|
method: "get",
|
|
278
294
|
}
|
|
279
295
|
);
|
|
280
|
-
};
|
|
281
296
|
|
|
282
297
|
/** Gets authoring metadata about a specific asset. */
|
|
283
298
|
public getAsset = <TAssetType extends keyof AssetKindTypeMap>(
|
package/src/core/xbox-client.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestError } from "../util/request-error";
|
|
1
2
|
import { FetchFunction, defaultFetch } from "../util/fetch-function";
|
|
2
3
|
import { XboxTokenProvider } from "./token-providers/xbox-token-provider";
|
|
3
4
|
|
|
@@ -21,12 +22,16 @@ export class XboxClient {
|
|
|
21
22
|
if (!headers.has("x-xbl-contract-version")) {
|
|
22
23
|
headers.set("x-xbl-contract-version", "1");
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
+
const response = await this.fetchFn(url, {
|
|
25
26
|
...init,
|
|
26
27
|
headers,
|
|
27
28
|
});
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
if (response.status >= 200 && response.status < 300) {
|
|
31
|
+
return (await response.json()) as T;
|
|
32
|
+
} else {
|
|
33
|
+
throw new RequestError(url, response);
|
|
34
|
+
}
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
public async searchUsers(
|
package/src/index.ts
CHANGED
|
@@ -40,3 +40,4 @@ export { ServiceRecord } from "./models/halo-infinite/service-record";
|
|
|
40
40
|
export { Stats } from "./models/halo-infinite/stats";
|
|
41
41
|
export { UserInfo } from "./models/halo-infinite/user-info";
|
|
42
42
|
export { FetchFunction } from "./util/fetch-function";
|
|
43
|
+
export { RequestError } from "./util/request-error";
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Value: number;
|
|
3
|
-
MeasurementMatchesRemaining: number;
|
|
4
|
-
Tier: string;
|
|
5
|
-
TierStart: number;
|
|
6
|
-
NextTier: string;
|
|
7
|
-
NextTierStart: number;
|
|
8
|
-
NextSubTier: number;
|
|
9
|
-
InitialMeasurementMatches: number;
|
|
10
|
-
}
|
|
1
|
+
import { PlaylistCsr } from "./playlist-csr";
|
|
11
2
|
|
|
12
3
|
interface StatPerformance {
|
|
13
4
|
Count: number;
|
|
@@ -27,8 +18,8 @@ export interface MatchSkill<TResult extends 1 | 0 = 0> {
|
|
|
27
18
|
[key: number]: number;
|
|
28
19
|
};
|
|
29
20
|
RankRecap: {
|
|
30
|
-
PreMatchCsr:
|
|
31
|
-
PostMatchCsr:
|
|
21
|
+
PreMatchCsr: PlaylistCsr;
|
|
22
|
+
PostMatchCsr: PlaylistCsr;
|
|
32
23
|
};
|
|
33
24
|
StatPerformances: TResult extends 0
|
|
34
25
|
? {
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
export type FetchFunction =
|
|
1
|
+
export type FetchFunction = (
|
|
2
2
|
input: RequestInfo | URL,
|
|
3
3
|
init?: RequestInit
|
|
4
|
-
) => Promise<
|
|
4
|
+
) => Promise<Response>;
|
|
5
5
|
|
|
6
|
-
export const defaultFetch = async
|
|
6
|
+
export const defaultFetch = async (
|
|
7
7
|
input: RequestInfo | URL,
|
|
8
8
|
init?: RequestInit
|
|
9
|
-
): Promise<
|
|
10
|
-
const response = await fetch(input, init);
|
|
11
|
-
return response.json();
|
|
12
|
-
};
|
|
9
|
+
): Promise<Response> => fetch(input, init);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class RequestError extends Error {
|
|
2
|
+
constructor(
|
|
3
|
+
public readonly request: RequestInfo | URL,
|
|
4
|
+
public readonly response: Response
|
|
5
|
+
) {
|
|
6
|
+
super(
|
|
7
|
+
`${
|
|
8
|
+
typeof request === "object" && "url" in request ? request.url : request
|
|
9
|
+
} ${response.status} ${response.statusText}`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TokenPersister } from "../token-persister";
|
|
2
|
-
import { SpartanTokenProvider } from ".";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
5
|
-
* process. This is useful for applications that do not need to contend with
|
|
6
|
-
* CORS restrictions.
|
|
7
|
-
*/
|
|
8
|
-
export declare class AutoXstsSpartanTokenProvider implements SpartanTokenProvider {
|
|
9
|
-
readonly getSpartanToken: () => Promise<string>;
|
|
10
|
-
constructor(clientId: string, redirectUri: string, getAuthCode: (authorizeUrl: string) => Promise<string>, tokenPersister?: TokenPersister);
|
|
11
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { RelyingParty, XboxAuthenticationClient, } from "../../authentication/xbox-authentication-client";
|
|
2
|
-
import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
5
|
-
* process. This is useful for applications that do not need to contend with
|
|
6
|
-
* CORS restrictions.
|
|
7
|
-
*/
|
|
8
|
-
export class AutoXstsSpartanTokenProvider {
|
|
9
|
-
getSpartanToken;
|
|
10
|
-
constructor(clientId, redirectUri, getAuthCode, tokenPersister) {
|
|
11
|
-
const xboxAuthClient = new XboxAuthenticationClient(clientId, redirectUri, getAuthCode, async () => {
|
|
12
|
-
if (tokenPersister) {
|
|
13
|
-
return await tokenPersister.load("xbox.authToken");
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}, async (token) => {
|
|
19
|
-
if (tokenPersister) {
|
|
20
|
-
await tokenPersister.save("xbox.authToken", token);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const haloAuthClient = new HaloAuthenticationClient(async () => {
|
|
24
|
-
const accessToken = await xboxAuthClient.getAccessToken();
|
|
25
|
-
const userToken = await xboxAuthClient.getUserToken(accessToken);
|
|
26
|
-
const xstsTicket = await xboxAuthClient.getXstsTicket(userToken, RelyingParty.Halo);
|
|
27
|
-
return xstsTicket.Token;
|
|
28
|
-
}, async () => {
|
|
29
|
-
if (tokenPersister) {
|
|
30
|
-
return await tokenPersister.load("halo.authToken");
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
}, async (token) => {
|
|
36
|
-
if (tokenPersister) {
|
|
37
|
-
await tokenPersister.save("halo.authToken", token);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
this.getSpartanToken = () => haloAuthClient.getSpartanToken();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=auto-xsts-sartan-token-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-xsts-sartan-token-provider.js","sourceRoot":"","sources":["../../../src/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,wBAAwB,GACzB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAG3F;;;;GAIG;AACH,MAAM,OAAO,4BAA4B;IACvB,eAAe,CAAwB;IAEvD,YACE,QAAgB,EAChB,WAAmB,EACnB,WAAsD,EACtD,cAA+B;QAE/B,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,IAAI,EAAE;YACT,IAAI,cAAc,EAAE;gBAClB,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACpD;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,cAAc,EAAE;gBAClB,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;aACpD;QACH,CAAC,CACF,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,KAAK,IAAI,EAAE;YACT,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,CACnD,SAAS,EACT,YAAY,CAAC,IAAI,CAClB,CAAC;YACF,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,EACD,KAAK,IAAI,EAAE;YACT,IAAI,cAAc,EAAE;gBAClB,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACpD;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,cAAc,EAAE;gBAClB,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;aACpD;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/spartan-token-fetchers/index.ts"],"names":[],"mappings":""}
|
package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TokenPersister } from "../token-persister";
|
|
2
|
-
import { SpartanTokenProvider } from ".";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches uses a pre-fetched XSTS ticket token.
|
|
5
|
-
* Since requests to the Halo API are subject to CORS restrictions a
|
|
6
|
-
* HaloAuthenticationClient can be instantitated with a pre-fetched XSTS ticket
|
|
7
|
-
* and run on a server (such as one provided by the user).
|
|
8
|
-
*/
|
|
9
|
-
export declare class StaticXstsTicketTokenSpartanTokenProvider implements SpartanTokenProvider {
|
|
10
|
-
readonly getSpartanToken: () => Promise<string>;
|
|
11
|
-
constructor(xstsTicketToken: string, tokenPersister?: TokenPersister);
|
|
12
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";
|
|
2
|
-
/**
|
|
3
|
-
* A SpartanTokenProvider that fetches uses a pre-fetched XSTS ticket token.
|
|
4
|
-
* Since requests to the Halo API are subject to CORS restrictions a
|
|
5
|
-
* HaloAuthenticationClient can be instantitated with a pre-fetched XSTS ticket
|
|
6
|
-
* and run on a server (such as one provided by the user).
|
|
7
|
-
*/
|
|
8
|
-
export class StaticXstsTicketTokenSpartanTokenProvider {
|
|
9
|
-
getSpartanToken;
|
|
10
|
-
constructor(xstsTicketToken, tokenPersister) {
|
|
11
|
-
const haloAuthClient = new HaloAuthenticationClient(() => xstsTicketToken, async () => {
|
|
12
|
-
if (tokenPersister) {
|
|
13
|
-
return await tokenPersister.load("halo.authToken");
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}, async (token) => {
|
|
19
|
-
if (tokenPersister) {
|
|
20
|
-
await tokenPersister.save("halo.authToken", token);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
this.getSpartanToken = () => haloAuthClient.getSpartanToken();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=static-xsts-ticket-token-spartan-token-provider.js.map
|
package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static-xsts-ticket-token-spartan-token-provider.js","sourceRoot":"","sources":["../../../src/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAG3F;;;;;GAKG;AAEH,MAAM,OAAO,yCAAyC;IAGpC,eAAe,CAAwB;IAEvD,YAAY,eAAuB,EAAE,cAA+B;QAClE,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,GAAG,EAAE,CAAC,eAAe,EACrB,KAAK,IAAI,EAAE;YACT,IAAI,cAAc,EAAE;gBAClB,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACpD;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,cAAc,EAAE;gBAClB,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;aACpD;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TokenPersister } from "../token-persisters";
|
|
2
|
-
import { SpartanTokenProvider } from ".";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
5
|
-
* process. This is useful for applications that do not need to contend with
|
|
6
|
-
* CORS restrictions.
|
|
7
|
-
*/
|
|
8
|
-
export declare class AutoXstsSpartanTokenProvider implements SpartanTokenProvider {
|
|
9
|
-
readonly getSpartanToken: () => Promise<string>;
|
|
10
|
-
constructor(getOauth2AccessToken: () => Promise<string>, tokenPersister?: TokenPersister);
|
|
11
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { XboxAuthenticationClient, } from "../../authentication/xbox-authentication-client";
|
|
2
|
-
import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";
|
|
3
|
-
import { inMemoryTokenPersister } from "../token-persisters/in-memory-token-persister";
|
|
4
|
-
/**
|
|
5
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
6
|
-
* process. This is useful for applications that do not need to contend with
|
|
7
|
-
* CORS restrictions.
|
|
8
|
-
*/
|
|
9
|
-
export class AutoXstsSpartanTokenProvider {
|
|
10
|
-
getSpartanToken;
|
|
11
|
-
constructor(getOauth2AccessToken, tokenPersister) {
|
|
12
|
-
let actualTokenPersister;
|
|
13
|
-
if (tokenPersister) {
|
|
14
|
-
actualTokenPersister = tokenPersister;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
actualTokenPersister = inMemoryTokenPersister;
|
|
18
|
-
}
|
|
19
|
-
const xboxAuthClient = new XboxAuthenticationClient(tokenPersister);
|
|
20
|
-
const haloAuthClient = new HaloAuthenticationClient(async () => {
|
|
21
|
-
const xstsTicket = await xboxAuthClient.getXstsTicket(getOauth2AccessToken);
|
|
22
|
-
return xstsTicket.Token;
|
|
23
|
-
}, async () => await actualTokenPersister.load("halo.authToken"), async (token) => {
|
|
24
|
-
await actualTokenPersister.save("halo.authToken", token);
|
|
25
|
-
});
|
|
26
|
-
this.getSpartanToken = () => haloAuthClient.getSpartanToken();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=auto-xsts-spartan-token-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-xsts-spartan-token-provider.js","sourceRoot":"","sources":["../../../src/core/spartan-token-providers/auto-xsts-spartan-token-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,GACzB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAE3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAEvF;;;;GAIG;AACH,MAAM,OAAO,4BAA4B;IACvB,eAAe,CAAwB;IAEvD,YACE,oBAA2C,EAC3C,cAA+B;QAE/B,IAAI,oBAAoC,CAAC;QACzC,IAAI,cAAc,EAAE;YAClB,oBAAoB,GAAG,cAAc,CAAC;SACvC;aAAM;YACL,oBAAoB,GAAG,sBAAsB,CAAC;SAC/C;QACD,MAAM,cAAc,GAAG,IAAI,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,KAAK,IAAI,EAAE;YACT,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,CACnD,oBAAoB,CACrB,CAAC;YACF,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,EACD,KAAK,IAAI,EAAE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC7D,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/spartan-token-providers/index.ts"],"names":[],"mappings":""}
|
package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TokenPersister } from "../token-persisters";
|
|
2
|
-
import { SpartanTokenProvider } from ".";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches uses a pre-fetched XSTS ticket token.
|
|
5
|
-
* Since requests to the Halo API are subject to CORS restrictions a
|
|
6
|
-
* HaloAuthenticationClient can be instantitated with a pre-fetched XSTS ticket
|
|
7
|
-
* and run on a server (such as one provided by the user).
|
|
8
|
-
*/
|
|
9
|
-
export declare class StaticXstsTicketTokenSpartanTokenProvider implements SpartanTokenProvider {
|
|
10
|
-
readonly getSpartanToken: () => Promise<string>;
|
|
11
|
-
constructor(xstsTicketToken: string, tokenPersister?: TokenPersister);
|
|
12
|
-
}
|
package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { HaloAuthenticationClient } from "../../authentication/halo-authentication-client";
|
|
2
|
-
import { inMemoryTokenPersister } from "../token-persisters/in-memory-token-persister";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches uses a pre-fetched XSTS ticket token.
|
|
5
|
-
* Since requests to the Halo API are subject to CORS restrictions a
|
|
6
|
-
* HaloAuthenticationClient can be instantitated with a pre-fetched XSTS ticket
|
|
7
|
-
* and run on a server (such as one provided by the user).
|
|
8
|
-
*/
|
|
9
|
-
export class StaticXstsTicketTokenSpartanTokenProvider {
|
|
10
|
-
getSpartanToken;
|
|
11
|
-
constructor(xstsTicketToken, tokenPersister) {
|
|
12
|
-
let actualTokenPersister;
|
|
13
|
-
if (tokenPersister) {
|
|
14
|
-
actualTokenPersister = tokenPersister;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
actualTokenPersister = inMemoryTokenPersister;
|
|
18
|
-
}
|
|
19
|
-
const haloAuthClient = new HaloAuthenticationClient(() => xstsTicketToken, async () => await actualTokenPersister.load("halo.authToken"), async (token) => {
|
|
20
|
-
await actualTokenPersister.save("halo.authToken", token);
|
|
21
|
-
});
|
|
22
|
-
this.getSpartanToken = () => haloAuthClient.getSpartanToken();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=static-xsts-ticket-token-spartan-token-provider.js.map
|
package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static-xsts-ticket-token-spartan-token-provider.js","sourceRoot":"","sources":["../../../src/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAE3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,OAAO,yCAAyC;IAGpC,eAAe,CAAwB;IAEvD,YAAY,eAAuB,EAAE,cAA+B;QAClE,IAAI,oBAAoC,CAAC;QACzC,IAAI,cAAc,EAAE;YAClB,oBAAoB,GAAG,cAAc,CAAC;SACvC;aAAM;YACL,oBAAoB,GAAG,sBAAsB,CAAC;SAC/C;QAED,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,GAAG,EAAE,CAAC,eAAe,EACrB,KAAK,IAAI,EAAE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC7D,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-persister.js","sourceRoot":"","sources":["../../src/core/token-persister.ts"],"names":[],"mappings":""}
|
package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TokenPersister } from "../../token-persisters";
|
|
2
|
-
import { SpartanTokenProvider } from ".";
|
|
3
|
-
/**
|
|
4
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
5
|
-
* process. This is useful for applications that do not need to contend with
|
|
6
|
-
* CORS restrictions.
|
|
7
|
-
*/
|
|
8
|
-
export declare class AutoXstsSpartanTokenProvider implements SpartanTokenProvider {
|
|
9
|
-
readonly getSpartanToken: () => Promise<string>;
|
|
10
|
-
constructor(getOauth2AccessToken: () => Promise<string>, tokenPersister?: TokenPersister);
|
|
11
|
-
}
|
package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { XboxAuthenticationClient, } from "../../../authentication/xbox-authentication-client";
|
|
2
|
-
import { HaloAuthenticationClient } from "../../../authentication/halo-authentication-client";
|
|
3
|
-
import { inMemoryTokenPersister } from "../../token-persisters/in-memory-token-persister";
|
|
4
|
-
/**
|
|
5
|
-
* A SpartanTokenProvider that fetches both the Xbox and Halo tokens in the same
|
|
6
|
-
* process. This is useful for applications that do not need to contend with
|
|
7
|
-
* CORS restrictions.
|
|
8
|
-
*/
|
|
9
|
-
export class AutoXstsSpartanTokenProvider {
|
|
10
|
-
getSpartanToken;
|
|
11
|
-
constructor(getOauth2AccessToken, tokenPersister) {
|
|
12
|
-
let actualTokenPersister;
|
|
13
|
-
if (tokenPersister) {
|
|
14
|
-
actualTokenPersister = tokenPersister;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
actualTokenPersister = inMemoryTokenPersister;
|
|
18
|
-
}
|
|
19
|
-
const xboxAuthClient = new XboxAuthenticationClient(tokenPersister);
|
|
20
|
-
const haloAuthClient = new HaloAuthenticationClient(async () => {
|
|
21
|
-
const xstsTicket = await xboxAuthClient.getXstsTicket(getOauth2AccessToken);
|
|
22
|
-
return xstsTicket.Token;
|
|
23
|
-
}, async () => await actualTokenPersister.load("halo.authToken"), async (token) => {
|
|
24
|
-
await actualTokenPersister.save("halo.authToken", token);
|
|
25
|
-
});
|
|
26
|
-
this.getSpartanToken = () => haloAuthClient.getSpartanToken();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=auto-xsts-spartan-token-provider.js.map
|
package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-xsts-spartan-token-provider.js","sourceRoot":"","sources":["../../../../src/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,GACzB,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAE9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAE1F;;;;GAIG;AACH,MAAM,OAAO,4BAA4B;IACvB,eAAe,CAAwB;IAEvD,YACE,oBAA2C,EAC3C,cAA+B;QAE/B,IAAI,oBAAoC,CAAC;QACzC,IAAI,cAAc,EAAE;YAClB,oBAAoB,GAAG,cAAc,CAAC;SACvC;aAAM;YACL,oBAAoB,GAAG,sBAAsB,CAAC;SAC/C;QACD,MAAM,cAAc,GAAG,IAAI,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,IAAI,wBAAwB,CACjD,KAAK,IAAI,EAAE;YACT,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,CACnD,oBAAoB,CACrB,CAAC;YACF,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,EACD,KAAK,IAAI,EAAE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC7D,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { ApiFormattedDate } from "./api-formatted-date";
|
|
2
|
-
export interface Asset {
|
|
3
|
-
Tags: string[];
|
|
4
|
-
AssetId: string;
|
|
5
|
-
VersionId: string;
|
|
6
|
-
PublicName: string;
|
|
7
|
-
Description: string;
|
|
8
|
-
Files: {
|
|
9
|
-
Prefix: string;
|
|
10
|
-
FileRelativePaths: string[];
|
|
11
|
-
PrefixEndpoint: {
|
|
12
|
-
AuthorityId: string;
|
|
13
|
-
Path: string;
|
|
14
|
-
QueryString: any;
|
|
15
|
-
RetryPolicyId: string;
|
|
16
|
-
TopicName: string;
|
|
17
|
-
AcknowledgementTypeId: number;
|
|
18
|
-
AuthenticationLifetimeExtensionSupported: boolean;
|
|
19
|
-
ClearanceAware: boolean;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
Contributors: string[];
|
|
23
|
-
AssetHome: number;
|
|
24
|
-
AssetStats: {
|
|
25
|
-
PlaysRecent: number;
|
|
26
|
-
PlaysAllTime: number;
|
|
27
|
-
Favorites: number;
|
|
28
|
-
Likes: number;
|
|
29
|
-
Bookmarks: number;
|
|
30
|
-
ParentAssetCount: number;
|
|
31
|
-
AverageRating: number;
|
|
32
|
-
NumberOfRatings: number;
|
|
33
|
-
};
|
|
34
|
-
InspectionResult: number;
|
|
35
|
-
CloneBehavior: number;
|
|
36
|
-
Order: number;
|
|
37
|
-
PublishedDate: ApiFormattedDate;
|
|
38
|
-
VersionNumber: number;
|
|
39
|
-
Admin: string;
|
|
40
|
-
}
|
|
41
|
-
export interface MapAsset extends Asset {
|
|
42
|
-
CustomData: {
|
|
43
|
-
NumOfObjectsOnMap: number;
|
|
44
|
-
TagLevelId: number;
|
|
45
|
-
IsBaked: boolean;
|
|
46
|
-
HasNodeGraph: boolean;
|
|
47
|
-
};
|
|
48
|
-
PrefabLinks: unknown[];
|
|
49
|
-
}
|
|
50
|
-
export interface UcgGameVariantAsset extends Asset {
|
|
51
|
-
CustomData: {
|
|
52
|
-
KeyValues: object;
|
|
53
|
-
HasNodeGraph: boolean;
|
|
54
|
-
};
|
|
55
|
-
EngineGameVariantLink?: Asset;
|
|
56
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-asset.js","sourceRoot":"","sources":["../../../src/models/halo-infinite/authoring-asset.ts"],"names":[],"mappings":""}
|