idmission-web-sdk 2.3.225-feature-per-runtime-capability-probe-e2ff01d → 2.3.225

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.
@@ -211,7 +211,7 @@
211
211
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
212
212
  };
213
213
 
214
- var webSdkVersion = '2.3.224';
214
+ var webSdkVersion = '2.3.225';
215
215
 
216
216
  function getPlatform() {
217
217
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -4175,20 +4175,28 @@
4175
4175
  // invokes a particular runtime never loads its WASM payload.
4176
4176
  function probeDelegateForRuntime(runtime) {
4177
4177
  return __awaiter(this, void 0, void 0, function () {
4178
- var state, firstError_1, secondError_1;
4178
+ var state, MAX_WAIT_MS_1, firstError_1, secondError_1;
4179
4179
  return __generator(this, function (_a) {
4180
4180
  switch (_a.label) {
4181
4181
  case 0:
4182
4182
  state = modelCapabilities.delegateByRuntime[runtime];
4183
4183
  if (state.probeState === 'probed') return [2 /*return*/];
4184
4184
  if (state.probeState === 'probing') {
4185
+ MAX_WAIT_MS_1 = 30000;
4185
4186
  return [2 /*return*/, new Promise(function (resolve) {
4186
4187
  var id = setInterval(function () {
4187
4188
  if (state.probeState === 'probed') {
4188
4189
  clearInterval(id);
4190
+ clearTimeout(timeoutId);
4189
4191
  resolve();
4190
4192
  }
4191
4193
  }, 100);
4194
+ // Forward-referenced by the interval callback above; safe because the
4195
+ // callback only fires after this line has run.
4196
+ var timeoutId = setTimeout(function () {
4197
+ clearInterval(id);
4198
+ resolve();
4199
+ }, MAX_WAIT_MS_1);
4192
4200
  })];
4193
4201
  }
4194
4202
  state.probeState = 'probing';
@@ -4495,19 +4503,7 @@
4495
4503
  };
4496
4504
  function preloadModelDependencies(model) {
4497
4505
  return __awaiter(this, void 0, void 0, function () {
4498
- function handleModelDownloadProgress(event) {
4499
- var detail = event.detail;
4500
- if (!dependencies.some(function (d) {
4501
- return d.url === detail.url;
4502
- })) return;
4503
- progressByUseCase[model] = sumUpProgressForDependencies(dependencies.map(function (d) {
4504
- return d.url;
4505
- }));
4506
- document.dispatchEvent(new CustomEvent("idmission.preloadProgress.".concat(model), {
4507
- detail: progressByUseCase[model]
4508
- }));
4509
- }
4510
- var dependencies;
4506
+ var dependencies_1, handleModelDownloadProgress;
4511
4507
  return __generator(this, function (_a) {
4512
4508
  switch (_a.label) {
4513
4509
  case 0:
@@ -4520,40 +4516,62 @@
4520
4516
  }, 100);
4521
4517
  })];
4522
4518
  modelsPreloading[model] = true;
4519
+ _a.label = 1;
4520
+ case 1:
4521
+ _a.trys.push([1,, 8, 9]);
4523
4522
  // All five models in this function are MediaPipe-backed; probe MP's
4524
4523
  // delegate to surface NONE before we waste bandwidth downloading bytes
4525
4524
  // for a model the device can't run.
4526
4525
  return [4 /*yield*/, probeNetworkSpeed()];
4527
- case 1:
4526
+ case 2:
4528
4527
  // All five models in this function are MediaPipe-backed; probe MP's
4529
4528
  // delegate to surface NONE before we waste bandwidth downloading bytes
4530
4529
  // for a model the device can't run.
4531
4530
  _a.sent();
4532
4531
  return [4 /*yield*/, probeDelegateForRuntime('mediapipe')];
4533
- case 2:
4532
+ case 3:
4534
4533
  _a.sent();
4535
4534
  if (getDelegate('mediapipe') === 'NONE') {
4536
4535
  throw new Error("No available delegate for ".concat(model, " model."));
4537
4536
  }
4538
- dependencies = [{
4537
+ dependencies_1 = [{
4539
4538
  url: defaultModelPaths[model],
4540
4539
  hash: defaultModelPaths[model + 'Hash']
4541
4540
  }];
4541
+ handleModelDownloadProgress = function handleModelDownloadProgress(event) {
4542
+ var detail = event.detail;
4543
+ if (!dependencies_1.some(function (d) {
4544
+ return d.url === detail.url;
4545
+ })) return;
4546
+ progressByUseCase[model] = sumUpProgressForDependencies(dependencies_1.map(function (d) {
4547
+ return d.url;
4548
+ }));
4549
+ document.dispatchEvent(new CustomEvent("idmission.preloadProgress.".concat(model), {
4550
+ detail: progressByUseCase[model]
4551
+ }));
4552
+ };
4542
4553
  document.addEventListener('idmission.preloadProgress', handleModelDownloadProgress);
4543
- _a.label = 3;
4544
- case 3:
4545
- _a.trys.push([3,, 5, 6]);
4546
- return [4 /*yield*/, Promise.all(dependencies.map(function (d) {
4554
+ _a.label = 4;
4555
+ case 4:
4556
+ _a.trys.push([4,, 6, 7]);
4557
+ return [4 /*yield*/, Promise.all(dependencies_1.map(function (d) {
4547
4558
  return preloadDependency(d.url, d.hash);
4548
4559
  }))];
4549
- case 4:
4550
- _a.sent();
4551
- return [3 /*break*/, 6];
4552
4560
  case 5:
4561
+ _a.sent();
4562
+ return [3 /*break*/, 7];
4563
+ case 6:
4553
4564
  document.removeEventListener('idmission.preloadProgress', handleModelDownloadProgress);
4565
+ return [7 /*endfinally*/];
4566
+ case 7:
4567
+ return [3 /*break*/, 9];
4568
+ case 8:
4569
+ // Always clear the gate — including when probe/guard throws before the
4570
+ // download phase — so concurrent callers polling on modelsPreloading
4571
+ // don't hang forever.
4554
4572
  modelsPreloading[model] = false;
4555
4573
  return [7 /*endfinally*/];
4556
- case 6:
4574
+ case 9:
4557
4575
  return [2 /*return*/];
4558
4576
  }
4559
4577
  });