Sha256: cf2fa36cb4cd64acaabcb46648075f57859c7693f3b8f4540060c7bbdce2e77a

Contents?: true

Size: 1.01 KB

Versions: 26

Compression:

Stored size: 1.01 KB

Contents

import { until } from '@open-draft/until'

/**
 * Intercepts and defers any requests on the page
 * until the Service Worker instance is ready.
 * Must only be used in a browser.
 */
export function deferNetworkRequestsUntil(predicatePromise: Promise<any>) {
  // Defer any `XMLHttpRequest` requests until the Service Worker is ready.
  const originalXhrSend = window.XMLHttpRequest.prototype.send
  window.XMLHttpRequest.prototype.send = function (
    ...args: Parameters<XMLHttpRequest['send']>
  ) {
    // Keep this function synchronous to comply with `XMLHttpRequest.prototype.send`,
    // because that method is always synchronous.
    until(() => predicatePromise).then(() => {
      window.XMLHttpRequest.prototype.send = originalXhrSend
      this.send(...args)
    })
  }

  // Defer any `fetch` requests until the Service Worker is ready.
  const originalFetch = window.fetch
  window.fetch = async (...args) => {
    await until(() => predicatePromise)
    window.fetch = originalFetch
    return window.fetch(...args)
  }
}

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.25 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.24 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.23 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.22 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.21 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.20 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.19 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.18 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.17 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.16 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.15 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.14 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.13 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.12 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.11 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.10 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.9 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.8 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts
clapton-0.0.7 lib/clapton/javascripts/node_modules/msw/src/browser/utils/deferNetworkRequestsUntil.ts