{"ast":null,"code":"import compareVersions from 'compare-versions';\nimport { CodedError } from \"./errors/CodedError\";\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 if (!postedWarnings[key]) {\n postedWarnings[key] = true;\n }\n if (!currentVersion || !versionToRemove || compareVersions(currentVersion, versionToRemove) >= 0) {\n var _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 throw new CodedError(\"ERR_DEPRECATED_API\", prependLibrary(library, _message));\n }\n var 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}\nfunction prependLibrary(library, message) {\n return library + \": \" + message;\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,OAAO,eAAe,MAAM,kBAAkB;AAE9C,SAAS,UAAU;AAEnB,IAAM,cAAc,GAA+B,CAAA,CAAE;AAKrD,eAAc,SAAU,SAAS,CAC/B,OAAe,EACf,aAAqB,EAKf;EAAA,IAJN,OAAA,uEAII,CAAA,CAAE;EAEN,IAAQ,cAAc,GAAmC,OAAO,CAAxD,cAAc;IAAE,eAAe,GAAkB,OAAO,CAAxC,eAAe;IAAE,WAAW,GAAK,OAAO,CAAvB,WAAW;EACpD,IAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC;EACrC,IAAM,GAAG,GAAM,IAAI,SAAI,aAAa,SAAI,WAAa;EACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;IACxB,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;EAC3B;EAED,IACE,CAAC,cAAc,IACf,CAAC,eAAe,IAChB,eAAe,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,CAAC,EACrD;IACA,IAAI,QAAO,SAAQ,aAAa,uBAAqB;IACrD,IAAI,eAAe,EAAE;MACnB,QAAO,GAAM,QAAO,yBAAmB,eAAe,OAAG;IAC1D;IACD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;MACrC,QAAO,GAAM,QAAO,6BAAyB,WAAW,MAAI;IAC7D;IAED,MAAM,IAAI,UAAU,uBAAuB,cAAc,CAAC,OAAO,EAAE,QAAO,CAAC,CAAC;EAC7E;EAED,IAAI,OAAO,SAAQ,aAAa,0BAAwB;EACxD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;IACrC,OAAO,GAAM,OAAO,sBAAkB,WAAW,MAAI;EACtD;EACD,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,EAAE;IAC7C,OAAO,GAAM,OAAO,0CAAoC,eAAe,OAAG;EAC3E;EACD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD;AAEA,SAAS,cAAc,CAAC,OAAe,EAAE,OAAe,EAAA;EACtD,OAAU,OAAO,UAAK,OAAO;AAC/B;AAOA,SAAS,eAAe,CAAC,OAAe,EAAA;EACtC,IAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;EACxD,OAAO,IAAI;AACb","sourcesContent":["import compareVersions from 'compare-versions';\n\nimport { CodedError } from './errors/CodedError';\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"}