MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/utils/cjs/promisebuffer.js.map
{"version":3,"file":"promisebuffer.js","sources":["../../src/promisebuffer.ts"],"sourcesContent":["import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n  // exposes the internal array so tests can assert on the state of it.\n  // XXX: this really should not be public api.\n  $: Array<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\n\n  function isReady(): boolean {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T> {\n    return buffer.splice(buffer.indexOf(task), 1)[0];\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise<boolean>((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n"],"names":["rejectedSyncPromise","SentryError","SyncPromise","resolvedSyncPromise"],"mappings":";;;;;AAWA;AACA;AACA;AACA;AACA,SAAA,iBAAA,CAAA,KAAA,EAAA;AACA,EAAA,MAAA,MAAA,GAAA,EAAA,CAAA;AACA;AACA,EAAA,SAAA,OAAA,GAAA;AACA,IAAA,OAAA,KAAA,KAAA,SAAA,IAAA,MAAA,CAAA,MAAA,GAAA,KAAA,CAAA;AACA,GAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAA,MAAA,CAAA,IAAA,EAAA;AACA,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,GAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAA,GAAA,CAAA,YAAA,EAAA;AACA,IAAA,IAAA,CAAA,OAAA,EAAA,EAAA;AACA,MAAA,OAAAA,+BAAA,CAAA,IAAAC,iBAAA,CAAA,sDAAA,CAAA,CAAA,CAAA;AACA,KAAA;AACA;AACA;AACA,IAAA,MAAA,IAAA,GAAA,YAAA,EAAA,CAAA;AACA,IAAA,IAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,EAAA;AACA,MAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACA,KAAA;AACA,IAAA,KAAA,IAAA;AACA,OAAA,IAAA,CAAA,MAAA,MAAA,CAAA,IAAA,CAAA,CAAA;AACA;AACA;AACA;AACA,OAAA,IAAA,CAAA,IAAA,EAAA;AACA,QAAA,MAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAA,MAAA;AACA;AACA,SAAA,CAAA;AACA,OAAA,CAAA;AACA,IAAA,OAAA,IAAA,CAAA;AACA,GAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAA,KAAA,CAAA,OAAA,EAAA;AACA,IAAA,OAAA,IAAAC,uBAAA,CAAA,CAAA,OAAA,EAAA,MAAA,KAAA;AACA,MAAA,IAAA,OAAA,GAAA,MAAA,CAAA,MAAA,CAAA;AACA;AACA,MAAA,IAAA,CAAA,OAAA,EAAA;AACA,QAAA,OAAA,OAAA,CAAA,IAAA,CAAA,CAAA;AACA,OAAA;AACA;AACA;AACA,MAAA,MAAA,kBAAA,GAAA,UAAA,CAAA,MAAA;AACA,QAAA,IAAA,OAAA,IAAA,OAAA,GAAA,CAAA,EAAA;AACA,UAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AACA,SAAA;AACA,OAAA,EAAA,OAAA,CAAA,CAAA;AACA;AACA;AACA,MAAA,MAAA,CAAA,OAAA,CAAA,IAAA,IAAA;AACA,QAAA,KAAAC,+BAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,MAAA;AACA,UAAA,IAAA,CAAA,EAAA,OAAA,EAAA;AACA,YAAA,YAAA,CAAA,kBAAA,CAAA,CAAA;AACA,YAAA,OAAA,CAAA,IAAA,CAAA,CAAA;AACA,WAAA;AACA,SAAA,EAAA,MAAA,CAAA,CAAA;AACA,OAAA,CAAA,CAAA;AACA,KAAA,CAAA,CAAA;AACA,GAAA;AACA;AACA,EAAA,OAAA;AACA,IAAA,CAAA,EAAA,MAAA;AACA,IAAA,GAAA;AACA,IAAA,KAAA;AACA,GAAA,CAAA;AACA;;;;"}