{"ast":null,"code":"import { CodedError } from '@unimodules/react-native-adapter';\nimport compareVersions from 'compare-versions';\nvar postedWarnings = {};\nexport default function deprecate(library, deprecatedAPI) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var currentVersion = options.currentVersion,\n      versionToRemove = options.versionToRemove,\n      replacement = options.replacement;\n  var code = codeFromLibrary(library);\n  var key = code + \":\" + deprecatedAPI + \":\" + replacement;\n\n  if (!postedWarnings[key]) {\n    postedWarnings[key] = true;\n  }\n\n  if (!currentVersion || !versionToRemove || compareVersions(currentVersion, versionToRemove) >= 0) {\n    var _message = \"`\" + deprecatedAPI + \"` has been removed\";\n\n    if (versionToRemove) {\n      _message = _message + \" as of version \\\"\" + versionToRemove + \"\\\"\";\n    }\n\n    if (replacement && replacement.length) {\n      _message = _message + \" please migrate to: `\" + replacement + \"`\";\n    }\n\n    throw new CodedError(\"ERR_DEPRECATED_API\", prependLibrary(library, _message));\n  }\n\n  var message = \"`\" + deprecatedAPI + \"` has been deprecated\";\n\n  if (replacement && replacement.length) {\n    message = message + \" in favor of `\" + replacement + \"`\";\n  }\n\n  if (versionToRemove && versionToRemove.length) {\n    message = message + \" and will be removed in version \\\"\" + versionToRemove + \"\\\"\";\n  }\n\n  console.warn(prependLibrary(library, message));\n}\n\nfunction prependLibrary(library, message) {\n  return library + \": \" + message;\n}\n\nfunction codeFromLibrary(library) {\n  var code = library.replace(/[-.]/g, '_').toUpperCase();\n  return code;\n}","map":{"version":3,"sources":["../src/deprecate.ts"],"names":[],"mappings":"AAAA,SAAS,UAAT,QAA2B,kCAA3B;AACA,OAAO,eAAP,MAA4B,kBAA5B;AAEA,IAAM,cAAc,GAA+B,EAAnD;AAKA,eAAc,SAAU,SAAV,CACZ,OADY,EAEZ,aAFY,EAON;AAAA,MAJN,OAIM,uEAAF,EAAE;AAAA,MAEE,cAFF,GAEmD,OAFnD,CAEE,cAFF;AAAA,MAEkB,eAFlB,GAEmD,OAFnD,CAEkB,eAFlB;AAAA,MAEmC,WAFnC,GAEmD,OAFnD,CAEmC,WAFnC;AAGN,MAAM,IAAI,GAAG,eAAe,CAAC,OAAD,CAA5B;AACA,MAAM,GAAG,GAAM,IAAN,SAAc,aAAd,SAA+B,WAAxC;;AACA,MAAI,CAAC,cAAc,CAAC,GAAD,CAAnB,EAA0B;AACxB,IAAA,cAAc,CAAC,GAAD,CAAd,GAAsB,IAAtB;AACD;;AAED,MACE,CAAC,cAAD,IACA,CAAC,eADD,IAEA,eAAe,CAAC,cAAD,EAAiB,eAAjB,CAAf,IAAoD,CAHtD,EAIE;AACA,QAAI,QAAO,SAAQ,aAAR,uBAAX;;AACA,QAAI,eAAJ,EAAqB;AACnB,MAAA,QAAO,GAAM,QAAN,yBAAgC,eAAhC,OAAP;AACD;;AACD,QAAI,WAAW,IAAI,WAAW,CAAC,MAA/B,EAAuC;AACrC,MAAA,QAAO,GAAM,QAAN,6BAAsC,WAAtC,MAAP;AACD;;AAED,UAAM,IAAI,UAAJ,uBAAqC,cAAc,CAAC,OAAD,EAAU,QAAV,CAAnD,CAAN;AACD;;AAED,MAAI,OAAO,SAAQ,aAAR,0BAAX;;AACA,MAAI,WAAW,IAAI,WAAW,CAAC,MAA/B,EAAuC;AACrC,IAAA,OAAO,GAAM,OAAN,sBAA+B,WAA/B,MAAP;AACD;;AACD,MAAI,eAAe,IAAI,eAAe,CAAC,MAAvC,EAA+C;AAC7C,IAAA,OAAO,GAAM,OAAN,0CAAiD,eAAjD,OAAP;AACD;;AACD,EAAA,OAAO,CAAC,IAAR,CAAa,cAAc,CAAC,OAAD,EAAU,OAAV,CAA3B;AACD;;AAED,SAAS,cAAT,CAAwB,OAAxB,EAAyC,OAAzC,EAAwD;AACtD,SAAU,OAAV,UAAsB,OAAtB;AACD;;AAOD,SAAS,eAAT,CAAyB,OAAzB,EAAwC;AACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAR,CAAgB,OAAhB,EAAyB,GAAzB,EAA8B,WAA9B,EAAb;AACA,SAAO,IAAP;AACD","sourcesContent":["import { CodedError } from '@unimodules/react-native-adapter';\nimport compareVersions from 'compare-versions';\n\nconst postedWarnings: { [key: string]: boolean } = {};\n\n/**\n * Used for deprecating values and throwing an error if a given version of Expo has passed.\n */\nexport default function deprecate(\n  library: string,\n  deprecatedAPI: string,\n  options: {\n    replacement?: string;\n    currentVersion?: string;\n    versionToRemove?: string;\n  } = {}\n): void {\n  const { currentVersion, versionToRemove, replacement } = options;\n  const code = codeFromLibrary(library);\n  const key = `${code}:${deprecatedAPI}:${replacement}`;\n  if (!postedWarnings[key]) {\n    postedWarnings[key] = true;\n  }\n\n  if (\n    !currentVersion ||\n    !versionToRemove ||\n    compareVersions(currentVersion, versionToRemove) >= 0\n  ) {\n    let message = `\\`${deprecatedAPI}\\` has been removed`;\n    if (versionToRemove) {\n      message = `${message} as of version \"${versionToRemove}\"`;\n    }\n    if (replacement && replacement.length) {\n      message = `${message} please migrate to: \\`${replacement}\\``;\n    }\n\n    throw new CodedError(`ERR_DEPRECATED_API`, prependLibrary(library, message));\n  }\n\n  let message = `\\`${deprecatedAPI}\\` has been deprecated`;\n  if (replacement && replacement.length) {\n    message = `${message} in favor of \\`${replacement}\\``;\n  }\n  if (versionToRemove && versionToRemove.length) {\n    message = `${message} and will be removed in version \"${versionToRemove}\"`;\n  }\n  console.warn(prependLibrary(library, message));\n}\n\nfunction prependLibrary(library: string, message: string): string {\n  return `${library}: ${message}`;\n}\n\n/**\n * Transform format:\n * Expo.AR -> EXPO_AR\n * expo-ar -> EXPO_AR\n */\nfunction codeFromLibrary(library: string): string {\n  const code = library.replace(/[-.]/g, '_').toUpperCase();\n  return code;\n}\n"],"sourceRoot":""},"metadata":{},"sourceType":"module"}