@bytescale/sdk 3.58.0 → 3.60.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/browser/cjs/main.js +730 -316
- package/dist/browser/esm/main.mjs +730 -316
- package/dist/node/cjs/main.js +123 -29
- package/dist/node/esm/main.mjs +123 -29
- package/dist/types/private/AuthSessionState.d.ts +7 -0
- package/dist/types/private/UploadManagerBase.d.ts +0 -1
- package/dist/types/private/dtos/AuthSwSetConfigDto.d.ts +1 -1
- package/dist/types/private/model/AuthManagerInterface.d.ts +1 -105
- package/dist/types/private/model/AuthSession.d.ts +12 -5
- package/dist/types/private/model/AuthSessionConfig.d.ts +3 -0
- package/dist/types/private/model/AuthSessionConfigAuto.d.ts +6 -0
- package/dist/types/private/model/AuthSessionConfigBase.d.ts +14 -0
- package/dist/types/private/model/AuthSessionConfigManual.d.ts +7 -0
- package/dist/types/private/model/BeginAuthSessionParams.d.ts +3 -0
- package/dist/types/private/model/BeginAuthSessionParamsOptions.d.ts +2 -0
- package/dist/types/private/model/BeginAuthSessionParamsV1.d.ts +11 -0
- package/dist/types/private/model/BeginAuthSessionParamsV2.d.ts +16 -0
- package/dist/types/private/model/NonEmptyArray.d.ts +1 -0
- package/dist/types/private/model/UrlRewriteRule.d.ts +6 -0
- package/dist/types/public/browser/AuthManagerBrowser.d.ts +28 -11
- package/dist/types/public/node/AuthManagerNode.d.ts +12 -2
- package/dist/types/public/shared/generated/runtime.d.ts +13 -6
- package/dist/worker/cjs/main.js +123 -29
- package/dist/worker/esm/main.mjs +123 -29
- package/package.json +1 -1
- package/tests/ApiClientAuth.test.ts +222 -0
- package/tests/AuthManagerBrowser.test.ts +360 -234
- package/tests/AuthServiceWorkerRewrite.test.ts +86 -5
- package/tests/UploadManagerAuth.test.ts +156 -0
package/dist/browser/cjs/main.js
CHANGED
|
@@ -250,6 +250,55 @@ var AuthSessionState = /*#__PURE__*/function () {
|
|
|
250
250
|
}
|
|
251
251
|
return window[AuthSessionState.stateKey];
|
|
252
252
|
}
|
|
253
|
+
/** Resolves request-time auth while remaining compatible with the single-token session used by SDK 3.54.0. */
|
|
254
|
+
}, {
|
|
255
|
+
key: "resolveAuthConfig",
|
|
256
|
+
value: function resolveAuthConfig(authConfigId, requireReadyDefault) {
|
|
257
|
+
if (authConfigId === false) {
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
var session = AuthSessionState.getSession();
|
|
261
|
+
if (session === undefined || !session.isActive) {
|
|
262
|
+
if (typeof authConfigId === "string") {
|
|
263
|
+
throw new Error("No active AuthManager configuration has ID '".concat(authConfigId, "'."));
|
|
264
|
+
}
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
if (Array.isArray(session.authConfigs)) {
|
|
268
|
+
var state = session.authConfigs.find(function (config) {
|
|
269
|
+
return config.config.authConfigId === authConfigId;
|
|
270
|
+
});
|
|
271
|
+
if (state === undefined) {
|
|
272
|
+
if (typeof authConfigId === "string") {
|
|
273
|
+
throw new Error("No active AuthManager configuration has ID '".concat(authConfigId, "'."));
|
|
274
|
+
}
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
if (state.accessToken === undefined || state.expiresAt === undefined || state.expiresAt <= Date.now() || state.jwt === undefined) {
|
|
278
|
+
var isV2Session = typeof session.params.authConfigs === "function";
|
|
279
|
+
if (typeof authConfigId === "string" || requireReadyDefault || isV2Session) {
|
|
280
|
+
throw new Error("AuthManager configuration '".concat(authConfigId !== null && authConfigId !== void 0 ? authConfigId : "default", "' is not ready."));
|
|
281
|
+
}
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
accessToken: state.accessToken,
|
|
286
|
+
accountId: state.config.accountId,
|
|
287
|
+
jwt: state.jwt
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
if (typeof authConfigId === "string") {
|
|
291
|
+
throw new Error("No active AuthManager configuration has ID '".concat(authConfigId, "'."));
|
|
292
|
+
}
|
|
293
|
+
if (session.accessToken === undefined || typeof session.params.accountId !== "string") {
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
accessToken: session.accessToken,
|
|
298
|
+
accountId: session.params.accountId,
|
|
299
|
+
jwt: undefined
|
|
300
|
+
};
|
|
301
|
+
}
|
|
253
302
|
}]);
|
|
254
303
|
}();
|
|
255
304
|
AuthSessionState.stateKey = "BytescaleSessionState";
|
|
@@ -393,12 +442,47 @@ var BytescaleApiClientConfigUtils = /*#__PURE__*/function () {
|
|
|
393
442
|
}, {
|
|
394
443
|
key: "getAccountId",
|
|
395
444
|
value: function getAccountId(config) {
|
|
445
|
+
return BytescaleApiClientConfigUtils.resolveAuthentication(config).accountId;
|
|
446
|
+
}
|
|
447
|
+
}, {
|
|
448
|
+
key: "resolveAuthentication",
|
|
449
|
+
value: function resolveAuthentication(config) {
|
|
450
|
+
var _a, _b;
|
|
451
|
+
var apiKey = (_a = config.apiKey) !== null && _a !== void 0 ? _a : undefined;
|
|
452
|
+
var authConfig = AuthSessionState.resolveAuthConfig(config.authConfigId, apiKey === undefined);
|
|
453
|
+
var apiKeyAccountId = apiKey === undefined ? undefined : BytescaleApiClientConfigUtils.getApiKeyAccountId(apiKey);
|
|
454
|
+
if (apiKeyAccountId !== undefined && authConfig !== undefined && apiKeyAccountId !== authConfig.accountId) {
|
|
455
|
+
throw new Error("The API key belongs to account '".concat(apiKeyAccountId, "', but AuthManager configuration '").concat((_b = config.authConfigId) !== null && _b !== void 0 ? _b : "default", "' belongs to account '").concat(authConfig.accountId, "'."));
|
|
456
|
+
}
|
|
457
|
+
if (apiKey !== undefined) {
|
|
458
|
+
return {
|
|
459
|
+
accountId: apiKeyAccountId,
|
|
460
|
+
headers: Object.assign({
|
|
461
|
+
Authorization: "Bearer ".concat(apiKey)
|
|
462
|
+
}, authConfig === undefined ? {} : {
|
|
463
|
+
"Authorization-Token": authConfig.accessToken
|
|
464
|
+
})
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
if ((authConfig === null || authConfig === void 0 ? void 0 : authConfig.jwt) !== undefined) {
|
|
468
|
+
return {
|
|
469
|
+
accountId: authConfig.accountId,
|
|
470
|
+
headers: {
|
|
471
|
+
Authorization: "Bearer ".concat(authConfig.jwt)
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
throw new Error("Please provide an API key via the 'apiKey' config parameter.");
|
|
476
|
+
}
|
|
477
|
+
}, {
|
|
478
|
+
key: "getApiKeyAccountId",
|
|
479
|
+
value: function getApiKeyAccountId(apiKey) {
|
|
396
480
|
var _a, _b;
|
|
397
481
|
var accountId;
|
|
398
|
-
if (BytescaleApiClientConfigUtils.specialApiKeys.includes(
|
|
482
|
+
if (BytescaleApiClientConfigUtils.specialApiKeys.includes(apiKey)) {
|
|
399
483
|
accountId = BytescaleApiClientConfigUtils.specialApiKeyAccountId;
|
|
400
484
|
} else {
|
|
401
|
-
accountId = (_b = (_a =
|
|
485
|
+
accountId = (_b = (_a = apiKey.split("_")[1]) === null || _a === void 0 ? void 0 : _a.substr(0, BytescaleApiClientConfigUtils.accountIdLength)) !== null && _b !== void 0 ? _b : "";
|
|
402
486
|
if (accountId.length !== BytescaleApiClientConfigUtils.accountIdLength) {
|
|
403
487
|
throw new Error("Invalid Bytescale API key.");
|
|
404
488
|
}
|
|
@@ -408,21 +492,24 @@ var BytescaleApiClientConfigUtils = /*#__PURE__*/function () {
|
|
|
408
492
|
}, {
|
|
409
493
|
key: "validate",
|
|
410
494
|
value: function validate(config) {
|
|
411
|
-
var _a;
|
|
412
495
|
// Defensive programming, for users not using TypeScript. Mainly because this is used by UploadWidget users.
|
|
413
496
|
if ((config !== null && config !== void 0 ? config : undefined) === undefined) {
|
|
414
497
|
throw new Error("Config parameter required.");
|
|
415
498
|
}
|
|
416
|
-
if (
|
|
417
|
-
throw new Error("
|
|
499
|
+
if (config.authConfigId !== undefined && config.authConfigId !== false && typeof config.authConfigId !== "string") {
|
|
500
|
+
throw new Error("The 'authConfigId' config parameter must be a string, false, or undefined.");
|
|
501
|
+
}
|
|
502
|
+
if (config.apiKey !== undefined && typeof config.apiKey !== "string") {
|
|
503
|
+
throw new Error("The 'apiKey' config parameter must be a string when provided.");
|
|
418
504
|
}
|
|
419
|
-
if (config.apiKey.trim() !== config.apiKey) {
|
|
505
|
+
if (config.apiKey !== undefined && config.apiKey.trim() !== config.apiKey) {
|
|
420
506
|
// We do not support API keys with whitespace (by trimming ourselves) because otherwise we'd need to support this
|
|
421
507
|
// everywhere in perpetuity (since removing the trimming would be a breaking change).
|
|
422
508
|
throw new Error("API key needs trimming (whitespace detected).");
|
|
423
509
|
}
|
|
424
|
-
|
|
425
|
-
|
|
510
|
+
if (config.apiKey !== undefined) {
|
|
511
|
+
BytescaleApiClientConfigUtils.getApiKeyAccountId(config.apiKey);
|
|
512
|
+
}
|
|
426
513
|
}
|
|
427
514
|
}]);
|
|
428
515
|
}();
|
|
@@ -449,12 +536,7 @@ var BaseAPI = /*#__PURE__*/function () {
|
|
|
449
536
|
try {
|
|
450
537
|
var _this = this;
|
|
451
538
|
var _a;
|
|
452
|
-
|
|
453
|
-
context.headers["Authorization"] = "Bearer ".concat(apiKey); // authorization-header authentication
|
|
454
|
-
var session = AuthSessionState.getSession();
|
|
455
|
-
if ((session === null || session === void 0 ? void 0 : session.accessToken) !== undefined) {
|
|
456
|
-
context.headers["Authorization-Token"] = session.accessToken;
|
|
457
|
-
}
|
|
539
|
+
Object.assign(context.headers, BytescaleApiClientConfigUtils.resolveAuthentication(_this.config).headers);
|
|
458
540
|
// Key: any possible value for 'baseUrlOverride'
|
|
459
541
|
// Value: user-overridden value for that base URL from the config.
|
|
460
542
|
var nonDefaultBasePaths = _defineProperty({}, BytescaleApiClientConfigUtils.defaultCdnUrl, BytescaleApiClientConfigUtils.getCdnUrl(_this.config));
|
|
@@ -494,9 +576,21 @@ var BaseAPI = /*#__PURE__*/function () {
|
|
|
494
576
|
url += "?" + querystring(context.query);
|
|
495
577
|
}
|
|
496
578
|
var configHeaders = _this2.config.headers;
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
579
|
+
return runtime_await(runtime_await(configHeaders === undefined ? {} : typeof configHeaders === "function" ? configHeaders() : configHeaders, function (resolvedConfigHeaders) {
|
|
580
|
+
for (var _i = 0, _Object$keys = Object.keys(resolvedConfigHeaders); _i < _Object$keys.length; _i++) {
|
|
581
|
+
var key = _Object$keys[_i];
|
|
582
|
+
if (key.toLowerCase() === "authorization" || key.toLowerCase() === "authorization-token") {
|
|
583
|
+
for (var _i2 = 0, _Object$keys2 = Object.keys(context.headers); _i2 < _Object$keys2.length; _i2++) {
|
|
584
|
+
var generatedKey = _Object$keys2[_i2];
|
|
585
|
+
if (generatedKey.toLowerCase() === key.toLowerCase()) {
|
|
586
|
+
// Custom auth headers have documented precedence; remove the generated spelling to make that deterministic.
|
|
587
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
588
|
+
delete context.headers[generatedKey];
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
var headers = Object.assign(Object.assign({}, context.headers), resolvedConfigHeaders);
|
|
500
594
|
Object.keys(headers).forEach(function (key) {
|
|
501
595
|
return headers[key] === undefined ? delete headers[key] : {};
|
|
502
596
|
});
|
|
@@ -508,12 +602,12 @@ var BaseAPI = /*#__PURE__*/function () {
|
|
|
508
602
|
headers: headers,
|
|
509
603
|
body: context.body
|
|
510
604
|
};
|
|
511
|
-
var _Object$
|
|
605
|
+
var _Object$assign = Object.assign({}, initParams);
|
|
512
606
|
return runtime_await(initOverrideFn({
|
|
513
607
|
init: initParams,
|
|
514
608
|
context: context
|
|
515
609
|
}), function (_initOverrideFn) {
|
|
516
|
-
var overriddenInit = Object.assign(_Object$
|
|
610
|
+
var overriddenInit = Object.assign(_Object$assign, _initOverrideFn);
|
|
517
611
|
var init = Object.assign(Object.assign({}, overriddenInit), {
|
|
518
612
|
body: JSON.stringify(overriddenInit.body)
|
|
519
613
|
});
|
|
@@ -2138,7 +2232,6 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2138
2232
|
this.defaultMaxConcurrentUploadParts = 4;
|
|
2139
2233
|
this.intervalMs = 500;
|
|
2140
2234
|
this.uploadApi = new UploadApi(config);
|
|
2141
|
-
this.accountId = BytescaleApiClientConfigUtils.getAccountId(config);
|
|
2142
2235
|
}
|
|
2143
2236
|
return UploadManagerBase_createClass(UploadManagerBase, [{
|
|
2144
2237
|
key: "upload",
|
|
@@ -2146,6 +2239,7 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2146
2239
|
try {
|
|
2147
2240
|
var _this = this;
|
|
2148
2241
|
_this.assertNotCancelled(request);
|
|
2242
|
+
var accountId = BytescaleApiClientConfigUtils.getAccountId(_this.config);
|
|
2149
2243
|
var source = _this.processUploadSource(request.data);
|
|
2150
2244
|
var preUploadInfo = _this.getPreUploadInfo(request, source);
|
|
2151
2245
|
var bytesTotal = preUploadInfo.size;
|
|
@@ -2155,7 +2249,7 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2155
2249
|
if (request.onProgress !== undefined) {
|
|
2156
2250
|
request.onProgress(_this.makeProgressEvent(0, bytesTotal));
|
|
2157
2251
|
}
|
|
2158
|
-
return UploadManagerBase_await(_this.beginUpload(request, preUploadInfo), function (uploadInfo) {
|
|
2252
|
+
return UploadManagerBase_await(_this.beginUpload(request, preUploadInfo, accountId), function (uploadInfo) {
|
|
2159
2253
|
var partCount = uploadInfo.uploadParts.count;
|
|
2160
2254
|
var parts = UploadManagerBase_toConsumableArray(Array(partCount).keys());
|
|
2161
2255
|
var _this$makeCancellatio = _this.makeCancellationMethods(),
|
|
@@ -2165,7 +2259,7 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2165
2259
|
var uploadedParts;
|
|
2166
2260
|
return UploadManagerBase_continue(UploadManagerBase_finallyRethrows(function () {
|
|
2167
2261
|
return UploadManagerBase_await(_this.mapAsync(parts, preUploadInfo.maxConcurrentUploadParts, _async(function (part) {
|
|
2168
|
-
return _this.uploadPart(request, source, part, uploadInfo, makeOnProgressForPart(), addCancellationHandler);
|
|
2262
|
+
return _this.uploadPart(request, source, part, uploadInfo, makeOnProgressForPart(), addCancellationHandler, accountId);
|
|
2169
2263
|
})), function (_this$mapAsync) {
|
|
2170
2264
|
uploadedParts = _this$mapAsync;
|
|
2171
2265
|
return UploadManagerBase_awaitIgnored(_this.postUpload(init));
|
|
@@ -2277,14 +2371,14 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2277
2371
|
}
|
|
2278
2372
|
}, {
|
|
2279
2373
|
key: "beginUpload",
|
|
2280
|
-
value: function beginUpload(request, _ref2) {
|
|
2374
|
+
value: function beginUpload(request, _ref2, accountId) {
|
|
2281
2375
|
var size = _ref2.size,
|
|
2282
2376
|
mime = _ref2.mime,
|
|
2283
2377
|
originalFileName = _ref2.originalFileName;
|
|
2284
2378
|
try {
|
|
2285
2379
|
var _this4 = this;
|
|
2286
2380
|
return UploadManagerBase_await(_this4.uploadApi.beginMultipartUpload({
|
|
2287
|
-
accountId:
|
|
2381
|
+
accountId: accountId,
|
|
2288
2382
|
beginMultipartUploadRequest: {
|
|
2289
2383
|
metadata: request.metadata,
|
|
2290
2384
|
mime: mime,
|
|
@@ -2301,16 +2395,16 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2301
2395
|
}
|
|
2302
2396
|
}, {
|
|
2303
2397
|
key: "uploadPart",
|
|
2304
|
-
value: function uploadPart(request, source, partIndex, uploadInfo, onProgress, addCancellationHandler) {
|
|
2398
|
+
value: function uploadPart(request, source, partIndex, uploadInfo, onProgress, addCancellationHandler, accountId) {
|
|
2305
2399
|
try {
|
|
2306
2400
|
var _this5 = this;
|
|
2307
2401
|
_this5.assertNotCancelled(request);
|
|
2308
|
-
return UploadManagerBase_await(_this5.getUploadPart(partIndex, uploadInfo), function (part) {
|
|
2402
|
+
return UploadManagerBase_await(_this5.getUploadPart(partIndex, uploadInfo, accountId), function (part) {
|
|
2309
2403
|
_this5.assertNotCancelled(request);
|
|
2310
2404
|
return UploadManagerBase_await(_this5.putUploadPart(part, source, onProgress, addCancellationHandler), function (etag) {
|
|
2311
2405
|
_this5.assertNotCancelled(request);
|
|
2312
2406
|
return UploadManagerBase_await(_this5.uploadApi.completeUploadPart({
|
|
2313
|
-
accountId:
|
|
2407
|
+
accountId: accountId,
|
|
2314
2408
|
uploadId: uploadInfo.uploadId,
|
|
2315
2409
|
uploadPartIndex: partIndex,
|
|
2316
2410
|
completeUploadPartRequest: {
|
|
@@ -2351,7 +2445,7 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2351
2445
|
}
|
|
2352
2446
|
}, {
|
|
2353
2447
|
key: "getUploadPart",
|
|
2354
|
-
value: function getUploadPart(partIndex, uploadInfo) {
|
|
2448
|
+
value: function getUploadPart(partIndex, uploadInfo, accountId) {
|
|
2355
2449
|
try {
|
|
2356
2450
|
var _this7 = this;
|
|
2357
2451
|
if (partIndex === 0) {
|
|
@@ -2359,7 +2453,7 @@ var UploadManagerBase = /*#__PURE__*/function () {
|
|
|
2359
2453
|
}
|
|
2360
2454
|
return UploadManagerBase_await(_this7.uploadApi.getUploadPart({
|
|
2361
2455
|
uploadId: uploadInfo.uploadId,
|
|
2362
|
-
accountId:
|
|
2456
|
+
accountId: accountId,
|
|
2363
2457
|
uploadPartIndex: partIndex
|
|
2364
2458
|
}));
|
|
2365
2459
|
} catch (e) {
|
|
@@ -3196,12 +3290,178 @@ function AuthManagerBrowser_awaitIgnored(value, direct) {
|
|
|
3196
3290
|
return value && value.then ? value.then(AuthManagerBrowser_empty) : Promise.resolve();
|
|
3197
3291
|
}
|
|
3198
3292
|
}
|
|
3199
|
-
|
|
3200
|
-
|
|
3293
|
+
var AuthManagerBrowser_iteratorSymbol = /*#__PURE__*/typeof Symbol !== "undefined" ? Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator")) : "@@iterator";
|
|
3294
|
+
function AuthManagerBrowser_settle(pact, state, value) {
|
|
3295
|
+
if (!pact.s) {
|
|
3296
|
+
if (value instanceof AuthManagerBrowser_Pact) {
|
|
3297
|
+
if (value.s) {
|
|
3298
|
+
if (state & 1) {
|
|
3299
|
+
state = value.s;
|
|
3300
|
+
}
|
|
3301
|
+
value = value.v;
|
|
3302
|
+
} else {
|
|
3303
|
+
value.o = AuthManagerBrowser_settle.bind(null, pact, state);
|
|
3304
|
+
return;
|
|
3305
|
+
}
|
|
3306
|
+
}
|
|
3307
|
+
if (value && value.then) {
|
|
3308
|
+
value.then(AuthManagerBrowser_settle.bind(null, pact, state), AuthManagerBrowser_settle.bind(null, pact, 2));
|
|
3309
|
+
return;
|
|
3310
|
+
}
|
|
3311
|
+
pact.s = state;
|
|
3312
|
+
pact.v = value;
|
|
3313
|
+
var observer = pact.o;
|
|
3314
|
+
if (observer) {
|
|
3315
|
+
observer(pact);
|
|
3316
|
+
}
|
|
3317
|
+
}
|
|
3318
|
+
}
|
|
3319
|
+
var AuthManagerBrowser_Pact = /*#__PURE__*/function () {
|
|
3320
|
+
function _Pact() {}
|
|
3321
|
+
_Pact.prototype.then = function (onFulfilled, onRejected) {
|
|
3322
|
+
var result = new _Pact();
|
|
3323
|
+
var state = this.s;
|
|
3324
|
+
if (state) {
|
|
3325
|
+
var callback = state & 1 ? onFulfilled : onRejected;
|
|
3326
|
+
if (callback) {
|
|
3327
|
+
try {
|
|
3328
|
+
AuthManagerBrowser_settle(result, 1, callback(this.v));
|
|
3329
|
+
} catch (e) {
|
|
3330
|
+
AuthManagerBrowser_settle(result, 2, e);
|
|
3331
|
+
}
|
|
3332
|
+
return result;
|
|
3333
|
+
} else {
|
|
3334
|
+
return this;
|
|
3335
|
+
}
|
|
3336
|
+
}
|
|
3337
|
+
this.o = function (_this) {
|
|
3338
|
+
try {
|
|
3339
|
+
var value = _this.v;
|
|
3340
|
+
if (_this.s & 1) {
|
|
3341
|
+
AuthManagerBrowser_settle(result, 1, onFulfilled ? onFulfilled(value) : value);
|
|
3342
|
+
} else if (onRejected) {
|
|
3343
|
+
AuthManagerBrowser_settle(result, 1, onRejected(value));
|
|
3344
|
+
} else {
|
|
3345
|
+
AuthManagerBrowser_settle(result, 2, value);
|
|
3346
|
+
}
|
|
3347
|
+
} catch (e) {
|
|
3348
|
+
AuthManagerBrowser_settle(result, 2, e);
|
|
3349
|
+
}
|
|
3350
|
+
};
|
|
3351
|
+
return result;
|
|
3352
|
+
};
|
|
3353
|
+
return _Pact;
|
|
3354
|
+
}();
|
|
3355
|
+
function AuthManagerBrowser_isSettledPact(thenable) {
|
|
3356
|
+
return thenable instanceof AuthManagerBrowser_Pact && thenable.s & 1;
|
|
3357
|
+
}
|
|
3358
|
+
function AuthManagerBrowser_forTo(array, body, check) {
|
|
3359
|
+
var i = -1,
|
|
3360
|
+
pact,
|
|
3361
|
+
reject;
|
|
3362
|
+
function _cycle(result) {
|
|
3363
|
+
try {
|
|
3364
|
+
while (++i < array.length && (!check || !check())) {
|
|
3365
|
+
result = body(i);
|
|
3366
|
+
if (result && result.then) {
|
|
3367
|
+
if (AuthManagerBrowser_isSettledPact(result)) {
|
|
3368
|
+
result = result.v;
|
|
3369
|
+
} else {
|
|
3370
|
+
result.then(_cycle, reject || (reject = AuthManagerBrowser_settle.bind(null, pact = new AuthManagerBrowser_Pact(), 2)));
|
|
3371
|
+
return;
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3374
|
+
}
|
|
3375
|
+
if (pact) {
|
|
3376
|
+
AuthManagerBrowser_settle(pact, 1, result);
|
|
3377
|
+
} else {
|
|
3378
|
+
pact = result;
|
|
3379
|
+
}
|
|
3380
|
+
} catch (e) {
|
|
3381
|
+
AuthManagerBrowser_settle(pact || (pact = new AuthManagerBrowser_Pact()), 2, e);
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3384
|
+
_cycle();
|
|
3385
|
+
return pact;
|
|
3386
|
+
}
|
|
3387
|
+
function AuthManagerBrowser_forOf(target, body, check) {
|
|
3388
|
+
if (typeof target[AuthManagerBrowser_iteratorSymbol] === "function") {
|
|
3389
|
+
var _cycle2 = function _cycle(result) {
|
|
3390
|
+
try {
|
|
3391
|
+
while (!(step = iterator.next()).done && (!check || !check())) {
|
|
3392
|
+
result = body(step.value);
|
|
3393
|
+
if (result && result.then) {
|
|
3394
|
+
if (AuthManagerBrowser_isSettledPact(result)) {
|
|
3395
|
+
result = result.v;
|
|
3396
|
+
} else {
|
|
3397
|
+
result.then(_cycle2, reject || (reject = AuthManagerBrowser_settle.bind(null, pact = new AuthManagerBrowser_Pact(), 2)));
|
|
3398
|
+
return;
|
|
3399
|
+
}
|
|
3400
|
+
}
|
|
3401
|
+
}
|
|
3402
|
+
if (pact) {
|
|
3403
|
+
AuthManagerBrowser_settle(pact, 1, result);
|
|
3404
|
+
} else {
|
|
3405
|
+
pact = result;
|
|
3406
|
+
}
|
|
3407
|
+
} catch (e) {
|
|
3408
|
+
AuthManagerBrowser_settle(pact || (pact = new AuthManagerBrowser_Pact()), 2, e);
|
|
3409
|
+
}
|
|
3410
|
+
};
|
|
3411
|
+
var iterator = target[AuthManagerBrowser_iteratorSymbol](),
|
|
3412
|
+
step,
|
|
3413
|
+
pact,
|
|
3414
|
+
reject;
|
|
3415
|
+
_cycle2();
|
|
3416
|
+
if (iterator.return) {
|
|
3417
|
+
var _fixup = function _fixup(value) {
|
|
3418
|
+
try {
|
|
3419
|
+
if (!step.done) {
|
|
3420
|
+
iterator.return();
|
|
3421
|
+
}
|
|
3422
|
+
} catch (e) {}
|
|
3423
|
+
return value;
|
|
3424
|
+
};
|
|
3425
|
+
if (pact && pact.then) {
|
|
3426
|
+
return pact.then(_fixup, function (e) {
|
|
3427
|
+
throw _fixup(e);
|
|
3428
|
+
});
|
|
3429
|
+
}
|
|
3430
|
+
_fixup();
|
|
3431
|
+
}
|
|
3432
|
+
return pact;
|
|
3433
|
+
}
|
|
3434
|
+
// No support for Symbol.iterator
|
|
3435
|
+
if (!("length" in target)) {
|
|
3436
|
+
throw new TypeError("Object is not iterable");
|
|
3437
|
+
}
|
|
3438
|
+
// Handle live collections properly
|
|
3439
|
+
var values = [];
|
|
3440
|
+
for (var i = 0; i < target.length; i++) {
|
|
3441
|
+
values.push(target[i]);
|
|
3442
|
+
}
|
|
3443
|
+
return AuthManagerBrowser_forTo(values, function (i) {
|
|
3444
|
+
return body(values[i]);
|
|
3445
|
+
}, check);
|
|
3446
|
+
}
|
|
3447
|
+
function AuthManagerBrowser_continueIgnored(value) {
|
|
3448
|
+
if (value && value.then) {
|
|
3449
|
+
return value.then(AuthManagerBrowser_empty);
|
|
3450
|
+
}
|
|
3451
|
+
}
|
|
3452
|
+
function AuthManagerBrowser_catch(body, recover) {
|
|
3453
|
+
try {
|
|
3454
|
+
var result = body();
|
|
3455
|
+
} catch (e) {
|
|
3456
|
+
return recover(e);
|
|
3457
|
+
}
|
|
3201
3458
|
if (result && result.then) {
|
|
3202
|
-
return result.then(
|
|
3459
|
+
return result.then(void 0, recover);
|
|
3203
3460
|
}
|
|
3204
|
-
return
|
|
3461
|
+
return result;
|
|
3462
|
+
}
|
|
3463
|
+
function AuthManagerBrowser_continue(value, then) {
|
|
3464
|
+
return value && value.then ? value.then(then) : then(value);
|
|
3205
3465
|
}
|
|
3206
3466
|
function AuthManagerBrowser_await(value, then, direct) {
|
|
3207
3467
|
if (direct) {
|
|
@@ -3224,22 +3484,12 @@ function AuthManagerBrowser_async(f) {
|
|
|
3224
3484
|
}
|
|
3225
3485
|
};
|
|
3226
3486
|
}
|
|
3227
|
-
function
|
|
3487
|
+
function AuthManagerBrowser_invoke(body, then) {
|
|
3228
3488
|
var result = body();
|
|
3229
3489
|
if (result && result.then) {
|
|
3230
|
-
return result.then(
|
|
3231
|
-
}
|
|
3232
|
-
}
|
|
3233
|
-
function AuthManagerBrowser_catch(body, recover) {
|
|
3234
|
-
try {
|
|
3235
|
-
var result = body();
|
|
3236
|
-
} catch (e) {
|
|
3237
|
-
return recover(e);
|
|
3238
|
-
}
|
|
3239
|
-
if (result && result.then) {
|
|
3240
|
-
return result.then(void 0, recover);
|
|
3490
|
+
return result.then(then);
|
|
3241
3491
|
}
|
|
3242
|
-
return result;
|
|
3492
|
+
return then(result);
|
|
3243
3493
|
}
|
|
3244
3494
|
function AuthManagerBrowser_rethrow(thrown, value) {
|
|
3245
3495
|
if (thrown) throw value;
|
|
@@ -3256,44 +3506,43 @@ function AuthManagerBrowser_finallyRethrows(body, finalizer) {
|
|
|
3256
3506
|
}
|
|
3257
3507
|
return finalizer(false, result);
|
|
3258
3508
|
}
|
|
3259
|
-
function AuthManagerBrowser_continueIgnored(value) {
|
|
3260
|
-
if (value && value.then) {
|
|
3261
|
-
return value.then(AuthManagerBrowser_empty);
|
|
3262
|
-
}
|
|
3263
|
-
}
|
|
3264
|
-
function AuthManagerBrowser_call(body, then, direct) {
|
|
3265
|
-
if (direct) {
|
|
3266
|
-
return then ? then(body()) : body();
|
|
3267
|
-
}
|
|
3268
|
-
try {
|
|
3269
|
-
var result = Promise.resolve(body());
|
|
3270
|
-
return then ? result.then(then) : result;
|
|
3271
|
-
} catch (e) {
|
|
3272
|
-
return Promise.reject(e);
|
|
3273
|
-
}
|
|
3274
|
-
}
|
|
3275
|
-
function AuthManagerBrowser_continue(value, then) {
|
|
3276
|
-
return value && value.then ? value.then(then) : then(value);
|
|
3277
|
-
}
|
|
3278
3509
|
function AuthManagerBrowser_defineProperty(e, r, t) { return (r = AuthManagerBrowser_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
3279
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = AuthManagerBrowser_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
3280
3510
|
function AuthManagerBrowser_toConsumableArray(r) { return AuthManagerBrowser_arrayWithoutHoles(r) || AuthManagerBrowser_iterableToArray(r) || AuthManagerBrowser_unsupportedIterableToArray(r) || AuthManagerBrowser_nonIterableSpread(); }
|
|
3281
3511
|
function AuthManagerBrowser_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3282
|
-
function AuthManagerBrowser_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return AuthManagerBrowser_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? AuthManagerBrowser_arrayLikeToArray(r, a) : void 0; } }
|
|
3283
3512
|
function AuthManagerBrowser_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
3284
3513
|
function AuthManagerBrowser_arrayWithoutHoles(r) { if (Array.isArray(r)) return AuthManagerBrowser_arrayLikeToArray(r); }
|
|
3514
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = AuthManagerBrowser_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
3515
|
+
function AuthManagerBrowser_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return AuthManagerBrowser_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? AuthManagerBrowser_arrayLikeToArray(r, a) : void 0; } }
|
|
3285
3516
|
function AuthManagerBrowser_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
3286
3517
|
function AuthManagerBrowser_typeof(o) { "@babel/helpers - typeof"; return AuthManagerBrowser_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, AuthManagerBrowser_typeof(o); }
|
|
3287
|
-
function AuthManagerBrowser_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3288
3518
|
function AuthManagerBrowser_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, AuthManagerBrowser_toPropertyKey(o.key), o); } }
|
|
3289
3519
|
function AuthManagerBrowser_createClass(e, r, t) { return r && AuthManagerBrowser_defineProperties(e.prototype, r), t && AuthManagerBrowser_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
3290
3520
|
function AuthManagerBrowser_toPropertyKey(t) { var i = AuthManagerBrowser_toPrimitive(t, "string"); return "symbol" == AuthManagerBrowser_typeof(i) ? i : i + ""; }
|
|
3291
3521
|
function AuthManagerBrowser_toPrimitive(t, r) { if ("object" != AuthManagerBrowser_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != AuthManagerBrowser_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
3522
|
+
function AuthManagerBrowser_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3523
|
+
function AuthManagerBrowser_callSuper(t, o, e) { return o = AuthManagerBrowser_getPrototypeOf(o), AuthManagerBrowser_possibleConstructorReturn(t, AuthManagerBrowser_isNativeReflectConstruct() ? Reflect.construct(o, e || [], AuthManagerBrowser_getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
3524
|
+
function AuthManagerBrowser_possibleConstructorReturn(t, e) { if (e && ("object" == AuthManagerBrowser_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return AuthManagerBrowser_assertThisInitialized(t); }
|
|
3525
|
+
function AuthManagerBrowser_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
3526
|
+
function AuthManagerBrowser_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && AuthManagerBrowser_setPrototypeOf(t, e); }
|
|
3527
|
+
function AuthManagerBrowser_wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return AuthManagerBrowser_wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !AuthManagerBrowser_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return AuthManagerBrowser_construct(t, arguments, AuthManagerBrowser_getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), AuthManagerBrowser_setPrototypeOf(Wrapper, t); }, AuthManagerBrowser_wrapNativeSuper(t); }
|
|
3528
|
+
function AuthManagerBrowser_construct(t, e, r) { if (AuthManagerBrowser_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && AuthManagerBrowser_setPrototypeOf(p, r.prototype), p; }
|
|
3529
|
+
function AuthManagerBrowser_isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (AuthManagerBrowser_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
3530
|
+
function AuthManagerBrowser_isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
|
|
3531
|
+
function AuthManagerBrowser_setPrototypeOf(t, e) { return AuthManagerBrowser_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, AuthManagerBrowser_setPrototypeOf(t, e); }
|
|
3532
|
+
function AuthManagerBrowser_getPrototypeOf(t) { return AuthManagerBrowser_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, AuthManagerBrowser_getPrototypeOf(t); }
|
|
3292
3533
|
|
|
3293
3534
|
|
|
3294
3535
|
|
|
3295
3536
|
|
|
3296
3537
|
|
|
3538
|
+
var InvalidAuthTokenError = /*#__PURE__*/function (_Error) {
|
|
3539
|
+
function InvalidAuthTokenError() {
|
|
3540
|
+
AuthManagerBrowser_classCallCheck(this, InvalidAuthTokenError);
|
|
3541
|
+
return AuthManagerBrowser_callSuper(this, InvalidAuthTokenError, arguments);
|
|
3542
|
+
}
|
|
3543
|
+
AuthManagerBrowser_inherits(InvalidAuthTokenError, _Error);
|
|
3544
|
+
return AuthManagerBrowser_createClass(InvalidAuthTokenError);
|
|
3545
|
+
}(/*#__PURE__*/AuthManagerBrowser_wrapNativeSuper(Error));
|
|
3297
3546
|
var AuthManagerImpl = /*#__PURE__*/function () {
|
|
3298
3547
|
function AuthManagerImpl(serviceWorkerUtils) {
|
|
3299
3548
|
AuthManagerBrowser_classCallCheck(this, AuthManagerImpl);
|
|
@@ -3317,53 +3566,71 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3317
3566
|
}, {
|
|
3318
3567
|
key: "isAuthSessionReady",
|
|
3319
3568
|
value: function isAuthSessionReady() {
|
|
3320
|
-
var
|
|
3569
|
+
var _this = this;
|
|
3321
3570
|
var session = AuthSessionState.getSession();
|
|
3322
|
-
|
|
3571
|
+
if (session !== undefined && Array.isArray(session.authConfigs)) {
|
|
3572
|
+
return session.isReady === true && session.authConfigs.every(function (state) {
|
|
3573
|
+
return _this.isConfigUsable(state);
|
|
3574
|
+
});
|
|
3575
|
+
}
|
|
3576
|
+
return (session === null || session === void 0 ? void 0 : session.accessToken) !== undefined;
|
|
3323
3577
|
}
|
|
3324
3578
|
}, {
|
|
3325
3579
|
key: "beginAuthSession",
|
|
3326
3580
|
value: function beginAuthSession(params) {
|
|
3327
3581
|
try {
|
|
3328
|
-
var
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3582
|
+
var _this2 = this;
|
|
3583
|
+
var _a;
|
|
3584
|
+
return AuthManagerBrowser_await(_this2.authSessionMutex.safe(AuthManagerBrowser_async(function () {
|
|
3585
|
+
var _a, _b;
|
|
3586
|
+
if (_this2.isAuthSessionActive()) {
|
|
3332
3587
|
throw new Error("Auth session already active. Please call 'await endAuthSession()' and then call 'await beginAuthSession(...)' to start a new auth session.");
|
|
3333
3588
|
}
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
if (params.serviceWorkerScript === undefined) {
|
|
3337
|
-
throw new Error("The 'serviceWorkerScript' field is required when 'serviceWorkerConfig' is provided.");
|
|
3338
|
-
}
|
|
3339
|
-
if (!canUseServiceWorkers) {
|
|
3340
|
-
throw new Error("The 'serviceWorkerConfig' field requires service workers, but this browser does not support them.");
|
|
3341
|
-
}
|
|
3589
|
+
if (Object.prototype.hasOwnProperty.call(params, "authConfigs") && typeof params.authConfigs !== "function") {
|
|
3590
|
+
throw new Error("The 'authConfigs' field must be a callback returning a non-empty array.");
|
|
3342
3591
|
}
|
|
3343
|
-
var
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3592
|
+
var isV2 = _this2.isV2Params(params);
|
|
3593
|
+
return AuthManagerBrowser_await(isV2 ? _this2.getV2Configs(params) : [_this2.normalizeV1Config(params)], function (configs) {
|
|
3594
|
+
var canUseServiceWorkers = _this2.serviceWorkerUtils.canUseServiceWorkers();
|
|
3595
|
+
var requiresServiceWorker = configs.some(function (config) {
|
|
3596
|
+
return config !== null && AuthManagerBrowser_typeof(config) === "object" && _this2.isServiceWorkerEnabled(config);
|
|
3597
|
+
}) || isV2 && ((_b = (_a = params.urlRewriteRules) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
|
|
3598
|
+
_this2.validateSessionConfig(params, configs, canUseServiceWorkers, requiresServiceWorker);
|
|
3599
|
+
var newSession = {
|
|
3600
|
+
accessToken: undefined,
|
|
3601
|
+
accessTokenRefreshHandle: undefined,
|
|
3602
|
+
authConfigs: configs.map(function (config) {
|
|
3603
|
+
return {
|
|
3604
|
+
accessToken: undefined,
|
|
3605
|
+
config: config,
|
|
3606
|
+
expiresAt: undefined,
|
|
3607
|
+
jwt: undefined,
|
|
3608
|
+
refreshHandle: undefined
|
|
3609
|
+
};
|
|
3610
|
+
}),
|
|
3611
|
+
authServiceWorker: requiresServiceWorker && params.serviceWorkerScript !== undefined && canUseServiceWorkers ? {
|
|
3612
|
+
serviceWorkerScript: params.serviceWorkerScript,
|
|
3613
|
+
type: "Uninitialized"
|
|
3614
|
+
} : undefined,
|
|
3615
|
+
isActive: true,
|
|
3616
|
+
isReady: false,
|
|
3617
|
+
params: params,
|
|
3618
|
+
serviceWorkerConfigured: false
|
|
3619
|
+
};
|
|
3620
|
+
AuthSessionState.setSession(newSession);
|
|
3621
|
+
return newSession;
|
|
3622
|
+
}, !isV2);
|
|
3359
3623
|
})), function (session) {
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3624
|
+
return AuthManagerBrowser_catch(function () {
|
|
3625
|
+
return AuthManagerBrowser_continueIgnored(AuthManagerBrowser_forOf((_a = session.authConfigs) !== null && _a !== void 0 ? _a : [], function (config) {
|
|
3626
|
+
return AuthManagerBrowser_awaitIgnored(_this2.refreshAuthConfig(session, config, _this2.isV2Params(session.params)));
|
|
3627
|
+
}));
|
|
3628
|
+
}, function (e) {
|
|
3629
|
+
return AuthManagerBrowser_continue(AuthManagerBrowser_catch(function () {
|
|
3630
|
+
return AuthManagerBrowser_awaitIgnored(_this2.endAuthSession());
|
|
3631
|
+
}, AuthManagerBrowser_empty), function () {
|
|
3632
|
+
throw e;
|
|
3633
|
+
});
|
|
3367
3634
|
});
|
|
3368
3635
|
});
|
|
3369
3636
|
} catch (e) {
|
|
@@ -3374,31 +3641,68 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3374
3641
|
key: "endAuthSession",
|
|
3375
3642
|
value: function endAuthSession() {
|
|
3376
3643
|
try {
|
|
3377
|
-
var
|
|
3378
|
-
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(
|
|
3644
|
+
var _this3 = this;
|
|
3645
|
+
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(_this3.authSessionMutex.safe(AuthManagerBrowser_async(function () {
|
|
3646
|
+
var _a, _b, _c;
|
|
3379
3647
|
var session = AuthSessionState.getSession();
|
|
3380
3648
|
if (session === undefined) {
|
|
3381
3649
|
return;
|
|
3382
3650
|
}
|
|
3383
3651
|
AuthSessionState.setSession(undefined);
|
|
3384
3652
|
session.isActive = false;
|
|
3385
|
-
if (session.
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3653
|
+
if (session.authConfigs === undefined) {
|
|
3654
|
+
if (session.accessTokenRefreshHandle !== undefined) {
|
|
3655
|
+
_this3.scheduler.unschedule(session.accessTokenRefreshHandle);
|
|
3656
|
+
}
|
|
3657
|
+
} else {
|
|
3658
|
+
var _iterator = _createForOfIteratorHelper(session.authConfigs),
|
|
3659
|
+
_step;
|
|
3660
|
+
try {
|
|
3661
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
3662
|
+
var state = _step.value;
|
|
3663
|
+
if (state.refreshHandle !== undefined) {
|
|
3664
|
+
_this3.scheduler.unschedule(state.refreshHandle);
|
|
3665
|
+
}
|
|
3666
|
+
}
|
|
3667
|
+
} catch (err) {
|
|
3668
|
+
_iterator.e(err);
|
|
3669
|
+
} finally {
|
|
3670
|
+
_iterator.f();
|
|
3671
|
+
}
|
|
3390
3672
|
}
|
|
3391
|
-
|
|
3392
|
-
|
|
3673
|
+
var cleanupError;
|
|
3674
|
+
var cookieConfigs = _this3.isV2Params(session.params) ? (_b = (_a = session.authConfigs) === null || _a === void 0 ? void 0 : _a.filter(function (state) {
|
|
3675
|
+
return state.config.enableCookieAuth === true;
|
|
3676
|
+
})) !== null && _b !== void 0 ? _b : [] : (_c = session.authConfigs) !== null && _c !== void 0 ? _c : [];
|
|
3677
|
+
// A 3.54.0 session will not contain authConfigs, but a newer bundle must still be able to end it.
|
|
3393
3678
|
return AuthManagerBrowser_invoke(function () {
|
|
3394
|
-
if (typeof session.params.accountId === "string") {
|
|
3395
|
-
return
|
|
3679
|
+
if (session.authConfigs === undefined && typeof session.params.accountId === "string") {
|
|
3680
|
+
return AuthManagerBrowser_continueIgnored(AuthManagerBrowser_catch(function () {
|
|
3681
|
+
return AuthManagerBrowser_awaitIgnored(_this3.deleteAccessToken(session.params.options, _this3.getCdnUrl(session.params), session.params.accountId));
|
|
3682
|
+
}, function (e) {
|
|
3683
|
+
cleanupError = e;
|
|
3684
|
+
}));
|
|
3685
|
+
} else {
|
|
3686
|
+
return AuthManagerBrowser_continueIgnored(AuthManagerBrowser_forOf(cookieConfigs, function (state) {
|
|
3687
|
+
return AuthManagerBrowser_continueIgnored(AuthManagerBrowser_catch(function () {
|
|
3688
|
+
return AuthManagerBrowser_awaitIgnored(_this3.deleteAccessToken(session.params.options, _this3.getConfigCdnUrl(session.params, state.config), state.config.accountId));
|
|
3689
|
+
}, function (e) {
|
|
3690
|
+
cleanupError !== null && cleanupError !== void 0 ? cleanupError : cleanupError = e;
|
|
3691
|
+
}));
|
|
3692
|
+
}));
|
|
3396
3693
|
}
|
|
3397
3694
|
}, function () {
|
|
3398
|
-
return
|
|
3695
|
+
return AuthManagerBrowser_invoke(function () {
|
|
3399
3696
|
if (session.authServiceWorker !== undefined) {
|
|
3400
|
-
|
|
3401
|
-
|
|
3697
|
+
return AuthManagerBrowser_continueIgnored(AuthManagerBrowser_catch(function () {
|
|
3698
|
+
return AuthManagerBrowser_awaitIgnored(_this3.sendServiceWorkerConfig(session, []));
|
|
3699
|
+
}, function (e) {
|
|
3700
|
+
cleanupError !== null && cleanupError !== void 0 ? cleanupError : cleanupError = e;
|
|
3701
|
+
}));
|
|
3702
|
+
}
|
|
3703
|
+
}, function () {
|
|
3704
|
+
if (cleanupError !== undefined) {
|
|
3705
|
+
throw cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError));
|
|
3402
3706
|
}
|
|
3403
3707
|
});
|
|
3404
3708
|
});
|
|
@@ -3408,145 +3712,71 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3408
3712
|
}
|
|
3409
3713
|
}
|
|
3410
3714
|
}, {
|
|
3411
|
-
key: "
|
|
3412
|
-
value: function
|
|
3715
|
+
key: "refreshAuthConfig",
|
|
3716
|
+
value: function refreshAuthConfig(session, state) {
|
|
3717
|
+
var rejectInvalidInitialToken = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
3413
3718
|
try {
|
|
3414
|
-
var
|
|
3415
|
-
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(
|
|
3719
|
+
var _this4 = this;
|
|
3720
|
+
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(_this4.authSessionMutex.safe(AuthManagerBrowser_async(function () {
|
|
3721
|
+
var _a;
|
|
3416
3722
|
if (!session.isActive) {
|
|
3417
3723
|
return;
|
|
3418
3724
|
}
|
|
3419
|
-
|
|
3420
|
-
|
|
3725
|
+
if (state.refreshHandle !== undefined) {
|
|
3726
|
+
_this4.scheduler.unschedule(state.refreshHandle);
|
|
3727
|
+
}
|
|
3728
|
+
var previous = {
|
|
3729
|
+
accessToken: state.accessToken,
|
|
3730
|
+
expiresAt: state.expiresAt,
|
|
3731
|
+
jwt: state.jwt,
|
|
3732
|
+
serviceWorkerConfigured: session.serviceWorkerConfigured
|
|
3421
3733
|
};
|
|
3422
|
-
var
|
|
3423
|
-
return
|
|
3734
|
+
var refreshAt = Date.now() + _this4.retryAuthAfterErrorSeconds * 1000;
|
|
3735
|
+
return AuthManagerBrowser_finallyRethrows(function () {
|
|
3424
3736
|
return AuthManagerBrowser_catch(function () {
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
return AuthManagerBrowser_await(
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
headers: [{
|
|
3438
|
-
key: "Authorization",
|
|
3439
|
-
value: "Bearer ".concat(jwt)
|
|
3440
|
-
}],
|
|
3441
|
-
expires: secondsFromNow(setTokenResult.ttlSeconds),
|
|
3442
|
-
urlPrefix: "".concat(_this3.getCdnUrl(params), "/").concat(params.accountId, "/")
|
|
3443
|
-
};
|
|
3444
|
-
// Fail closed until the initial serviceWorkerConfig callback succeeds: without its result, we do not know
|
|
3445
|
-
// the source-page restrictions intended for the primary JWT.
|
|
3446
|
-
return AuthManagerBrowser_invoke(function () {
|
|
3447
|
-
if (params.serviceWorkerConfig === undefined || session.serviceWorkerConfig !== undefined) {
|
|
3448
|
-
return AuthManagerBrowser_await(_this3.sendMergedServiceWorkerConfig(session, primaryAuthSwConfig, session.serviceWorkerConfig), function () {
|
|
3449
|
-
return AuthManagerBrowser_awaitIgnored(_this3.waitForServiceWorker());
|
|
3450
|
-
});
|
|
3451
|
-
}
|
|
3452
|
-
}, function () {
|
|
3453
|
-
session.primaryAuthSwConfig = primaryAuthSwConfig;
|
|
3737
|
+
return AuthManagerBrowser_await(_this4.getAuthorizationToken(session.params, state.config), function (jwt) {
|
|
3738
|
+
var setCookie = _this4.shouldSetCookie(session, state.config);
|
|
3739
|
+
return AuthManagerBrowser_await(_this4.setAccessToken(session.params.options, _this4.getConfigCdnUrl(session.params, state.config), state.config.accountId, jwt, setCookie), function (token) {
|
|
3740
|
+
var expiresAt = Date.now() + token.ttlSeconds * 1000;
|
|
3741
|
+
state.accessToken = token.accessToken;
|
|
3742
|
+
state.expiresAt = expiresAt;
|
|
3743
|
+
state.jwt = jwt;
|
|
3744
|
+
return AuthManagerBrowser_invoke(function () {
|
|
3745
|
+
if (session.authServiceWorker !== undefined && (_this4.isServiceWorkerEnabled(state.config) || session.serviceWorkerConfigured !== true)) {
|
|
3746
|
+
return AuthManagerBrowser_await(_this4.sendCurrentServiceWorkerConfig(session), function () {
|
|
3747
|
+
return AuthManagerBrowser_await(_this4.waitForServiceWorker(), function () {
|
|
3748
|
+
session.serviceWorkerConfigured = true;
|
|
3454
3749
|
});
|
|
3455
|
-
}
|
|
3456
|
-
}
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
session.accessToken = setTokenResult.accessToken;
|
|
3465
|
-
_this3.updateSessionReadiness(session);
|
|
3466
|
-
});
|
|
3750
|
+
});
|
|
3751
|
+
}
|
|
3752
|
+
}, function () {
|
|
3753
|
+
var desiredTtl = token.ttlSeconds - _this4.refreshBeforeExpirySeconds;
|
|
3754
|
+
var actualTtl = Math.max(desiredTtl, _this4.minJwtTtlSeconds);
|
|
3755
|
+
if (desiredTtl !== actualTtl) {
|
|
3756
|
+
ConsoleUtils.warn("JWT expiration is too short: waiting for ".concat(actualTtl, " seconds before refreshing."));
|
|
3757
|
+
}
|
|
3758
|
+
refreshAt = Date.now() + actualTtl * 1000;
|
|
3467
3759
|
});
|
|
3468
3760
|
});
|
|
3469
3761
|
});
|
|
3470
3762
|
}, function (e) {
|
|
3471
|
-
|
|
3472
|
-
|
|
3763
|
+
state.accessToken = previous.accessToken;
|
|
3764
|
+
state.expiresAt = previous.expiresAt;
|
|
3765
|
+
state.jwt = previous.jwt;
|
|
3766
|
+
session.serviceWorkerConfigured = previous.serviceWorkerConfigured;
|
|
3767
|
+
ConsoleUtils.warn("Unable to refresh JWT access token for auth config '".concat((_a = state.config.authConfigId) !== null && _a !== void 0 ? _a : "default", "': ").concat(e));
|
|
3768
|
+
if (rejectInvalidInitialToken && e instanceof InvalidAuthTokenError) {
|
|
3769
|
+
throw e;
|
|
3770
|
+
}
|
|
3473
3771
|
});
|
|
3474
|
-
}, function (_wasThrown,
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
session.accessTokenRefreshHandle = _this3.scheduler.schedule(expires, function () {
|
|
3478
|
-
_this3.refreshAccessToken(session, params).then(function () {},
|
|
3479
|
-
// Should not occur, as this method shouldn't throw errors.
|
|
3480
|
-
function (e) {
|
|
3772
|
+
}, function (_wasThrown, _result2) {
|
|
3773
|
+
state.refreshHandle = _this4.scheduler.schedule(refreshAt, function () {
|
|
3774
|
+
_this4.refreshAuthConfig(session, state).then(function () {}, function (e) {
|
|
3481
3775
|
return ConsoleUtils.error("Unexpected error when refreshing JWT access token: ".concat(e));
|
|
3482
3776
|
});
|
|
3483
3777
|
});
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
}))));
|
|
3487
|
-
} catch (e) {
|
|
3488
|
-
return Promise.reject(e);
|
|
3489
|
-
}
|
|
3490
|
-
}
|
|
3491
|
-
}, {
|
|
3492
|
-
key: "refreshServiceWorkerConfig",
|
|
3493
|
-
value: function refreshServiceWorkerConfig(session, params) {
|
|
3494
|
-
try {
|
|
3495
|
-
var _this4 = this;
|
|
3496
|
-
var getServiceWorkerConfig = params.serviceWorkerConfig;
|
|
3497
|
-
if (getServiceWorkerConfig === undefined) {
|
|
3498
|
-
return AuthManagerBrowser_await();
|
|
3499
|
-
}
|
|
3500
|
-
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(_this4.authSessionMutex.safe(AuthManagerBrowser_async(function () {
|
|
3501
|
-
var _exit = false;
|
|
3502
|
-
if (!session.isActive) {
|
|
3503
|
-
return;
|
|
3504
|
-
}
|
|
3505
|
-
var refreshAt;
|
|
3506
|
-
return AuthManagerBrowser_continue(AuthManagerBrowser_catch(function () {
|
|
3507
|
-
return AuthManagerBrowser_call(getServiceWorkerConfig, function (result) {
|
|
3508
|
-
if (result === null || AuthManagerBrowser_typeof(result) !== "object" || !Array.isArray(result.additionalConfig)) {
|
|
3509
|
-
throw new Error("The 'serviceWorkerConfig' callback must return an object containing 'additionalConfig'.");
|
|
3510
|
-
}
|
|
3511
|
-
if (result.sourceUrlPrefixes !== undefined && (!Array.isArray(result.sourceUrlPrefixes) || !result.sourceUrlPrefixes.every(function (prefix) {
|
|
3512
|
-
return typeof prefix === "string";
|
|
3513
|
-
}))) {
|
|
3514
|
-
throw new Error("The 'sourceUrlPrefixes' field returned by 'serviceWorkerConfig' must be an array of strings.");
|
|
3515
|
-
}
|
|
3516
|
-
if (result.urlRewriteRules !== undefined && (!Array.isArray(result.urlRewriteRules) || !result.urlRewriteRules.every(function (rule) {
|
|
3517
|
-
return rule !== null && AuthManagerBrowser_typeof(rule) === "object" && typeof rule.fromUrlPrefix === "string" && typeof rule.toUrlPrefix === "string";
|
|
3518
|
-
}))) {
|
|
3519
|
-
throw new Error("The 'urlRewriteRules' field returned by 'serviceWorkerConfig' must be an array of URL rewrite rules.");
|
|
3520
|
-
}
|
|
3521
|
-
var config = {
|
|
3522
|
-
additionalConfig: result.additionalConfig,
|
|
3523
|
-
sourceUrlPrefixes: result.sourceUrlPrefixes,
|
|
3524
|
-
urlRewriteRules: result.urlRewriteRules
|
|
3525
|
-
};
|
|
3526
|
-
return AuthManagerBrowser_invoke(function () {
|
|
3527
|
-
if (session.primaryAuthSwConfig !== undefined) {
|
|
3528
|
-
return AuthManagerBrowser_await(_this4.sendMergedServiceWorkerConfig(session, session.primaryAuthSwConfig, config), function () {
|
|
3529
|
-
return AuthManagerBrowser_awaitIgnored(_this4.waitForServiceWorker());
|
|
3530
|
-
});
|
|
3531
|
-
}
|
|
3532
|
-
}, function () {
|
|
3533
|
-
session.serviceWorkerConfig = config;
|
|
3534
|
-
_this4.updateSessionReadiness(session);
|
|
3535
|
-
refreshAt = _this4.getServiceWorkerConfigRefreshEpoch(config.additionalConfig);
|
|
3536
|
-
});
|
|
3537
|
-
});
|
|
3538
|
-
}, function (e) {
|
|
3539
|
-
ConsoleUtils.warn("Unable to refresh service worker auth config: ".concat(e));
|
|
3540
|
-
refreshAt = Date.now() + _this4.retryAuthAfterErrorSeconds * 1000;
|
|
3541
|
-
}), function (_result2) {
|
|
3542
|
-
if (_exit) return _result2;
|
|
3543
|
-
if (refreshAt !== undefined) {
|
|
3544
|
-
session.serviceWorkerConfigRefreshHandle = _this4.scheduler.schedule(refreshAt, function () {
|
|
3545
|
-
_this4.refreshServiceWorkerConfig(session, params).then(function () {}, function (e) {
|
|
3546
|
-
return ConsoleUtils.error("Unexpected error when refreshing service worker auth config: ".concat(e));
|
|
3547
|
-
});
|
|
3548
|
-
});
|
|
3549
|
-
}
|
|
3778
|
+
_this4.updateSessionState(session);
|
|
3779
|
+
return AuthManagerBrowser_rethrow(_wasThrown, _result2);
|
|
3550
3780
|
});
|
|
3551
3781
|
}))));
|
|
3552
3782
|
} catch (e) {
|
|
@@ -3554,38 +3784,31 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3554
3784
|
}
|
|
3555
3785
|
}
|
|
3556
3786
|
}, {
|
|
3557
|
-
key: "
|
|
3558
|
-
value: function
|
|
3787
|
+
key: "sendCurrentServiceWorkerConfig",
|
|
3788
|
+
value: function sendCurrentServiceWorkerConfig(session) {
|
|
3559
3789
|
try {
|
|
3560
3790
|
var _this5 = this;
|
|
3561
3791
|
var _a;
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3792
|
+
var now = Date.now();
|
|
3793
|
+
var config = ((_a = session.authConfigs) !== null && _a !== void 0 ? _a : []).flatMap(function (state) {
|
|
3794
|
+
if (!_this5.isServiceWorkerEnabled(state.config) || state.jwt === undefined || state.expiresAt === undefined || state.expiresAt <= now) {
|
|
3795
|
+
return [];
|
|
3796
|
+
}
|
|
3797
|
+
return [{
|
|
3798
|
+
expires: state.expiresAt,
|
|
3799
|
+
headers: [{
|
|
3800
|
+
key: "Authorization",
|
|
3801
|
+
value: "Bearer ".concat(state.jwt)
|
|
3802
|
+
}],
|
|
3803
|
+
sourceUrlPrefixes: state.config.sourceUrlPrefixes,
|
|
3804
|
+
urlPrefix: "".concat(_this5.getConfigCdnUrl(session.params, state.config), "/").concat(state.config.accountId, "/")
|
|
3805
|
+
}];
|
|
3806
|
+
});
|
|
3807
|
+
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(_this5.sendServiceWorkerConfig(session, config, _this5.isV2Params(session.params) ? session.params.urlRewriteRules : undefined)));
|
|
3565
3808
|
} catch (e) {
|
|
3566
3809
|
return Promise.reject(e);
|
|
3567
3810
|
}
|
|
3568
3811
|
}
|
|
3569
|
-
}, {
|
|
3570
|
-
key: "getServiceWorkerConfigRefreshEpoch",
|
|
3571
|
-
value: function getServiceWorkerConfigRefreshEpoch(config) {
|
|
3572
|
-
var earliestExpiry;
|
|
3573
|
-
var _iterator = _createForOfIteratorHelper(config),
|
|
3574
|
-
_step;
|
|
3575
|
-
try {
|
|
3576
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
3577
|
-
var entry = _step.value;
|
|
3578
|
-
if (entry.expires !== undefined && (earliestExpiry === undefined || entry.expires < earliestExpiry)) {
|
|
3579
|
-
earliestExpiry = entry.expires;
|
|
3580
|
-
}
|
|
3581
|
-
}
|
|
3582
|
-
} catch (err) {
|
|
3583
|
-
_iterator.e(err);
|
|
3584
|
-
} finally {
|
|
3585
|
-
_iterator.f();
|
|
3586
|
-
}
|
|
3587
|
-
return earliestExpiry === undefined ? undefined : earliestExpiry - this.refreshBeforeExpirySeconds * 1000;
|
|
3588
|
-
}
|
|
3589
3812
|
}, {
|
|
3590
3813
|
key: "sendServiceWorkerConfig",
|
|
3591
3814
|
value: function sendServiceWorkerConfig(session, config, urlRewriteRules) {
|
|
@@ -3611,16 +3834,172 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3611
3834
|
}
|
|
3612
3835
|
}
|
|
3613
3836
|
}, {
|
|
3614
|
-
key: "
|
|
3615
|
-
value: function
|
|
3616
|
-
|
|
3837
|
+
key: "getV2Configs",
|
|
3838
|
+
value: function getV2Configs(params) {
|
|
3839
|
+
try {
|
|
3840
|
+
return AuthManagerBrowser_await(params.authConfigs(), function (configs) {
|
|
3841
|
+
if (!Array.isArray(configs) || configs.length === 0) {
|
|
3842
|
+
throw new Error("The 'authConfigs' callback must return a non-empty array.");
|
|
3843
|
+
}
|
|
3844
|
+
return configs.map(function (config) {
|
|
3845
|
+
return config === null || AuthManagerBrowser_typeof(config) !== "object" ? config : Object.assign(Object.assign({}, config), {
|
|
3846
|
+
sourceUrlPrefixes: Array.isArray(config.sourceUrlPrefixes) ? AuthManagerBrowser_toConsumableArray(config.sourceUrlPrefixes) : config.sourceUrlPrefixes
|
|
3847
|
+
});
|
|
3848
|
+
});
|
|
3849
|
+
});
|
|
3850
|
+
} catch (e) {
|
|
3851
|
+
return Promise.reject(e);
|
|
3852
|
+
}
|
|
3853
|
+
}
|
|
3854
|
+
}, {
|
|
3855
|
+
key: "normalizeV1Config",
|
|
3856
|
+
value: function normalizeV1Config(params) {
|
|
3857
|
+
return {
|
|
3858
|
+
accountId: params.accountId,
|
|
3859
|
+
authConfigId: undefined,
|
|
3860
|
+
authHeaders: params.authHeaders,
|
|
3861
|
+
authUrl: params.authUrl,
|
|
3862
|
+
enableCookieAuth: params.serviceWorkerScript === undefined,
|
|
3863
|
+
enableServiceWorkerAuth: params.serviceWorkerScript !== undefined
|
|
3864
|
+
};
|
|
3865
|
+
}
|
|
3866
|
+
}, {
|
|
3867
|
+
key: "validateSessionConfig",
|
|
3868
|
+
value: function validateSessionConfig(params, configs, canUseServiceWorkers, requiresServiceWorker) {
|
|
3869
|
+
var isV2 = this.isV2Params(params);
|
|
3870
|
+
if (isV2 && (params.accountId !== undefined || params.authHeaders !== undefined || params.authUrl !== undefined)) {
|
|
3871
|
+
throw new Error("V2 auth sessions must use 'authConfigs' instead of top-level auth fields.");
|
|
3872
|
+
}
|
|
3873
|
+
var ids = new Set();
|
|
3874
|
+
var cookieConfig;
|
|
3875
|
+
var workerConfigsByPrefix = new Map();
|
|
3876
|
+
var _iterator2 = _createForOfIteratorHelper(configs),
|
|
3877
|
+
_step2;
|
|
3878
|
+
try {
|
|
3879
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
3880
|
+
var config = _step2.value;
|
|
3881
|
+
if (config === null || AuthManagerBrowser_typeof(config) !== "object") {
|
|
3882
|
+
throw new Error("Each auth configuration must be an object.");
|
|
3883
|
+
}
|
|
3884
|
+
if (!Object.prototype.hasOwnProperty.call(config, "authConfigId")) {
|
|
3885
|
+
throw new Error("Each auth configuration must explicitly provide 'authConfigId'.");
|
|
3886
|
+
}
|
|
3887
|
+
if (config.authConfigId !== undefined && typeof config.authConfigId !== "string") {
|
|
3888
|
+
throw new Error("The 'authConfigId' field must be a string or undefined.");
|
|
3889
|
+
}
|
|
3890
|
+
if (ids.has(config.authConfigId)) {
|
|
3891
|
+
throw new Error(config.authConfigId === undefined ? "Only one default auth configuration is allowed." : "Duplicate auth configuration ID: '".concat(config.authConfigId, "'."));
|
|
3892
|
+
}
|
|
3893
|
+
ids.add(config.authConfigId);
|
|
3894
|
+
if (isV2 && !this.isValidAccountId(config.accountId)) {
|
|
3895
|
+
throw new Error("Invalid Bytescale account ID: '".concat(String(config.accountId), "'."));
|
|
3896
|
+
}
|
|
3897
|
+
if (config.cdnUrl !== undefined && typeof config.cdnUrl !== "string") {
|
|
3898
|
+
throw new Error("The 'cdnUrl' field must be a string when provided.");
|
|
3899
|
+
}
|
|
3900
|
+
if (config.enableCookieAuth !== undefined && typeof config.enableCookieAuth !== "boolean" || config.enableServiceWorkerAuth !== undefined && typeof config.enableServiceWorkerAuth !== "boolean") {
|
|
3901
|
+
throw new Error("Authentication enablement flags must be booleans when provided.");
|
|
3902
|
+
}
|
|
3903
|
+
if (config.sourceUrlPrefixes !== undefined && (!Array.isArray(config.sourceUrlPrefixes) || !config.sourceUrlPrefixes.every(function (prefix) {
|
|
3904
|
+
return typeof prefix === "string";
|
|
3905
|
+
}))) {
|
|
3906
|
+
throw new Error("The 'sourceUrlPrefixes' field must be an array of strings.");
|
|
3907
|
+
}
|
|
3908
|
+
var isManual = typeof config.getAuthorizationToken === "function";
|
|
3909
|
+
var isAutomatic = typeof config.authUrl === "string" && typeof config.authHeaders === "function";
|
|
3910
|
+
if (isManual === isAutomatic || isManual && (config.authUrl !== undefined || config.authHeaders !== undefined)) {
|
|
3911
|
+
throw new Error("Each auth configuration must provide either 'getAuthorizationToken' or both 'authUrl' and 'authHeaders'.");
|
|
3912
|
+
}
|
|
3913
|
+
if (config.enableCookieAuth === true) {
|
|
3914
|
+
if (cookieConfig !== undefined) {
|
|
3915
|
+
throw new Error("Only one auth configuration may enable cookie authentication.");
|
|
3916
|
+
}
|
|
3917
|
+
cookieConfig = config;
|
|
3918
|
+
}
|
|
3919
|
+
if (this.isServiceWorkerEnabled(config)) {
|
|
3920
|
+
var _prefix = "".concat(this.getConfigCdnUrl(params, config), "/").concat(config.accountId, "/");
|
|
3921
|
+
if (workerConfigsByPrefix.has(_prefix)) {
|
|
3922
|
+
throw new Error("Multiple service-worker auth configurations target the same URL prefix: '".concat(_prefix, "'."));
|
|
3923
|
+
}
|
|
3924
|
+
workerConfigsByPrefix.set(_prefix, config);
|
|
3925
|
+
}
|
|
3926
|
+
}
|
|
3927
|
+
} catch (err) {
|
|
3928
|
+
_iterator2.e(err);
|
|
3929
|
+
} finally {
|
|
3930
|
+
_iterator2.f();
|
|
3931
|
+
}
|
|
3932
|
+
if (cookieConfig !== undefined) {
|
|
3933
|
+
var prefix = "".concat(this.getConfigCdnUrl(params, cookieConfig), "/").concat(cookieConfig.accountId, "/");
|
|
3934
|
+
var workerConfig = workerConfigsByPrefix.get(prefix);
|
|
3935
|
+
if (workerConfig !== undefined && workerConfig !== cookieConfig) {
|
|
3936
|
+
throw new Error("Cookie and service-worker authentication cannot target the same account from different configs.");
|
|
3937
|
+
}
|
|
3938
|
+
}
|
|
3939
|
+
if (isV2) {
|
|
3940
|
+
this.validateUrlRewriteRules(params.urlRewriteRules);
|
|
3941
|
+
if (requiresServiceWorker && params.serviceWorkerScript === undefined) {
|
|
3942
|
+
throw new Error("The 'serviceWorkerScript' field is required when service-worker authentication or URL rewriting is enabled.");
|
|
3943
|
+
}
|
|
3944
|
+
if (requiresServiceWorker && !canUseServiceWorkers) {
|
|
3945
|
+
throw new Error("This auth session requires service workers, but this browser does not support them.");
|
|
3946
|
+
}
|
|
3947
|
+
}
|
|
3948
|
+
}
|
|
3949
|
+
}, {
|
|
3950
|
+
key: "validateUrlRewriteRules",
|
|
3951
|
+
value: function validateUrlRewriteRules(rules) {
|
|
3952
|
+
if (rules !== undefined && (!Array.isArray(rules) || !rules.every(function (rule) {
|
|
3953
|
+
return rule !== null && AuthManagerBrowser_typeof(rule) === "object" && typeof rule.fromUrlPrefix === "string" && typeof rule.toUrlPrefix === "string";
|
|
3954
|
+
}))) {
|
|
3955
|
+
throw new Error("The 'urlRewriteRules' field must be an array of URL rewrite rules.");
|
|
3956
|
+
}
|
|
3957
|
+
}
|
|
3958
|
+
}, {
|
|
3959
|
+
key: "updateSessionState",
|
|
3960
|
+
value: function updateSessionState(session) {
|
|
3961
|
+
var _this7 = this;
|
|
3962
|
+
var _a;
|
|
3963
|
+
var configs = (_a = session.authConfigs) !== null && _a !== void 0 ? _a : [];
|
|
3964
|
+
var defaultConfig = configs.find(function (state) {
|
|
3965
|
+
return state.config.authConfigId === undefined;
|
|
3966
|
+
});
|
|
3967
|
+
var exposeLegacyDefault = !this.isV2Params(session.params);
|
|
3968
|
+
session.accessToken = exposeLegacyDefault && defaultConfig !== undefined && this.isConfigUsable(defaultConfig) ? defaultConfig.accessToken : undefined;
|
|
3969
|
+
session.accessTokenRefreshHandle = exposeLegacyDefault ? defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.refreshHandle : undefined;
|
|
3970
|
+
session.isReady = configs.length > 0 && configs.every(function (state) {
|
|
3971
|
+
return _this7.isConfigUsable(state);
|
|
3972
|
+
}) && (session.authServiceWorker === undefined || session.serviceWorkerConfigured === true);
|
|
3973
|
+
}
|
|
3974
|
+
}, {
|
|
3975
|
+
key: "isConfigUsable",
|
|
3976
|
+
value: function isConfigUsable(state) {
|
|
3977
|
+
return (state === null || state === void 0 ? void 0 : state.accessToken) !== undefined && state.expiresAt !== undefined && state.expiresAt > Date.now();
|
|
3978
|
+
}
|
|
3979
|
+
}, {
|
|
3980
|
+
key: "isServiceWorkerEnabled",
|
|
3981
|
+
value: function isServiceWorkerEnabled(config) {
|
|
3982
|
+
return config.enableServiceWorkerAuth !== false;
|
|
3983
|
+
}
|
|
3984
|
+
}, {
|
|
3985
|
+
key: "isV2Params",
|
|
3986
|
+
value: function isV2Params(params) {
|
|
3987
|
+
return typeof params.authConfigs === "function";
|
|
3988
|
+
}
|
|
3989
|
+
}, {
|
|
3990
|
+
key: "isValidAccountId",
|
|
3991
|
+
value: function isValidAccountId(accountId) {
|
|
3992
|
+
return typeof accountId === "string" && /^[1-9A-HJ-NP-Za-km-z]{7}$/.test(accountId);
|
|
3993
|
+
}
|
|
3994
|
+
}, {
|
|
3995
|
+
key: "shouldSetCookie",
|
|
3996
|
+
value: function shouldSetCookie(session, config) {
|
|
3997
|
+
return this.isV2Params(session.params) ? config.enableCookieAuth === true : session.authServiceWorker === undefined;
|
|
3617
3998
|
}
|
|
3618
3999
|
}, {
|
|
3619
4000
|
key: "waitForServiceWorker",
|
|
3620
4001
|
value: function waitForServiceWorker() {
|
|
3621
4002
|
try {
|
|
3622
|
-
// Message delivery is asynchronous and has no acknowledgement, so allow the worker time to apply the config before
|
|
3623
|
-
// beginAuthSession reports that authenticated requests are ready.
|
|
3624
4003
|
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(new Promise(function (resolve) {
|
|
3625
4004
|
return setTimeout(resolve, 100);
|
|
3626
4005
|
})));
|
|
@@ -3630,8 +4009,8 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3630
4009
|
}
|
|
3631
4010
|
}, {
|
|
3632
4011
|
key: "getAccessTokenUrl",
|
|
3633
|
-
value: function getAccessTokenUrl(
|
|
3634
|
-
return "".concat(
|
|
4012
|
+
value: function getAccessTokenUrl(cdnUrl, accountId, setCookie) {
|
|
4013
|
+
return "".concat(cdnUrl, "/api/v1/access_tokens/").concat(accountId, "?set-cookie=").concat(setCookie ? "true" : "false");
|
|
3635
4014
|
}
|
|
3636
4015
|
}, {
|
|
3637
4016
|
key: "getCdnUrl",
|
|
@@ -3639,19 +4018,26 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3639
4018
|
var _a;
|
|
3640
4019
|
return BytescaleApiClientConfigUtils.getCdnUrl((_a = params.options) !== null && _a !== void 0 ? _a : {});
|
|
3641
4020
|
}
|
|
4021
|
+
}, {
|
|
4022
|
+
key: "getConfigCdnUrl",
|
|
4023
|
+
value: function getConfigCdnUrl(params, config) {
|
|
4024
|
+
var _a, _b;
|
|
4025
|
+
return BytescaleApiClientConfigUtils.getCdnUrl({
|
|
4026
|
+
cdnUrl: (_a = config.cdnUrl) !== null && _a !== void 0 ? _a : (_b = params.options) === null || _b === void 0 ? void 0 : _b.cdnUrl
|
|
4027
|
+
});
|
|
4028
|
+
}
|
|
3642
4029
|
}, {
|
|
3643
4030
|
key: "deleteAccessToken",
|
|
3644
|
-
value: function deleteAccessToken(
|
|
4031
|
+
value: function deleteAccessToken(options, cdnUrl, accountId) {
|
|
3645
4032
|
try {
|
|
3646
|
-
var
|
|
3647
|
-
|
|
3648
|
-
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(BaseAPI.fetch(_this7.getAccessTokenUrl(params, true), {
|
|
4033
|
+
var _this8 = this;
|
|
4034
|
+
return AuthManagerBrowser_await(AuthManagerBrowser_awaitIgnored(BaseAPI.fetch(_this8.getAccessTokenUrl(cdnUrl, accountId, true), {
|
|
3649
4035
|
method: "DELETE",
|
|
3650
4036
|
credentials: "include",
|
|
3651
4037
|
headers: {}
|
|
3652
4038
|
}, {
|
|
3653
4039
|
isBytescaleApi: true,
|
|
3654
|
-
fetchApi:
|
|
4040
|
+
fetchApi: options === null || options === void 0 ? void 0 : options.fetchApi
|
|
3655
4041
|
})));
|
|
3656
4042
|
} catch (e) {
|
|
3657
4043
|
return Promise.reject(e);
|
|
@@ -3659,68 +4045,96 @@ var AuthManagerImpl = /*#__PURE__*/function () {
|
|
|
3659
4045
|
}
|
|
3660
4046
|
}, {
|
|
3661
4047
|
key: "setAccessToken",
|
|
3662
|
-
value: function setAccessToken(
|
|
4048
|
+
value: function setAccessToken(options, cdnUrl, accountId, jwt, setCookie) {
|
|
3663
4049
|
try {
|
|
3664
|
-
var
|
|
3665
|
-
var _a;
|
|
4050
|
+
var _this9 = this;
|
|
3666
4051
|
var request = {
|
|
3667
4052
|
accessToken: jwt
|
|
3668
4053
|
};
|
|
3669
|
-
return AuthManagerBrowser_await(BaseAPI.fetch(
|
|
4054
|
+
return AuthManagerBrowser_await(BaseAPI.fetch(_this9.getAccessTokenUrl(cdnUrl, accountId, setCookie), {
|
|
3670
4055
|
method: "PUT",
|
|
3671
4056
|
credentials: "include",
|
|
3672
|
-
headers: AuthManagerBrowser_defineProperty({},
|
|
4057
|
+
headers: AuthManagerBrowser_defineProperty({}, _this9.contentType, _this9.contentTypeJson),
|
|
3673
4058
|
body: JSON.stringify(request)
|
|
3674
4059
|
}, {
|
|
3675
4060
|
isBytescaleApi: true,
|
|
3676
|
-
fetchApi:
|
|
4061
|
+
fetchApi: options === null || options === void 0 ? void 0 : options.fetchApi
|
|
3677
4062
|
}), function (response) {
|
|
3678
|
-
return AuthManagerBrowser_await(response.json())
|
|
4063
|
+
return AuthManagerBrowser_await(response.json(), function (result) {
|
|
4064
|
+
if (typeof result.accessToken !== "string" || result.accessToken.length === 0 || typeof result.ttlSeconds !== "number" || !Number.isFinite(result.ttlSeconds) || result.ttlSeconds <= 0) {
|
|
4065
|
+
throw new Error("Bytescale returned an invalid access-token registration response.");
|
|
4066
|
+
}
|
|
4067
|
+
return result;
|
|
4068
|
+
});
|
|
3679
4069
|
});
|
|
3680
4070
|
} catch (e) {
|
|
3681
4071
|
return Promise.reject(e);
|
|
3682
4072
|
}
|
|
3683
4073
|
}
|
|
3684
4074
|
}, {
|
|
3685
|
-
key: "
|
|
3686
|
-
value: function
|
|
4075
|
+
key: "getAuthorizationToken",
|
|
4076
|
+
value: function getAuthorizationToken(params, config) {
|
|
3687
4077
|
try {
|
|
3688
|
-
var
|
|
4078
|
+
var _exit = false;
|
|
4079
|
+
var _this0 = this;
|
|
3689
4080
|
var _a, _b;
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
}), function (result) {
|
|
3699
|
-
var actualContentType = (_b = result.headers.get(_this9.contentType)) !== null && _b !== void 0 ? _b : "";
|
|
3700
|
-
// Support content types like "text/plain; charset=utf-8" and "text/plain"
|
|
3701
|
-
if (actualContentType.split(";")[0] !== requiredContentType) {
|
|
3702
|
-
throw new Error("".concat(endpointName, " returned \"").concat(actualContentType, "\" for the ").concat(_this9.contentType, " response header, but the Bytescale SDK requires \"").concat(requiredContentType, "\"."));
|
|
4081
|
+
return AuthManagerBrowser_await(AuthManagerBrowser_invoke(function () {
|
|
4082
|
+
if (typeof config.getAuthorizationToken === "function") {
|
|
4083
|
+
var _validateJwt = _this0.validateJwt;
|
|
4084
|
+
return AuthManagerBrowser_await(config.getAuthorizationToken(), function (_config$getAuthorizat) {
|
|
4085
|
+
var _this0$validateJwt = _validateJwt.call(_this0, _config$getAuthorizat, "The 'getAuthorizationToken' callback");
|
|
4086
|
+
_exit = true;
|
|
4087
|
+
return _this0$validateJwt;
|
|
4088
|
+
});
|
|
3703
4089
|
}
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
4090
|
+
}, function (_result3) {
|
|
4091
|
+
if (_exit) return _result3;
|
|
4092
|
+
var endpointName = "Your auth API endpoint";
|
|
4093
|
+
var _fetch = BaseAPI.fetch,
|
|
4094
|
+
_config$authUrl = config.authUrl;
|
|
4095
|
+
return AuthManagerBrowser_await(config.authHeaders(), function (_config$authHeaders) {
|
|
4096
|
+
return AuthManagerBrowser_await(_fetch.call(BaseAPI, _config$authUrl, {
|
|
4097
|
+
method: "GET",
|
|
4098
|
+
headers: _config$authHeaders
|
|
4099
|
+
}, {
|
|
4100
|
+
isBytescaleApi: false,
|
|
4101
|
+
fetchApi: (_a = params.options) === null || _a === void 0 ? void 0 : _a.fetchApi
|
|
4102
|
+
}), function (result) {
|
|
4103
|
+
var actualContentType = (_b = result.headers.get(_this0.contentType)) !== null && _b !== void 0 ? _b : "";
|
|
4104
|
+
if (actualContentType.split(";")[0] !== _this0.contentTypeText) {
|
|
4105
|
+
throw new Error("".concat(endpointName, " returned \"").concat(actualContentType, "\" for the ").concat(_this0.contentType, " response header, but the Bytescale SDK requires \"").concat(_this0.contentTypeText, "\"."));
|
|
4106
|
+
}
|
|
4107
|
+
var _validateJwt2 = _this0.validateJwt;
|
|
4108
|
+
return AuthManagerBrowser_await(result.text(), function (_result$text) {
|
|
4109
|
+
return _validateJwt2.call(_this0, _result$text, endpointName);
|
|
4110
|
+
});
|
|
4111
|
+
});
|
|
3713
4112
|
});
|
|
3714
|
-
});
|
|
4113
|
+
}));
|
|
3715
4114
|
} catch (e) {
|
|
3716
4115
|
return Promise.reject(e);
|
|
3717
4116
|
}
|
|
3718
4117
|
}
|
|
4118
|
+
}, {
|
|
4119
|
+
key: "validateJwt",
|
|
4120
|
+
value: function validateJwt(jwt, source) {
|
|
4121
|
+
if (typeof jwt !== "string" || jwt.length === 0) {
|
|
4122
|
+
throw new InvalidAuthTokenError("".concat(source, " returned an empty or malformed token. Please return a valid JWT instead."));
|
|
4123
|
+
}
|
|
4124
|
+
if (jwt.trim().length !== jwt.length) {
|
|
4125
|
+
throw new InvalidAuthTokenError("".concat(source, " returned whitespace around the JWT, please remove it."));
|
|
4126
|
+
}
|
|
4127
|
+
var parts = jwt.split(".");
|
|
4128
|
+
if (parts.length !== 3 || parts.some(function (part) {
|
|
4129
|
+
return part.length === 0 || !/^[A-Za-z0-9_-]+$/.test(part);
|
|
4130
|
+
})) {
|
|
4131
|
+
throw new InvalidAuthTokenError("".concat(source, " returned a malformed JWT."));
|
|
4132
|
+
}
|
|
4133
|
+
return jwt;
|
|
4134
|
+
}
|
|
3719
4135
|
}]);
|
|
3720
4136
|
}();
|
|
3721
|
-
/**
|
|
3722
|
-
* Alternative way of implementing a static class (i.e. all methods static). We do this so we can use a interface on the class (interfaces can't define static methods).
|
|
3723
|
-
*/
|
|
4137
|
+
/** Alternative to a static class that allows the implementation to satisfy an interface. */
|
|
3724
4138
|
var AuthManager = new AuthManagerImpl(new ServiceWorkerUtils());
|
|
3725
4139
|
;// ./src/public/browser/index.ts
|
|
3726
4140
|
|