{"version":3,"sources":["jsdelivr-header.js","/npm/testdouble-only-when@1.1.0/dist/bundle.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAIA,SAAS,gBAAiB,GAAM,OAAQ,GAAqB,iBAAP,GAAoB,YAAa,EAAM,EAAY,QAAI,CAAI,CAFjH,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IAItD,IAAI,GAAK,gBAAgB,QAAQ,eAC7B,UAAY,gBAAgB,QAAQ,mCAExC,MAAM,sBAAyB,GAC7B,UACG,IAAI,GACJ,KAAK,GAAM,EAAE,YACb,QAAO,CAAC,EAAG,IAAM,EAAI,GAAG,GAEvB,iBAAoB,IACxB,MAAM,EAAa,GAAG,WACtB,UAAU,IAAI,GAAM,SAAS,IAC3B,MAAM,KAAE,EAAI,OAAE,EAAM,cAAE,GAAkB,EACxC,GAAG,KAAK,KAAc,GAAO,GAAQ,EAAO,SAAS,EAAc,IAErE,IAEE,GACF,CAAE,MAAO,GAAI,CACb,GAAG,UAAK,EAAW,CAAE,iBAAiB,IAAQ,QAAO,IAAI,KACvD,MAAM,EAAc,sBAAsB,GACpC,EAAa,KAAc,GAEjC,GADmB,sBAAsB,GACxB,EAAa,OAAO,EACrC,MAAM,IAAI,MACR,wDACE,GAAG,QAAQ,GAAY,YAC3B,GACA,EAGE,aAAe,CAAC,EAAc,IAAY,IAAI,KAClD,MAAM,EAAO,GAAG,UAAK,EAAW,GAAS,MAAiB,GAE1D,OADA,iBAAiB,GACV,GAGH,kBAAoB,CACxB,aACA,YACA,cACA,SACA,aACA,gBAGI,SAAW,CAAC,EAA2B,IAKpC,kBAAkB,QAJL,CAAC,EAAQ,KAC3B,EAAO,GAAY,aAAa,EAAU,GACnC,IAEoC,CAAC,GAGhD,QAAQ,iBAAmB,iBAC3B,QAAQ,SAAW","file":"/npm/testdouble-only-when@1.1.0/dist/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/testdouble-only-when@1.1.0/dist/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar td = _interopDefault(require('testdouble'));\nvar stubbings = _interopDefault(require('testdouble/lib/store/stubbings'));\n\nconst countCallsToStubbings = (stub) =>\n  stubbings\n    .for(stub)\n    .map((x) => x.callCount)\n    .reduce((a, b) => a + b, 0);\n\nconst failOnOtherCalls = (stub) => {\n  const shadowStub = td.function();\n  stubbings.for(stub).forEach((stubbing) => {\n    const { args, config, stubbedValues } = stubbing;\n    td.when(shadowStub(...args), config)[config.plan](...stubbedValues);\n  });\n  try {\n    // try-catch this for stubs that throw immediately\n    stub();\n  } catch (e) {}\n  td.when(undefined, { ignoreExtraArgs: true }).thenDo((...args) => {\n    const callsBefore = countCallsToStubbings(shadowStub);\n    const fromShadow = shadowStub(...args);\n    const callsAfter = countCallsToStubbings(shadowStub);\n    if (callsAfter > callsBefore) return fromShadow\n    throw new Error(\n      'You invoked a test double in an unexpected fashion.\\n' +\n        td.explain(shadowStub).description\n    )\n  });\n};\n\nconst stubStrictly = (behaviorName, options) => (...returnValues) => {\n  const stub = td.when(undefined, options)[behaviorName](...returnValues);\n  failOnOtherCalls(stub);\n  return stub\n};\n\nconst stubbingBehaviors = [\n  'thenReturn',\n  'thenThrow',\n  'thenResolve',\n  'thenDo',\n  'thenReject',\n  'thenCallback'\n];\n\nconst onlyWhen = (__returnValueOfCallToStub, options) => {\n  const addBehavior = (result, behavior) => {\n    result[behavior] = stubStrictly(behavior, options);\n    return result\n  };\n  return stubbingBehaviors.reduce(addBehavior, {})\n};\n\nexports.failOnOtherCalls = failOnOtherCalls;\nexports.onlyWhen = onlyWhen;\n"]}