1{"version":3,"file":"withStaticPlugin.js","names":["EXPO_DEBUG","boolish","EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS","EXPO_USE_UNVERSIONED_PLUGINS","isModuleMissingError","name","error","includes","code","message","isUnexpectedTokenError","SyntaxError","PluginError","match","withStaticPlugin","config","props","projectRoot","_internal","assertInternalProjectRoot","pluginResolve","pluginProps","normalizeStaticPlugin","plugin","assert","_resolverError","withPlugin","resolveConfigPluginFunction","_isLegacyPlugin","fallback","console","log","shouldMuteWarning"],"sources":["../../src/plugins/withStaticPlugin.ts"],"sourcesContent":["import assert from 'assert';\nimport { boolish } from 'getenv';\n\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\nimport {\n  assertInternalProjectRoot,\n  normalizeStaticPlugin,\n  resolveConfigPluginFunction,\n} from '../utils/plugin-resolver';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\n// Show all error info related to plugin resolution.\nconst EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = boolish('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false);\n// Force using the fallback unversioned plugin instead of a local versioned copy,\n// this should only be used for testing the CLI.\nconst EXPO_USE_UNVERSIONED_PLUGINS = boolish('EXPO_USE_UNVERSIONED_PLUGINS', false);\n\nfunction isModuleMissingError(name: string, error: Error): boolean {\n  // @ts-ignore\n  if (['MODULE_NOT_FOUND', 'PLUGIN_NOT_FOUND'].includes(error.code)) {\n    return true;\n  }\n  return error.message.includes(`Cannot find module '${name}'`);\n}\n\nfunction isUnexpectedTokenError(error: Error): boolean {\n  if (\n    error instanceof SyntaxError ||\n    (error instanceof PluginError && error.code === 'INVALID_PLUGIN_IMPORT')\n  ) {\n    return (\n      // These are the most common errors that'll be thrown when a package isn't transpiled correctly.\n      !!error.message.match(/Unexpected token/) ||\n      !!error.message.match(/Cannot use import statement/)\n    );\n  }\n  return false;\n}\n\n/**\n * Resolves static module plugin and potentially falls back on a provided plugin if the module cannot be resolved\n *\n * @param config\n * @param fallback Plugin with `_resolverError` explaining why the module couldn't be used\n * @param projectRoot optional project root, fallback to _internal.projectRoot. Used for testing.\n * @param _isLegacyPlugin Used to suppress errors thrown by plugins that are applied automatically\n */\nexport const withStaticPlugin: ConfigPlugin<{\n  plugin: StaticPlugin | ConfigPlugin | string;\n  fallback?: ConfigPlugin<{ _resolverError: Error } & any>;\n  projectRoot?: string;\n  _isLegacyPlugin?: boolean;\n}> = (config, props) => {\n  let projectRoot = props.projectRoot;\n  if (!projectRoot) {\n    projectRoot = config._internal?.projectRoot;\n    assertInternalProjectRoot(projectRoot);\n  }\n\n  let [pluginResolve, pluginProps] = normalizeStaticPlugin(props.plugin);\n  // Ensure no one uses this property by accident.\n  assert(\n    !pluginProps?._resolverError,\n    `Plugin property '_resolverError' is a reserved property of \\`withStaticPlugin\\``\n  );\n\n  let withPlugin: ConfigPlugin<unknown>;\n\n  if (\n    // Function was provided, no need to resolve: [withPlugin, {}]\n    typeof pluginResolve === 'function'\n  ) {\n    withPlugin = pluginResolve;\n  } else if (typeof pluginResolve === 'string') {\n    try {\n      // Resolve and evaluate plugins.\n      withPlugin = resolveConfigPluginFunction(projectRoot, pluginResolve);\n\n      // Only force if the project has the versioned plugin, otherwise use default behavior.\n      // This helps see which plugins are being skipped.\n      if (\n        EXPO_USE_UNVERSIONED_PLUGINS &&\n        !!withPlugin &&\n        !!props._isLegacyPlugin &&\n        !!props.fallback\n      ) {\n        console.log(`Force \"${pluginResolve}\" to unversioned plugin`);\n        withPlugin = props.fallback;\n      }\n    } catch (error: any) {\n      if (EXPO_DEBUG) {\n        if (EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS) {\n          // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n          console.log(`Error resolving plugin \"${pluginResolve}\"`);\n          console.log(error);\n          console.log();\n        } else {\n          const shouldMuteWarning =\n            props._isLegacyPlugin &&\n            (isModuleMissingError(pluginResolve, error) || isUnexpectedTokenError(error));\n          if (!shouldMuteWarning) {\n            if (isModuleMissingError(pluginResolve, error)) {\n              // Prevent causing log spew for basic resolution errors.\n              console.log(`Could not find plugin \"${pluginResolve}\"`);\n            } else {\n              // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n              console.log(`Error resolving plugin \"${pluginResolve}\"`);\n              console.log(error);\n              console.log();\n            }\n          }\n        }\n      }\n      // TODO: Maybe allow for `PluginError`s to be thrown so external plugins can assert invalid options.\n\n      // If the static module failed to resolve, attempt to use a fallback.\n      // This enables support for built-in plugins with versioned variations living in other packages.\n      if (props.fallback) {\n        if (!pluginProps) pluginProps = {};\n        // Pass this to the fallback plugin for potential warnings about needing to install a versioned package.\n        pluginProps._resolverError = error;\n        withPlugin = props.fallback;\n      } else {\n        // If no fallback, throw the resolution error.\n        throw error;\n      }\n    }\n  } else {\n    throw new PluginError(\n      `Plugin is an unexpected type: ${typeof pluginResolve}`,\n      'INVALID_PLUGIN_TYPE'\n    );\n  }\n\n  // Execute the plugin.\n  config = withPlugin(config, pluginProps);\n  return config;\n};\n"],"mappings":"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"}