{
  "version": 3,
  "sources": ["../../../src/internal-utils/make-value-then-do.ts"],
  "sourcesContent": ["import isPromise from 'is-promise';\n\nimport type { TypeOrPromisedType } from '../resolveable/types';\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: () => TypeOrPromisedType<T>, thenDo: (value?: T) => void): TypeOrPromisedType<void> => {\n  let value: TypeOrPromisedType<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      } finally {\n        if (!awaitValueSuccess) {\n          thenDo();\n        }\n      }\n    })();\n  } else {\n    thenDo(value);\n  }\n};\n"],
  "mappings": "AAAA,OAAO,eAAe;AAQf,MAAM,kBAAkB,CAAI,WAAwC,WAA0D;AACnI,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;AAAA,MACf,UAAE;AACA,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,GAAG;AAAA,EACL,OAAO;AACL,WAAO,KAAK;AAAA,EACd;AACF;",
  "names": []
}
