1082815dcSEvan Baconexport class UnexpectedError extends Error {
2082815dcSEvan Bacon  readonly name = 'UnexpectedError';
3082815dcSEvan Bacon
4082815dcSEvan Bacon  constructor(message: string) {
5082815dcSEvan Bacon    super(`${message}\nPlease report this as an issue on https://github.com/expo/expo-cli/issues`);
6082815dcSEvan Bacon  }
7082815dcSEvan Bacon}
8082815dcSEvan Bacon
9082815dcSEvan Baconexport type PluginErrorCode =
10082815dcSEvan Bacon  | 'INVALID_PLUGIN_TYPE'
11082815dcSEvan Bacon  | 'INVALID_PLUGIN_IMPORT'
12082815dcSEvan Bacon  | 'PLUGIN_NOT_FOUND'
13082815dcSEvan Bacon  | 'CONFLICTING_PROVIDER'
14082815dcSEvan Bacon  | 'INVALID_MOD_ORDER'
15082815dcSEvan Bacon  | 'MISSING_PROVIDER';
16082815dcSEvan Bacon
17082815dcSEvan Bacon/**
18082815dcSEvan Bacon * Based on `JsonFileError` from `@expo/json-file`
19082815dcSEvan Bacon */
20082815dcSEvan Baconexport class PluginError extends Error {
21082815dcSEvan Bacon  readonly name = 'PluginError';
22082815dcSEvan Bacon  readonly isPluginError = true;
23082815dcSEvan Bacon
24*8a424bebSJames Ide  constructor(
25*8a424bebSJames Ide    message: string,
26*8a424bebSJames Ide    public code: PluginErrorCode,
27*8a424bebSJames Ide    public cause?: Error
28*8a424bebSJames Ide  ) {
29082815dcSEvan Bacon    super(cause ? `${message}\n└─ Cause: ${cause.name}: ${cause.message}` : message);
30082815dcSEvan Bacon  }
31082815dcSEvan Bacon}
32