patchright-core 1.52.4 → 1.55.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.
Files changed (218) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/bin/reinstall_chrome_beta_mac.sh +1 -1
  3. package/bin/reinstall_chrome_stable_mac.sh +1 -1
  4. package/bin/reinstall_msedge_beta_mac.sh +1 -1
  5. package/bin/reinstall_msedge_dev_mac.sh +1 -1
  6. package/bin/reinstall_msedge_stable_mac.sh +1 -1
  7. package/browsers.json +14 -14
  8. package/index.js +1 -1
  9. package/lib/androidServerImpl.js +4 -2
  10. package/lib/browserServerImpl.js +47 -12
  11. package/lib/cli/program.js +116 -50
  12. package/lib/cli/programWithTestStub.js +1 -1
  13. package/lib/client/android.js +30 -34
  14. package/lib/client/browser.js +54 -17
  15. package/lib/client/browserContext.js +67 -71
  16. package/lib/client/browserType.js +25 -34
  17. package/lib/client/channelOwner.js +20 -24
  18. package/lib/client/connection.js +6 -10
  19. package/lib/client/electron.js +8 -3
  20. package/lib/client/elementHandle.js +18 -21
  21. package/lib/client/fetch.js +5 -3
  22. package/lib/client/frame.js +57 -35
  23. package/lib/client/input.js +3 -1
  24. package/lib/client/jsHandle.js +4 -0
  25. package/lib/client/localUtils.js +0 -1
  26. package/lib/client/locator.js +32 -28
  27. package/lib/client/network.js +5 -12
  28. package/lib/client/page.js +32 -32
  29. package/lib/client/playwright.js +6 -16
  30. package/lib/client/selectors.js +18 -38
  31. package/lib/client/timeoutSettings.js +12 -8
  32. package/lib/client/tracing.js +24 -20
  33. package/lib/client/waiter.js +2 -2
  34. package/lib/client/webSocket.js +4 -22
  35. package/lib/generated/bindingsControllerSource.js +28 -0
  36. package/lib/generated/clockSource.js +1 -1
  37. package/lib/generated/injectedScriptSource.js +1 -1
  38. package/lib/generated/pollingRecorderSource.js +1 -1
  39. package/lib/generated/storageScriptSource.js +28 -0
  40. package/lib/generated/utilityScriptSource.js +1 -1
  41. package/lib/generated/webSocketMockSource.js +12 -50
  42. package/lib/inProcessFactory.js +9 -6
  43. package/lib/outofprocess.js +0 -2
  44. package/lib/protocol/validator.js +423 -346
  45. package/lib/protocol/validatorPrimitives.js +18 -4
  46. package/lib/remote/playwrightConnection.js +29 -166
  47. package/lib/remote/playwrightServer.js +233 -35
  48. package/lib/server/android/android.js +97 -83
  49. package/lib/server/android/backendAdb.js +0 -2
  50. package/lib/server/bidi/bidiBrowser.js +139 -73
  51. package/lib/server/bidi/bidiChromium.js +23 -22
  52. package/lib/server/bidi/bidiExecutionContext.js +2 -1
  53. package/lib/server/bidi/bidiFirefox.js +17 -14
  54. package/lib/server/bidi/bidiInput.js +22 -22
  55. package/lib/server/bidi/bidiNetworkManager.js +8 -11
  56. package/lib/server/bidi/bidiPage.js +42 -86
  57. package/lib/server/bidi/third_party/bidiProtocol.js +5 -133
  58. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  59. package/lib/server/{dispatchers/selectorsDispatcher.js → bidi/third_party/bidiProtocolPermissions.js} +20 -18
  60. package/lib/server/browser.js +30 -21
  61. package/lib/server/browserContext.js +203 -165
  62. package/lib/server/browserType.js +109 -107
  63. package/lib/server/chromium/chromium.js +84 -69
  64. package/lib/server/chromium/chromiumSwitches.js +13 -20
  65. package/lib/server/chromium/crBrowser.js +74 -40
  66. package/lib/server/chromium/crConnection.js +8 -9
  67. package/lib/server/chromium/crCoverage.js +11 -8
  68. package/lib/server/chromium/crDragDrop.js +25 -20
  69. package/lib/server/chromium/crExecutionContext.js +2 -1
  70. package/lib/server/chromium/crInput.js +32 -29
  71. package/lib/server/chromium/crNetworkManager.js +45 -33
  72. package/lib/server/chromium/crPage.js +98 -73
  73. package/lib/server/chromium/crServiceWorker.js +13 -18
  74. package/lib/server/chromium/videoRecorder.js +10 -18
  75. package/lib/server/clock.js +51 -39
  76. package/lib/server/codegen/csharp.js +10 -5
  77. package/lib/server/codegen/java.js +1 -1
  78. package/lib/server/codegen/javascript.js +1 -1
  79. package/lib/server/codegen/jsonl.js +2 -1
  80. package/lib/server/codegen/language.js +22 -1
  81. package/lib/server/codegen/languages.js +4 -4
  82. package/lib/server/codegen/python.js +1 -1
  83. package/lib/server/cookieStore.js +3 -1
  84. package/lib/server/debugController.js +105 -71
  85. package/lib/server/debugger.js +6 -23
  86. package/lib/server/deviceDescriptorsSource.json +237 -127
  87. package/lib/server/dialog.js +50 -6
  88. package/lib/server/dispatchers/androidDispatcher.js +77 -62
  89. package/lib/server/dispatchers/artifactDispatcher.js +18 -18
  90. package/lib/server/dispatchers/browserContextDispatcher.js +141 -91
  91. package/lib/server/dispatchers/browserDispatcher.js +55 -88
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +18 -9
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -4
  94. package/lib/server/dispatchers/debugControllerDispatcher.js +12 -21
  95. package/lib/server/dispatchers/dialogDispatcher.js +4 -4
  96. package/lib/server/dispatchers/dispatcher.js +78 -53
  97. package/lib/server/dispatchers/electronDispatcher.js +19 -20
  98. package/lib/server/dispatchers/elementHandlerDispatcher.js +83 -93
  99. package/lib/server/dispatchers/frameDispatcher.js +99 -102
  100. package/lib/server/dispatchers/jsHandleDispatcher.js +21 -16
  101. package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -4
  102. package/lib/server/dispatchers/localUtilsDispatcher.js +53 -59
  103. package/lib/server/dispatchers/networkDispatchers.js +41 -35
  104. package/lib/server/dispatchers/pageDispatcher.js +156 -107
  105. package/lib/server/dispatchers/playwrightDispatcher.js +37 -25
  106. package/lib/server/dispatchers/streamDispatcher.js +15 -8
  107. package/lib/server/dispatchers/tracingDispatcher.js +22 -13
  108. package/lib/server/dispatchers/webSocketRouteDispatcher.js +46 -35
  109. package/lib/server/dispatchers/writableStreamDispatcher.js +16 -10
  110. package/lib/server/dom.js +198 -266
  111. package/lib/server/download.js +3 -3
  112. package/lib/server/electron/electron.js +96 -103
  113. package/lib/server/electron/loader.js +1 -1
  114. package/lib/server/fetch.js +22 -41
  115. package/lib/server/fileUploadUtils.js +1 -1
  116. package/lib/server/firefox/ffBrowser.js +79 -55
  117. package/lib/server/firefox/ffExecutionContext.js +2 -1
  118. package/lib/server/firefox/ffInput.js +23 -23
  119. package/lib/server/firefox/ffNetworkManager.js +8 -6
  120. package/lib/server/firefox/ffPage.js +39 -36
  121. package/lib/server/firefox/firefox.js +9 -10
  122. package/lib/server/frameSelectors.js +65 -22
  123. package/lib/server/frames.js +516 -544
  124. package/lib/server/har/harRecorder.js +1 -1
  125. package/lib/server/har/harTracer.js +4 -2
  126. package/lib/server/helper.js +3 -7
  127. package/lib/server/index.js +0 -3
  128. package/lib/server/input.js +47 -54
  129. package/lib/server/instrumentation.js +8 -14
  130. package/lib/server/javascript.js +9 -17
  131. package/lib/server/launchApp.js +48 -30
  132. package/lib/server/localUtils.js +45 -38
  133. package/lib/server/network.js +44 -10
  134. package/lib/server/page.js +233 -178
  135. package/lib/server/pageBinding.js +6 -7
  136. package/lib/server/playwright.js +4 -14
  137. package/lib/server/progress.js +57 -49
  138. package/lib/server/recorder/recorderApp.js +298 -95
  139. package/lib/server/recorder/recorderRunner.js +23 -24
  140. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  141. package/lib/server/recorder/recorderUtils.js +67 -10
  142. package/lib/server/recorder.js +284 -146
  143. package/lib/server/registry/index.js +83 -48
  144. package/lib/server/registry/nativeDeps.js +175 -0
  145. package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
  146. package/lib/server/screenshotter.js +84 -83
  147. package/lib/server/selectors.js +12 -12
  148. package/lib/server/socksClientCertificatesInterceptor.js +198 -136
  149. package/lib/server/trace/recorder/snapshotter.js +12 -19
  150. package/lib/server/trace/recorder/tracing.js +36 -27
  151. package/lib/server/trace/viewer/traceViewer.js +11 -20
  152. package/lib/server/transport.js +20 -22
  153. package/lib/server/utils/comparators.js +2 -2
  154. package/lib/server/utils/debug.js +3 -8
  155. package/lib/server/utils/debugLogger.js +8 -0
  156. package/lib/server/utils/hostPlatform.js +3 -1
  157. package/lib/server/utils/network.js +35 -25
  158. package/lib/server/utils/nodePlatform.js +1 -1
  159. package/lib/server/utils/processLauncher.js +4 -1
  160. package/lib/server/utils/wsServer.js +11 -17
  161. package/lib/server/webkit/webkit.js +5 -2
  162. package/lib/server/webkit/wkBrowser.js +51 -28
  163. package/lib/server/webkit/wkExecutionContext.js +2 -1
  164. package/lib/server/webkit/wkInput.js +25 -25
  165. package/lib/server/webkit/wkInterceptableRequest.js +1 -1
  166. package/lib/server/webkit/wkPage.js +80 -59
  167. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  168. package/lib/server/webkit/wkWorkers.js +7 -7
  169. package/lib/utils/isomorphic/ariaSnapshot.js +13 -7
  170. package/lib/utils/isomorphic/cssParser.js +1 -2
  171. package/lib/utils/isomorphic/locatorGenerators.js +18 -0
  172. package/lib/utils/isomorphic/manualPromise.js +1 -2
  173. package/lib/utils/isomorphic/mimeType.js +1 -2
  174. package/lib/utils/isomorphic/multimap.js +1 -2
  175. package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +248 -0
  176. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  177. package/lib/utils/isomorphic/protocolMetainfo.js +318 -0
  178. package/lib/utils/isomorphic/selectorParser.js +3 -4
  179. package/lib/utils/isomorphic/stringUtils.js +3 -24
  180. package/lib/utils/isomorphic/time.js +9 -4
  181. package/lib/utils/isomorphic/timeoutRunner.js +3 -4
  182. package/lib/utils/isomorphic/traceUtils.js +2 -3
  183. package/lib/utils/isomorphic/urlMatch.js +21 -7
  184. package/lib/utils/isomorphic/utilityScriptSerializers.js +208 -205
  185. package/lib/utils.js +8 -2
  186. package/lib/utilsBundleImpl/index.js +160 -150
  187. package/lib/vite/htmlReport/index.html +17 -17
  188. package/lib/vite/recorder/assets/{codeMirrorModule-CXVeovup.js → codeMirrorModule-DzQ0k89p.js} +1 -1
  189. package/lib/vite/recorder/assets/{index-eHBmevrY.css → index-CI4HQ-Zb.css} +1 -1
  190. package/lib/vite/recorder/assets/index-D7C7daHH.js +184 -0
  191. package/lib/vite/recorder/index.html +3 -3
  192. package/lib/vite/traceViewer/assets/{codeMirrorModule-_GLjJL-7.js → codeMirrorModule-Di48jgWx.js} +1 -1
  193. package/lib/vite/traceViewer/assets/defaultSettingsView-szBn8781.js +256 -0
  194. package/lib/vite/traceViewer/defaultSettingsView.DVJHpiGt.css +1 -0
  195. package/lib/vite/traceViewer/index.BFsek2M6.css +1 -0
  196. package/lib/vite/traceViewer/index.DQvXoPLL.js +2 -0
  197. package/lib/vite/traceViewer/index.html +6 -6
  198. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  199. package/lib/vite/traceViewer/uiMode.dBV3oN9h.js +5 -0
  200. package/lib/vite/traceViewer/uiMode.html +4 -4
  201. package/lib/zipBundleImpl.js +4 -4
  202. package/package.json +1 -1
  203. package/types/protocol.d.ts +712 -107
  204. package/types/types.d.ts +148 -37
  205. package/lib/generated/consoleApiSource.js +0 -28
  206. package/lib/protocol/debug.js +0 -211
  207. package/lib/server/recorder/contextRecorder.js +0 -286
  208. package/lib/server/recorder/recorderCollection.js +0 -116
  209. package/lib/server/recorder/recorderFrontend.js +0 -16
  210. package/lib/server/storageScript.js +0 -154
  211. package/lib/server/timeoutSettings.js +0 -89
  212. package/lib/utils/isomorphic/builtins.js +0 -86
  213. package/lib/vite/recorder/assets/index-BsWQsSGl.js +0 -184
  214. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +0 -265
  215. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
  216. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  217. package/lib/vite/traceViewer/index.cFZzK9RN.js +0 -2
  218. package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +0 -5
