1 | {"version":3,"file":"runHook.js","names":["_decache","data","_interopRequireDefault","require","_resolveFrom","_internal","obj","__esModule","default","requireFromProject","projectRoot","modulePath","fullPath","resolveFrom","decache","prepareHooks","hooks","hookType","validHooks","_hooks$hookType","forEach","hook","file","fn","logger","global","error","_fn","push","undefined","length","XDLError","runHook","hookOptions","result","config","then","info","quiet"],"sources":["../../src/project/runHook.ts"],"sourcesContent":["import { ExpoConfig, Hook, HookArguments, HookType } from '@expo/config';\nimport decache from 'decache';\nimport resolveFrom from 'resolve-from';\n\nimport { Logger as logger, XDLError } from '../internal';\n\nexport type LoadedHook = Hook & {\n _fn: (input: HookArguments) => any;\n};\n\nfunction requireFromProject(projectRoot: string, modulePath: string) {\n try {\n const fullPath = resolveFrom(projectRoot, modulePath);\n // Clear the require cache for this module so get a fresh version of it\n // without requiring the user to restart Expo CLI\n decache(fullPath);\n return require(fullPath);\n } catch {\n return null;\n }\n}\n\nexport function prepareHooks(hooks: ExpoConfig['hooks'], hookType: HookType, projectRoot: string) {\n const validHooks: LoadedHook[] = [];\n\n if (hooks) {\n if (hooks[hookType]) {\n hooks[hookType]!.forEach((hook: any) => {\n const { file } = hook;\n const fn = requireFromProject(projectRoot, file);\n if (typeof fn !== 'function') {\n logger.global.error(\n `Unable to load ${hookType} hook: '${file}'. The module does not export a function.`\n );\n } else {\n hook._fn = fn;\n validHooks.push(hook);\n }\n });\n }\n\n if (hooks[hookType] !== undefined && validHooks.length !== hooks[hookType]?.length) {\n throw new XDLError(\n 'HOOK_INITIALIZATION_ERROR',\n `Please fix your ${hookType} hook configuration`\n );\n }\n }\n\n return validHooks;\n}\n\nexport async function runHook(hook: LoadedHook, hookOptions: Omit<HookArguments, 'config'>) {\n let result = hook._fn({\n config: hook.config,\n ...hookOptions,\n });\n\n // If it's a promise, wait for it to resolve\n if (result && result.then) {\n result = await result;\n }\n\n if (result) {\n logger.global.info({ quiet: true }, result);\n }\n}\n"],"mappings":";;;;;;;AACA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,aAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,YAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,UAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,SAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAMzD,SAASG,kBAAkBA,CAACC,WAAmB,EAAEC,UAAkB,EAAE;EACnE,IAAI;IACF,MAAMC,QAAQ,GAAG,IAAAC,sBAAW,EAACH,WAAW,EAAEC,UAAU,CAAC;IACrD;IACA;IACA,IAAAG,kBAAO,EAACF,QAAQ,CAAC;IACjB,OAAOT,OAAO,CAACS,QAAQ,CAAC;EAC1B,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEO,SAASG,YAAYA,CAACC,KAA0B,EAAEC,QAAkB,EAAEP,WAAmB,EAAE;EAChG,MAAMQ,UAAwB,GAAG,EAAE;EAEnC,IAAIF,KAAK,EAAE;IAAA,IAAAG,eAAA;IACT,IAAIH,KAAK,CAACC,QAAQ,CAAC,EAAE;MACnBD,KAAK,CAACC,QAAQ,CAAC,CAAEG,OAAO,CAAEC,IAAS,IAAK;QACtC,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB,MAAME,EAAE,GAAGd,kBAAkB,CAACC,WAAW,EAAEY,IAAI,CAAC;QAChD,IAAI,OAAOC,EAAE,KAAK,UAAU,EAAE;UAC5BC,kBAAM,CAACC,MAAM,CAACC,KAAK,CAChB,kBAAiBT,QAAS,WAAUK,IAAK,2CAC5C,CAAC;QACH,CAAC,MAAM;UACLD,IAAI,CAACM,GAAG,GAAGJ,EAAE;UACbL,UAAU,CAACU,IAAI,CAACP,IAAI,CAAC;QACvB;MACF,CAAC,CAAC;IACJ;IAEA,IAAIL,KAAK,CAACC,QAAQ,CAAC,KAAKY,SAAS,IAAIX,UAAU,CAACY,MAAM,OAAAX,eAAA,GAAKH,KAAK,CAACC,QAAQ,CAAC,cAAAE,eAAA,uBAAfA,eAAA,CAAiBW,MAAM,GAAE;MAClF,MAAM,KAAIC,oBAAQ,EAChB,2BAA2B,EAC1B,mBAAkBd,QAAS,qBAC9B,CAAC;IACH;EACF;EAEA,OAAOC,UAAU;AACnB;AAEO,eAAec,OAAOA,CAACX,IAAgB,EAAEY,WAA0C,EAAE;EAC1F,IAAIC,MAAM,GAAGb,IAAI,CAACM,GAAG,CAAC;IACpBQ,MAAM,EAAEd,IAAI,CAACc,MAAM;IACnB,GAAGF;EACL,CAAC,CAAC;;EAEF;EACA,IAAIC,MAAM,IAAIA,MAAM,CAACE,IAAI,EAAE;IACzBF,MAAM,GAAG,MAAMA,MAAM;EACvB;EAEA,IAAIA,MAAM,EAAE;IACVV,kBAAM,CAACC,MAAM,CAACY,IAAI,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,EAAEJ,MAAM,CAAC;EAC7C;AACF"} |