UNPKG

react-native-onyx

Version:

State management for React Native

38 lines (37 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionalDependencyNotInstalledError = exports.createModuleProxy = void 0; /** * Create a lazily-imported module proxy. * This is useful for lazily requiring optional dependencies. */ const createModuleProxy = (getModule) => { const holder = { module: undefined }; const proxy = new Proxy(holder, { get: (target, property) => { if (property === '$$typeof') { // If inlineRequires is enabled, Metro will look up all imports // with the $$typeof operator. In this case, this will throw the // `OptionalDependencyNotInstalledError` error because we try to access the module // even though we are not using it (Metro does it), so instead we return undefined // to bail out of inlineRequires here. return undefined; } if (target.module == null) { // lazy initialize module via require() // caller needs to make sure the require() call is wrapped in a try/catch // eslint-disable-next-line no-param-reassign target.module = getModule(); } return target.module[property]; }, }); return proxy; }; exports.createModuleProxy = createModuleProxy; class OptionalDependencyNotInstalledError extends Error { constructor(name) { super(`${name} is not installed!`); } } exports.OptionalDependencyNotInstalledError = OptionalDependencyNotInstalledError;