{"version":3,"sources":["jsdelivr-header.js","/npm/appcenter-crashes@5.0.3/Crashes.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACHA,MAAM,YAAc,QAAQ,gBACtB,aAAe,QAAQ,4BAEvB,4BAAE,6BAAgC,YAAY,cAC9C,oBAAsB,IAAI,YAAY,mBAAmB,6BAEzD,QAAU,mBACV,qBAAuB,sCACvB,wBAA0B,yCAC1B,qBAAuB,sCAG7B,IAAI,0BAA4B,OAChC,MAAM,gBAAkB,GAElB,iBAAmB,CACrB,UAAW,EACX,KAAM,EACN,YAAa,GAGX,mBAAqB,CAGvB,mBAAkB,CAAC,EAAM,KACd,CAAE,OAAM,aAInB,qBAAoB,CAAC,EAAM,EAAU,KAC1B,CAAE,OAAM,WAAU,iBAI3B,QAAU,CAGZ,kBAAiB,IACN,4BAA4B,oBAIvC,wBAAuB,IACZ,4BAA4B,0BAIvC,uBAAsB,IACX,4BAA4B,yBAIvC,sCAAqC,IAC1B,4BAA4B,wCAIvC,UAAS,IACE,4BAA4B,YAIvC,WAAW,GACA,4BAA4B,WAAW,GAIlD,WAAU,CAAC,EAAO,EAAY,IACnB,4BAA4B,eAAe,EAAO,mBAAmB,GAAa,mBAAmB,IAGhH,sBAAA,CAAuB,GACnB,OAAQ,GACJ,KAAK,iBAAiB,UACtB,KAAK,iBAAiB,KACtB,KAAK,iBAAiB,YAClB,4BAA4B,2BAA2B,GACvD,MAEJ,QAEI,YADA,aAAa,MAAM,QAAS,4DAGhC,IAAqB,iBAAiB,WACtC,OAAO,sBAEf,EAEA,WAAA,CAAY,GACR,oBAAoB,mBAAmB,sBACvC,oBAAoB,mBAAmB,yBACvC,oBAAoB,mBAAmB,sBAClC,IAGD,EAAY,iBACZ,oBAAoB,YAAY,qBAAsB,EAAY,iBAElE,EAAY,oBACZ,oBAAoB,YAAY,wBAAyB,EAAY,oBAErE,EAAY,iBACZ,oBAAoB,YAAY,qBAAsB,EAAY,iBAEtE,0BAA4B,EAAY,oBACxC,QAAQ,YACP,MAAM,IACH,GAAI,EACA,OAAO,4BAA4B,6BAEvC,MAAM,IAAI,MAAM,kCAAkC,IAErD,MAAM,IACH,GAAI,EAAQ,OAAS,EAAG,CACpB,MAAM,EAAoB,GAQ1B,OAPA,EAAQ,SAAS,IACR,EAAY,gBACV,EAAY,cAAc,KAC7B,gBAAgB,KAAK,GACrB,EAAkB,KAAK,EAAO,IAClC,IAEG,4BAA4B,sDAAsD,EAC7F,CACA,MAAM,IAAI,MAAM,sCAAsC,IAEzD,MAAM,IACC,EACA,OAAO,uBACC,EAAY,6BAAgC,EAAY,+BAChE,QAAQ,uBAAuB,iBAAiB,KACpD,IAEH,OAAO,GAAU,QAAQ,IAAI,EAAM,WACxC,GAGE,OAAS,CACX,oBAAA,GACS,4BAGL,gBAAgB,SAAS,IACrB,QAAQ,QAAQ,0BAA0B,IACzC,MAAM,GAAgB,4BAA4B,qBAAqB,EAAa,EAAO,MAC3F,OAAO,GAAU,aAAa,MAAM,QAAS,4CAA4C,MAAS,IAIvG,gBAAgB,OAAS,EAC7B,GA4BJ,SAAS,mBAAmB,GACxB,GAAc,OAAV,EAGJ,OAAO,CACX,CA7BA,QAAQ,iBAAmB,iBAC3B,QAAQ,mBAAqB,mBAC7B,QAAQ,eAAiB,MACrB,eAAiB,yBAEjB,WAAA,CAAY,EAAM,EAAS,GACvB,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,WAAa,CACtB,CAGA,sBAAO,CAAgB,GACnB,OAAO,IAAI,KAAK,EAAM,KAAM,EAAM,QAAS,EAAM,MACrD,CAEA,+BAAO,CAAyB,EAAM,EAAS,GAC3C,OAAO,IAAI,KAAK,EAAM,EAAS,EACnC,GAIJ,OAAO,QAAU","file":"/npm/appcenter-crashes@5.0.3/Crashes.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/appcenter-crashes@5.0.3/Crashes.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nconst ReactNative = require('react-native');\nconst AppCenterLog = require('appcenter/appcenter-log');\n\nconst { AppCenterReactNativeCrashes } = ReactNative.NativeModules;\nconst crashesEventEmitter = new ReactNative.NativeEventEmitter(AppCenterReactNativeCrashes);\n\nconst LOG_TAG = 'AppCenterCrashes';\nconst EVENT_BEFORE_SENDING = 'AppCenterErrorReportOnBeforeSending';\nconst EVENT_SENDING_SUCCEEDED = 'AppCenterErrorReportOnSendingSucceeded';\nconst EVENT_SENDING_FAILED = 'AppCenterErrorReportOnSendingFailed';\n\n// This is set later if and when the user provides a value for the getErrorAttachments callback\nlet getErrorAttachmentsMethod = () => { };\nconst filteredReports = [];\n\nconst UserConfirmation = {\n    DONT_SEND: 0,\n    SEND: 1,\n    ALWAYS_SEND: 2\n};\n\nconst ErrorAttachmentLog = {\n\n    // Create text attachment for an error report\n    attachmentWithText(text, fileName) {\n        return { text, fileName };\n    },\n\n    // Create binary attachment for an error report, binary must be passed as a base64 string\n    attachmentWithBinary(data, fileName, contentType) {\n        return { data, fileName, contentType };\n    }\n};\n\nconst Crashes = {\n\n    // async - returns a Promise\n    generateTestCrash() {\n        return AppCenterReactNativeCrashes.generateTestCrash();\n    },\n\n    // async - returns a Promise\n    hasCrashedInLastSession() {\n        return AppCenterReactNativeCrashes.hasCrashedInLastSession();\n    },\n\n    // async - returns a Promise\n    lastSessionCrashReport() {\n        return AppCenterReactNativeCrashes.lastSessionCrashReport();\n    },\n\n    // async - returns a Promise\n    hasReceivedMemoryWarningInLastSession() {\n        return AppCenterReactNativeCrashes.hasReceivedMemoryWarningInLastSession();\n    },\n\n    // async - returns a Promise\n    isEnabled() {\n        return AppCenterReactNativeCrashes.isEnabled();\n    },\n\n    // async - returns a Promise\n    setEnabled(shouldEnable) {\n        return AppCenterReactNativeCrashes.setEnabled(shouldEnable);\n    },\n\n    // Error value should have type `ExceptionModel`.\n    trackError(error, properties, attachments) {\n        return AppCenterReactNativeCrashes.trackException(error, sanitizeProperties(properties), sanitizeProperties(attachments));\n    },\n\n    notifyUserConfirmation(userConfirmation) {\n        switch (userConfirmation) {\n            case UserConfirmation.DONT_SEND:\n            case UserConfirmation.SEND:\n            case UserConfirmation.ALWAYS_SEND:\n                AppCenterReactNativeCrashes.notifyWithUserConfirmation(userConfirmation);\n                break;\n\n            default:\n                AppCenterLog.error(LOG_TAG, 'Crashes.notifyUserConfirmation: Invalid parameter value.');\n                return;\n        }\n        if (userConfirmation !== UserConfirmation.DONT_SEND) {\n            Helper.sendErrorAttachments();\n        }\n    },\n\n    setListener(listenerMap) {\n        crashesEventEmitter.removeAllListeners(EVENT_BEFORE_SENDING);\n        crashesEventEmitter.removeAllListeners(EVENT_SENDING_SUCCEEDED);\n        crashesEventEmitter.removeAllListeners(EVENT_SENDING_FAILED);\n        if (!listenerMap) {\n            return;\n        }\n        if (listenerMap.onBeforeSending) {\n            crashesEventEmitter.addListener(EVENT_BEFORE_SENDING, listenerMap.onBeforeSending);\n        }\n        if (listenerMap.onSendingSucceeded) {\n            crashesEventEmitter.addListener(EVENT_SENDING_SUCCEEDED, listenerMap.onSendingSucceeded);\n        }\n        if (listenerMap.onSendingFailed) {\n            crashesEventEmitter.addListener(EVENT_SENDING_FAILED, listenerMap.onSendingFailed);\n        }\n        getErrorAttachmentsMethod = listenerMap.getErrorAttachments;\n        Crashes.isEnabled()\n        .then((isEnabled) => {\n            if (isEnabled) {\n                return AppCenterReactNativeCrashes.getUnprocessedCrashReports();\n            }\n            throw new Error('Crashes service is not enabled.');\n        })\n        .then((reports) => {\n            if (reports.length > 0) {\n                const filteredReportIds = [];\n                reports.forEach((report) => {\n                    if (!listenerMap.shouldProcess\n                        || listenerMap.shouldProcess(report)) {\n                        filteredReports.push(report);\n                        filteredReportIds.push(report.id);\n                    }\n                });\n                return AppCenterReactNativeCrashes.sendCrashReportsOrAwaitUserConfirmationForFilteredIds(filteredReportIds);\n            }\n            throw new Error('No unprocessed crash reports found.');\n        })\n        .then((alwaysSend) => {\n            if (alwaysSend) {\n                Helper.sendErrorAttachments();\n            } else if (!listenerMap.shouldAwaitUserConfirmation || !listenerMap.shouldAwaitUserConfirmation()) {\n                Crashes.notifyUserConfirmation(UserConfirmation.SEND);\n            }\n        })\n        .catch((error) => console.log(error.message));\n    }\n};\n\nconst Helper = {\n    sendErrorAttachments() {\n        if (!getErrorAttachmentsMethod) {\n            return;\n        }\n        filteredReports.forEach((report) => {\n            Promise.resolve(getErrorAttachmentsMethod(report))\n            .then((attachments) => AppCenterReactNativeCrashes.sendErrorAttachments(attachments, report.id))\n            .catch((error) => AppCenterLog.error(LOG_TAG, `Could not send error attachments. Error: ${error}`));\n        });\n\n        // Prevent multipe calls if shouldAwaitUserConfirmation is false and user calling notifyUserConfirmation for some reason\n        filteredReports.length = 0;\n    }\n};\n\n// Exports with \"curly braces\".\nCrashes.UserConfirmation = UserConfirmation;\nCrashes.ErrorAttachmentLog = ErrorAttachmentLog;\nCrashes.ExceptionModel = class {\n    wrapperSdkName = 'appcenter.react-native';\n\n    constructor(type, message, stack) {\n        this.type = type;\n        this.message = message;\n        this.stackTrace = stack;\n    }\n\n    // Error value should have Error type.\n    static createFromError(error) {\n        return new this(error.name, error.message, error.stack);\n    }\n\n    static createFromTypeAndMessage(type, message, stacktrace) {\n        return new this(type, message, stacktrace);\n    }\n};\n\n// Export main class without \"curly braces\".\nmodule.exports = Crashes;\n\nfunction sanitizeProperties(props) {\n    if (props === null) {\n        return undefined;\n    }\n    return props;\n}\n"]}