@bytescale/sdk 3.19.0 → 3.21.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
CHANGED
|
@@ -2419,6 +2419,13 @@ function ServiceWorkerUtils_catch(body, recover) {
|
|
|
2419
2419
|
}
|
|
2420
2420
|
return result;
|
|
2421
2421
|
}
|
|
2422
|
+
function ServiceWorkerUtils_invoke(body, then) {
|
|
2423
|
+
var result = body();
|
|
2424
|
+
if (result && result.then) {
|
|
2425
|
+
return result.then(then);
|
|
2426
|
+
}
|
|
2427
|
+
return then(result);
|
|
2428
|
+
}
|
|
2422
2429
|
function ServiceWorkerUtils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
2423
2430
|
function ServiceWorkerUtils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ServiceWorkerUtils_toPropertyKey(descriptor.key), descriptor); } }
|
|
2424
2431
|
function ServiceWorkerUtils_createClass(Constructor, protoProps, staticProps) { if (protoProps) ServiceWorkerUtils_defineProperties(Constructor.prototype, protoProps); if (staticProps) ServiceWorkerUtils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
@@ -2439,7 +2446,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2439
2446
|
value: function sendMessage(message, config, serviceWorkerScriptFieldName) {
|
|
2440
2447
|
try {
|
|
2441
2448
|
var _this2 = this;
|
|
2442
|
-
return ServiceWorkerUtils_await(config.serviceWorkerScope !== undefined ? _this2.getActiveServiceWorkerElseRegister(config, message) : _this2.
|
|
2449
|
+
return ServiceWorkerUtils_await(config.serviceWorkerScope !== undefined ? _this2.getActiveServiceWorkerElseRegister(config, message) : _this2.registerServiceWorkerValidated(config.serviceWorkerScript, message, serviceWorkerScriptFieldName), function (result) {
|
|
2443
2450
|
if (!result.messageSent) {
|
|
2444
2451
|
result.serviceWorker.postMessage(message);
|
|
2445
2452
|
}
|
|
@@ -2450,8 +2457,8 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2450
2457
|
}
|
|
2451
2458
|
}
|
|
2452
2459
|
}, {
|
|
2453
|
-
key: "
|
|
2454
|
-
value: function
|
|
2460
|
+
key: "registerServiceWorkerValidated",
|
|
2461
|
+
value: function registerServiceWorkerValidated(serviceWorkerScript, init, serviceWorkerScriptFieldName) {
|
|
2455
2462
|
try {
|
|
2456
2463
|
var _this4 = this;
|
|
2457
2464
|
if (!serviceWorkerScript.startsWith("/")) {
|
|
@@ -2461,7 +2468,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2461
2468
|
if (forwardSlashCount > 1) {
|
|
2462
2469
|
ConsoleUtils.warn("The '".concat(serviceWorkerScriptFieldName, "' field should be a root script (e.g. '/script.js'). The Bytescale SDK can only authorize requests originating from webpages that are at the same level as the script or below."));
|
|
2463
2470
|
}
|
|
2464
|
-
return ServiceWorkerUtils_await(_this4.
|
|
2471
|
+
return ServiceWorkerUtils_await(_this4.registerServiceWorker(serviceWorkerScript, init));
|
|
2465
2472
|
} catch (e) {
|
|
2466
2473
|
return Promise.reject(e);
|
|
2467
2474
|
}
|
|
@@ -2476,7 +2483,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2476
2483
|
serviceWorker: serviceWorker,
|
|
2477
2484
|
messageSent: false,
|
|
2478
2485
|
config: config
|
|
2479
|
-
} : ServiceWorkerUtils_await(_this6.
|
|
2486
|
+
} : ServiceWorkerUtils_await(_this6.registerServiceWorker(config.serviceWorkerScript, init));
|
|
2480
2487
|
});
|
|
2481
2488
|
} catch (e) {
|
|
2482
2489
|
return Promise.reject(e);
|
|
@@ -2490,8 +2497,8 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2490
2497
|
* We don't need to unregister it: we just need to clear the config when auth ends.
|
|
2491
2498
|
*/
|
|
2492
2499
|
}, {
|
|
2493
|
-
key: "
|
|
2494
|
-
value: function
|
|
2500
|
+
key: "registerServiceWorker",
|
|
2501
|
+
value: function registerServiceWorker(serviceWorkerScript, init) {
|
|
2495
2502
|
try {
|
|
2496
2503
|
var _this8 = this;
|
|
2497
2504
|
return ServiceWorkerUtils_catch(function () {
|
|
@@ -2520,43 +2527,45 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2520
2527
|
key: "waitForActiveServiceWorker",
|
|
2521
2528
|
value: function waitForActiveServiceWorker(registration, init) {
|
|
2522
2529
|
try {
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2530
|
+
var _exit2 = false;
|
|
2531
|
+
// We must check the 'installing' state before the 'active' state (see comment below).
|
|
2532
|
+
// The state will be 'installing' when the service worker is installed for the first time, or if there have been
|
|
2533
|
+
// code changes to the service worker, else the state will be 'active'.
|
|
2534
|
+
var installing = registration.installing;
|
|
2535
|
+
return ServiceWorkerUtils_invoke(function () {
|
|
2536
|
+
if (installing !== null) {
|
|
2537
|
+
var waitForActive = new Promise(function (resolve) {
|
|
2538
|
+
var stateChangeHandler = function stateChangeHandler(e) {
|
|
2539
|
+
var sw = e.target;
|
|
2540
|
+
if (sw.state === "activated") {
|
|
2541
|
+
installing.removeEventListener("statechange", stateChangeHandler);
|
|
2542
|
+
resolve({
|
|
2543
|
+
messageSent: true,
|
|
2544
|
+
serviceWorker: sw
|
|
2545
|
+
});
|
|
2546
|
+
}
|
|
2547
|
+
};
|
|
2548
|
+
installing.addEventListener("statechange", stateChangeHandler);
|
|
2549
|
+
});
|
|
2550
|
+
installing.postMessage(init);
|
|
2551
|
+
_exit2 = true;
|
|
2552
|
+
return ServiceWorkerUtils_await(waitForActive);
|
|
2553
|
+
}
|
|
2554
|
+
}, function (_result) {
|
|
2555
|
+
if (_exit2) return _result;
|
|
2556
|
+
// We must check the 'installing' state before the 'active' state, because if we've just installed a new service
|
|
2557
|
+
// worker, then the new service worker will be in the 'installing' slot whereas the old service worker will be in
|
|
2558
|
+
// the 'active' slot. So, if we checked this first, we would always return the old service worker, and therefore the
|
|
2559
|
+
// new service worker would never be initialized.
|
|
2560
|
+
if (registration.active !== null) {
|
|
2561
|
+
return {
|
|
2562
|
+
serviceWorker: registration.active,
|
|
2563
|
+
messageSent: false
|
|
2553
2564
|
};
|
|
2554
|
-
serviceWorker.addEventListener("statechange", stateChangeHandler);
|
|
2555
|
-
} else {
|
|
2556
|
-
// If there's no installing or waiting service worker, reject.
|
|
2557
|
-
reject(new Error("No service worker is installing or waiting."));
|
|
2558
2565
|
}
|
|
2559
|
-
|
|
2566
|
+
// We expect the service worker to use 'skipWaiting', so we don't expect 'waiting' service workers.
|
|
2567
|
+
throw new Error("Service worker was neither 'installing' or 'active'.");
|
|
2568
|
+
});
|
|
2560
2569
|
} catch (e) {
|
|
2561
2570
|
return Promise.reject(e);
|
|
2562
2571
|
}
|
|
@@ -2404,6 +2404,13 @@ function ServiceWorkerUtils_catch(body, recover) {
|
|
|
2404
2404
|
}
|
|
2405
2405
|
return result;
|
|
2406
2406
|
}
|
|
2407
|
+
function ServiceWorkerUtils_invoke(body, then) {
|
|
2408
|
+
var result = body();
|
|
2409
|
+
if (result && result.then) {
|
|
2410
|
+
return result.then(then);
|
|
2411
|
+
}
|
|
2412
|
+
return then(result);
|
|
2413
|
+
}
|
|
2407
2414
|
function ServiceWorkerUtils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
2408
2415
|
function ServiceWorkerUtils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ServiceWorkerUtils_toPropertyKey(descriptor.key), descriptor); } }
|
|
2409
2416
|
function ServiceWorkerUtils_createClass(Constructor, protoProps, staticProps) { if (protoProps) ServiceWorkerUtils_defineProperties(Constructor.prototype, protoProps); if (staticProps) ServiceWorkerUtils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
@@ -2424,7 +2431,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2424
2431
|
value: function sendMessage(message, config, serviceWorkerScriptFieldName) {
|
|
2425
2432
|
try {
|
|
2426
2433
|
var _this2 = this;
|
|
2427
|
-
return ServiceWorkerUtils_await(config.serviceWorkerScope !== undefined ? _this2.getActiveServiceWorkerElseRegister(config, message) : _this2.
|
|
2434
|
+
return ServiceWorkerUtils_await(config.serviceWorkerScope !== undefined ? _this2.getActiveServiceWorkerElseRegister(config, message) : _this2.registerServiceWorkerValidated(config.serviceWorkerScript, message, serviceWorkerScriptFieldName), function (result) {
|
|
2428
2435
|
if (!result.messageSent) {
|
|
2429
2436
|
result.serviceWorker.postMessage(message);
|
|
2430
2437
|
}
|
|
@@ -2435,8 +2442,8 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2435
2442
|
}
|
|
2436
2443
|
}
|
|
2437
2444
|
}, {
|
|
2438
|
-
key: "
|
|
2439
|
-
value: function
|
|
2445
|
+
key: "registerServiceWorkerValidated",
|
|
2446
|
+
value: function registerServiceWorkerValidated(serviceWorkerScript, init, serviceWorkerScriptFieldName) {
|
|
2440
2447
|
try {
|
|
2441
2448
|
var _this4 = this;
|
|
2442
2449
|
if (!serviceWorkerScript.startsWith("/")) {
|
|
@@ -2446,7 +2453,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2446
2453
|
if (forwardSlashCount > 1) {
|
|
2447
2454
|
ConsoleUtils.warn("The '".concat(serviceWorkerScriptFieldName, "' field should be a root script (e.g. '/script.js'). The Bytescale SDK can only authorize requests originating from webpages that are at the same level as the script or below."));
|
|
2448
2455
|
}
|
|
2449
|
-
return ServiceWorkerUtils_await(_this4.
|
|
2456
|
+
return ServiceWorkerUtils_await(_this4.registerServiceWorker(serviceWorkerScript, init));
|
|
2450
2457
|
} catch (e) {
|
|
2451
2458
|
return Promise.reject(e);
|
|
2452
2459
|
}
|
|
@@ -2461,7 +2468,7 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2461
2468
|
serviceWorker: serviceWorker,
|
|
2462
2469
|
messageSent: false,
|
|
2463
2470
|
config: config
|
|
2464
|
-
} : ServiceWorkerUtils_await(_this6.
|
|
2471
|
+
} : ServiceWorkerUtils_await(_this6.registerServiceWorker(config.serviceWorkerScript, init));
|
|
2465
2472
|
});
|
|
2466
2473
|
} catch (e) {
|
|
2467
2474
|
return Promise.reject(e);
|
|
@@ -2475,8 +2482,8 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2475
2482
|
* We don't need to unregister it: we just need to clear the config when auth ends.
|
|
2476
2483
|
*/
|
|
2477
2484
|
}, {
|
|
2478
|
-
key: "
|
|
2479
|
-
value: function
|
|
2485
|
+
key: "registerServiceWorker",
|
|
2486
|
+
value: function registerServiceWorker(serviceWorkerScript, init) {
|
|
2480
2487
|
try {
|
|
2481
2488
|
var _this8 = this;
|
|
2482
2489
|
return ServiceWorkerUtils_catch(function () {
|
|
@@ -2505,43 +2512,45 @@ var ServiceWorkerUtils = /*#__PURE__*/function () {
|
|
|
2505
2512
|
key: "waitForActiveServiceWorker",
|
|
2506
2513
|
value: function waitForActiveServiceWorker(registration, init) {
|
|
2507
2514
|
try {
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2515
|
+
var _exit2 = false;
|
|
2516
|
+
// We must check the 'installing' state before the 'active' state (see comment below).
|
|
2517
|
+
// The state will be 'installing' when the service worker is installed for the first time, or if there have been
|
|
2518
|
+
// code changes to the service worker, else the state will be 'active'.
|
|
2519
|
+
var installing = registration.installing;
|
|
2520
|
+
return ServiceWorkerUtils_invoke(function () {
|
|
2521
|
+
if (installing !== null) {
|
|
2522
|
+
var waitForActive = new Promise(function (resolve) {
|
|
2523
|
+
var stateChangeHandler = function stateChangeHandler(e) {
|
|
2524
|
+
var sw = e.target;
|
|
2525
|
+
if (sw.state === "activated") {
|
|
2526
|
+
installing.removeEventListener("statechange", stateChangeHandler);
|
|
2527
|
+
resolve({
|
|
2528
|
+
messageSent: true,
|
|
2529
|
+
serviceWorker: sw
|
|
2530
|
+
});
|
|
2531
|
+
}
|
|
2532
|
+
};
|
|
2533
|
+
installing.addEventListener("statechange", stateChangeHandler);
|
|
2534
|
+
});
|
|
2535
|
+
installing.postMessage(init);
|
|
2536
|
+
_exit2 = true;
|
|
2537
|
+
return ServiceWorkerUtils_await(waitForActive);
|
|
2538
|
+
}
|
|
2539
|
+
}, function (_result) {
|
|
2540
|
+
if (_exit2) return _result;
|
|
2541
|
+
// We must check the 'installing' state before the 'active' state, because if we've just installed a new service
|
|
2542
|
+
// worker, then the new service worker will be in the 'installing' slot whereas the old service worker will be in
|
|
2543
|
+
// the 'active' slot. So, if we checked this first, we would always return the old service worker, and therefore the
|
|
2544
|
+
// new service worker would never be initialized.
|
|
2545
|
+
if (registration.active !== null) {
|
|
2546
|
+
return {
|
|
2547
|
+
serviceWorker: registration.active,
|
|
2548
|
+
messageSent: false
|
|
2538
2549
|
};
|
|
2539
|
-
serviceWorker.addEventListener("statechange", stateChangeHandler);
|
|
2540
|
-
} else {
|
|
2541
|
-
// If there's no installing or waiting service worker, reject.
|
|
2542
|
-
reject(new Error("No service worker is installing or waiting."));
|
|
2543
2550
|
}
|
|
2544
|
-
|
|
2551
|
+
// We expect the service worker to use 'skipWaiting', so we don't expect 'waiting' service workers.
|
|
2552
|
+
throw new Error("Service worker was neither 'installing' or 'active'.");
|
|
2553
|
+
});
|
|
2545
2554
|
} catch (e) {
|
|
2546
2555
|
return Promise.reject(e);
|
|
2547
2556
|
}
|
|
@@ -2,7 +2,7 @@ import { ServiceWorkerConfig, ServiceWorkerConfigInitialized } from "./model/Ser
|
|
|
2
2
|
export declare class ServiceWorkerUtils<TMessage> {
|
|
3
3
|
canUseServiceWorkers(): boolean;
|
|
4
4
|
sendMessage(message: TMessage, config: ServiceWorkerConfig, serviceWorkerScriptFieldName: string): Promise<ServiceWorkerConfigInitialized>;
|
|
5
|
-
private
|
|
5
|
+
private registerServiceWorkerValidated;
|
|
6
6
|
private getActiveServiceWorkerElseRegister;
|
|
7
7
|
/**
|
|
8
8
|
* Idempotent.
|
|
@@ -11,7 +11,7 @@ export declare class ServiceWorkerUtils<TMessage> {
|
|
|
11
11
|
*
|
|
12
12
|
* We don't need to unregister it: we just need to clear the config when auth ends.
|
|
13
13
|
*/
|
|
14
|
-
private
|
|
14
|
+
private registerServiceWorker;
|
|
15
15
|
private waitForActiveServiceWorker;
|
|
16
16
|
private getActiveServiceWorker;
|
|
17
17
|
}
|