{"version":3,"file":"timeout.cjs","names":[],"sources":["../../src/common/timeout.ts"],"sourcesContent":["/**\n * Slightliy enhanced setTimeout to avoid garbage collection issues.\n * Returns a dispose function.\n *\n * Discussion see\n * https://jakearchibald.com/2024/garbage-collection-and-closures/\n * https://news.ycombinator.com/item?id=41111062\n */\nexport function safeTimeout(fn: () => void, delay = 0, unref = false): () => void {\n  let timerId: any\n\n  const disposeTimer = () => {\n    clearTimeout(timerId)\n    timerId = undefined\n  }\n\n  timerId = setTimeout(() => {\n    fn()\n    disposeTimer()\n  }, delay)\n\n  if (unref)\n    timerId.unref?.()\n\n  return disposeTimer\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,YAAY,IAAgB,QAAQ,GAAG,QAAQ,OAAmB;CAChF,IAAI;CAEJ,MAAM,qBAAqB;AACzB,eAAa,QAAQ;AACrB,YAAU;;AAGZ,WAAU,iBAAiB;AACzB,MAAI;AACJ,gBAAc;IACb,MAAM;AAET,KAAI,MACF,SAAQ,SAAS;AAEnB,QAAO"}