{
  "version": 3,
  "sources": ["../../../../src/binding-utils/internal/make-value-then-do.ts"],
  "sourcesContent": ["import isPromise from 'is-promise';\n\n/**\n * Runs a function to make a value and then runs a subsequent function.  The subsequent function is run even if an exception is thrown while\n * making the value.  This efficiently handles value generation functions that return promises and that don't.\n */\nexport const makeValueThenDo = <T>(makeValue: () => Promise<T> | T, thenDo: (value?: T) => void): Promise<T> | T => {\n  let value: Promise<T> | T;\n  let makeValueSuccess = false;\n  try {\n    value = makeValue();\n    makeValueSuccess = true;\n  } finally {\n    if (!makeValueSuccess) {\n      thenDo();\n    }\n  }\n\n  if (isPromise(value)) {\n    return (async () => {\n      let awaitValueSuccess = false;\n      try {\n        const output = await value;\n        awaitValueSuccess = true;\n        thenDo(output);\n        return output;\n      } finally {\n        if (!awaitValueSuccess) {\n          thenDo();\n        }\n      }\n    })();\n  } else {\n    thenDo(value);\n    return value;\n  }\n};\n"],
  "mappings": "AAAA,OAAO,eAAe;AAMf,MAAM,kBAAkB,CAAI,WAAiC,WAAgD;AAClH,MAAI;AACJ,MAAI,mBAAmB;AACvB,MAAI;AACF,YAAQ,UAAU;AAClB,uBAAmB;AAAA,EACrB,UAAE;AACA,QAAI,CAAC,kBAAkB;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,UAAU,KAAK,GAAG;AACpB,YAAQ,YAAY;AAClB,UAAI,oBAAoB;AACxB,UAAI;AACF,cAAM,SAAS,MAAM;AACrB,4BAAoB;AACpB,eAAO,MAAM;AACb,eAAO;AAAA,MACT,UAAE;AACA,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,EACL,OAAO;AACL,WAAO,KAAK;AACZ,WAAO;AAAA,EACT;AACF;",
  "names": []
}