@@ -23,10 +23,9 @@ __export(pageBinding_exports, {
23
23
  takeBindingHandle: () => takeBindingHandle
24
24
  });
25
25
  module.exports = __toCommonJS(pageBinding_exports);
26
- var import_builtins = require("../utils/isomorphic/builtins");
27
- var import_utilityScriptSerializers = require("../utils/isomorphic/utilityScriptSerializers");
28
- function addPageBinding(bindingName, needsHandle, utilityScriptSerializersFactory, builtins2) {
29
- const { serializeAsCallArgument } = utilityScriptSerializersFactory(builtins2);
26
+ var import_oldUtilityScriptSerializers = require("../utils/isomorphic/oldUtilityScriptSerializers");
27
+ function addPageBinding(bindingName, needsHandle, utilityScriptSerializersFactory) {
28
+ const { serializeAsCallArgument } = utilityScriptSerializersFactory;
30
29
  const binding = globalThis[bindingName];
31
30
  if (!binding || binding.toString().startsWith("(...args) => {")) return;
32
31
  globalThis[bindingName] = (...args) => {
@@ -35,14 +34,14 @@ function addPageBinding(bindingName, needsHandle, utilityScriptSerializersFactor
35
34
  throw new Error(`exposeBindingHandle supports a single argument, ${args.length} received`);
36
35
  let callbacks = me["callbacks"];
37
36
  if (!callbacks) {
38
- callbacks = new builtins2.Map();
37
+ callbacks = /* @__PURE__ */ new Map();
39
38
  me["callbacks"] = callbacks;
40
39
  }
41
40
  const seq = (me["lastSeq"] || 0) + 1;
42
41
  me["lastSeq"] = seq;
43
42
  let handles = me["handles"];
44
43
  if (!handles) {
45
- handles = new builtins2.Map();
44
+ handles = /* @__PURE__ */ new Map();
46
45
  me["handles"] = handles;
47
46
  }
48
47
  const promise = new Promise((resolve, reject) => callbacks.set(seq, { resolve, reject }));
@@ -78,7 +77,7 @@ function deliverBindingResult(arg) {
78
77
  callbacks.delete(arg.seq);
79
78
  }
80
79
  function createPageBindingScript(name, needsHandle) {
81
- return `(${addPageBinding.toString()})(${JSON.stringify(name)}, ${needsHandle}, (${import_utilityScriptSerializers.source}), (${import_builtins.builtins})())`;
80
+ return `(${addPageBinding.toString()})(${JSON.stringify(name)}, ${needsHandle}, (${import_oldUtilityScriptSerializers.source})())`;
82
81
  }
83
82
  // Annotate the CommonJS export names for ESM import in node:
84
83
  0 && (module.exports = {
@@ -22,7 +22,6 @@ __export(playwright_exports, {
22
22
  createPlaywright: () => createPlaywright
23
23
  });
24
24
  module.exports = __toCommonJS(playwright_exports);
25
- var import_utils = require("../utils");
26
25
  var import_android = require("./android/android");
27
26
  var import_backendAdb = require("./android/backendAdb");
28
27
  var import_bidiChromium = require("./bidi/bidiChromium");
@@ -32,11 +31,10 @@ var import_debugController = require("./debugController");
32
31
  var import_electron = require("./electron/electron");
33
32
  var import_firefox = require("./firefox/firefox");
34
33
  var import_instrumentation = require("./instrumentation");
35
- var import_selectors = require("./selectors");
36
34
  var import_webkit = require("./webkit/webkit");
37
35
  class Playwright extends import_instrumentation.SdkObject {
38
36
  constructor(options) {
39
- super({ attribution: {}, instrumentation: (0, import_instrumentation.createInstrumentation)() }, void 0, "Playwright");
37
+ super((0, import_instrumentation.createRootSdkObject)(), void 0, "Playwright");
40
38
  this._allPages = /* @__PURE__ */ new Set();
41
39
  this._allBrowsers = /* @__PURE__ */ new Set();
42
40
  this.options = options;
@@ -45,25 +43,17 @@ class Playwright extends import_instrumentation.SdkObject {
45
43
  onBrowserOpen: (browser) => this._allBrowsers.add(browser),
46
44
  onBrowserClose: (browser) => this._allBrowsers.delete(browser),
47
45
  onPageOpen: (page) => this._allPages.add(page),
48
- onPageClose: (page) => this._allPages.delete(page),
49
- onCallLog: (sdkObject, metadata, logName, message) => {
50
- import_utils.debugLogger.log(logName, message);
51
- }
46
+ onPageClose: (page) => this._allPages.delete(page)
52
47
  }, null);
53
48
  this.chromium = new import_chromium.Chromium(this);
54
- this.bidiChromium = new import_bidiChromium.BidiChromium(this);
55
- this.bidiFirefox = new import_bidiFirefox.BidiFirefox(this);
49
+ this._bidiChromium = new import_bidiChromium.BidiChromium(this);
50
+ this._bidiFirefox = new import_bidiFirefox.BidiFirefox(this);
56
51
  this.firefox = new import_firefox.Firefox(this);
57
52
  this.webkit = new import_webkit.WebKit(this);
58
53
  this.electron = new import_electron.Electron(this);
59
54
  this.android = new import_android.Android(this, new import_backendAdb.AdbBackend());
60
- this.selectors = new import_selectors.Selectors();
61
55
  this.debugController = new import_debugController.DebugController(this);
62
56
  }
63
- async hideHighlight() {
64
- await Promise.all([...this._allPages].map((p) => p.hideHighlight().catch(() => {
65
- })));
66
- }
67
57
  allBrowsers() {
68
58
  return [...this._allBrowsers];
69
59
  }
@@ -18,87 +18,95 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var progress_exports = {};
20
20
  __export(progress_exports, {
21
- ProgressController: () => ProgressController
21
+ ProgressController: () => ProgressController,
22
+ isAbortError: () => isAbortError,
23
+ raceUncancellableOperationWithCleanup: () => raceUncancellableOperationWithCleanup
22
24
  });
23
25
  module.exports = __toCommonJS(progress_exports);
24
26
  var import_errors = require("./errors");
25
27
  var import_utils = require("../utils");
26
28
  var import_manualPromise = require("../utils/isomorphic/manualPromise");
27
29
  class ProgressController {
28
- constructor(metadata, sdkObject) {
30
+ constructor(metadata, onCallLog) {
29
31
  this._forceAbortPromise = new import_manualPromise.ManualPromise();
30
- // Cleanups to be run only in the case of abort.
31
- this._cleanups = [];
32
- this._logName = "api";
32
+ this._donePromise = new import_manualPromise.ManualPromise();
33
33
  this._state = "before";
34
- this._deadline = 0;
35
- this._timeout = 0;
36
- this.metadata = metadata;
37
- this.sdkObject = sdkObject;
38
- this.instrumentation = sdkObject.instrumentation;
34
+ this.metadata = metadata || { id: "", startTime: 0, endTime: 0, type: "Internal", method: "", params: {}, log: [], internal: true };
35
+ this._onCallLog = onCallLog;
39
36
  this._forceAbortPromise.catch((e) => null);
40
37
  }
41
- setLogName(logName) {
42
- this._logName = logName;
43
- }
44
- abort(error) {
45
- this._forceAbortPromise.reject(error);
38
+ async abort(error) {
39
+ if (this._state === "running") {
40
+ error[kAbortErrorSymbol] = true;
41
+ this._state = { error };
42
+ this._forceAbortPromise.reject(error);
43
+ }
44
+ await this._donePromise;
46
45
  }
47
46
  async run(task, timeout) {
48
- if (timeout) {
49
- this._timeout = timeout;
50
- this._deadline = timeout ? (0, import_utils.monotonicTime)() + timeout : 0;
51
- }
52
47
  (0, import_utils.assert)(this._state === "before");
53
48
  this._state = "running";
54
- this.sdkObject.attribution.context?._activeProgressControllers.add(this);
55
49
  const progress = {
56
50
  log: (message) => {
57
51
  if (this._state === "running")
58
52
  this.metadata.log.push(message);
59
- this.instrumentation.onCallLog(this.sdkObject, this.metadata, this._logName, message);
60
- },
61
- timeUntilDeadline: () => this._deadline ? this._deadline - (0, import_utils.monotonicTime)() : 2147483647,
62
- // 2^31-1 safe setTimeout in Node.
63
- isRunning: () => this._state === "running",
64
- cleanupWhenAborted: (cleanup) => {
65
- if (this._state === "running")
66
- this._cleanups.push(cleanup);
67
- else
68
- runCleanup(cleanup);
53
+ this._onCallLog?.(message);
69
54
  },
70
- throwIfAborted: () => {
71
- if (this._state === "aborted")
72
- throw new AbortedError();
55
+ metadata: this.metadata,
56
+ race: (promise) => {
57
+ const promises = Array.isArray(promise) ? promise : [promise];
58
+ return Promise.race([...promises, this._forceAbortPromise]);
73
59
  },
74
- metadata: this.metadata
60
+ wait: async (timeout2) => {
61
+ let timer2;
62
+ const promise = new Promise((f) => timer2 = setTimeout(f, timeout2));
63
+ return progress.race(promise).finally(() => clearTimeout(timer2));
64
+ }
75
65
  };
76
- const timeoutError = new import_errors.TimeoutError(`Timeout ${this._timeout}ms exceeded.`);
77
- const timer = setTimeout(() => this._forceAbortPromise.reject(timeoutError), progress.timeUntilDeadline());
66
+ let timer;
67
+ if (timeout) {
68
+ const timeoutError = new import_errors.TimeoutError(`Timeout ${timeout}ms exceeded.`);
69
+ timer = setTimeout(() => {
70
+ if (this._state === "running") {
71
+ timeoutError[kAbortErrorSymbol] = true;
72
+ this._state = { error: timeoutError };
73
+ this._forceAbortPromise.reject(timeoutError);
74
+ }
75
+ }, timeout);
76
+ }
78
77
  try {
79
- const promise = task(progress);
80
- const result = await Promise.race([promise, this._forceAbortPromise]);
78
+ const result = await task(progress);
81
79
  this._state = "finished";
82
80
  return result;
83
- } catch (e) {
84
- this._state = "aborted";
85
- await Promise.all(this._cleanups.splice(0).map(runCleanup));
86
- throw e;
81
+ } catch (error) {
82
+ this._state = { error };
83
+ throw error;
87
84
  } finally {
88
- this.sdkObject.attribution.context?._activeProgressControllers.delete(this);
89
85
  clearTimeout(timer);
86
+ this._donePromise.resolve();
90
87
  }
91
88
  }
92
89
  }
93
- async function runCleanup(cleanup) {
90
+ const kAbortErrorSymbol = Symbol("kAbortError");
91
+ function isAbortError(error) {
92
+ return !!error[kAbortErrorSymbol];
93
+ }
94
+ async function raceUncancellableOperationWithCleanup(progress, run, cleanup) {
95
+ let aborted = false;
94
96
  try {
95
- await cleanup();
96
- } catch (e) {
97
+ return await progress.race(run().then(async (t) => {
98
+ if (aborted)
99
+ await cleanup(t);
100
+ return t;
101
+ }));
102
+ } catch (error) {
103
+ aborted = true;
104
+ throw error;
97
105
  }
98
106
  }
99
- class AbortedError extends Error {
100
- }
101
107
  // Annotate the CommonJS export names for ESM import in node:
102
108
  0 && (module.exports = {
103
- ProgressController
109
+ ProgressController,
110
+ isAbortError,
111
+ raceUncancellableOperationWithCleanup
104
112
  });