react-native-cloud-storage
Version:
☁️ Save to & read from iCloud and Google Drive using React Native
35 lines (34 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createProxiedNativeModule = void 0;
var _native = require("../types/native");
var _cloudStorageError = _interopRequireDefault(require("./cloud-storage-error"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Creates a proxied native module that wraps thrown errors in a CloudStorageError.
* @param nativeModule The native module to proxy.
* @returns The proxied native module.
*/
const createProxiedNativeModule = nativeModule => {
if (!nativeModule) return null;
return new Proxy(nativeModule, {
get(target, property, receiver) {
const originalValue = Reflect.get(target, property, receiver);
if (typeof originalValue === 'function') {
return async (...arguments_) => {
try {
return await Reflect.apply(originalValue, target, arguments_);
} catch (error) {
const error_ = typeof error === 'object' && error !== null && 'code' in error && typeof error.code === 'string' && Object.values(_native.NativeCloudStorageErrorCode).includes(error.code) ? new _cloudStorageError.default('message' in error && typeof error.message === 'string' ? error.message : 'Unknown error', error.code) : new _cloudStorageError.default('Unknown error', _native.NativeCloudStorageErrorCode.UNKNOWN, error);
throw error_;
}
};
}
return originalValue;
}
});
};
exports.createProxiedNativeModule = createProxiedNativeModule;
//# sourceMappingURL=native.js.map