You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.2 KiB
81 lines
2.2 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.prepareHooks = prepareHooks;
|
|
exports.runHook = runHook;
|
|
function _decache() {
|
|
const data = _interopRequireDefault(require("decache"));
|
|
_decache = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _resolveFrom() {
|
|
const data = _interopRequireDefault(require("resolve-from"));
|
|
_resolveFrom = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _internal() {
|
|
const data = require("../internal");
|
|
_internal = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
function requireFromProject(projectRoot, modulePath) {
|
|
try {
|
|
const fullPath = (0, _resolveFrom().default)(projectRoot, modulePath);
|
|
// Clear the require cache for this module so get a fresh version of it
|
|
// without requiring the user to restart Expo CLI
|
|
(0, _decache().default)(fullPath);
|
|
return require(fullPath);
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
function prepareHooks(hooks, hookType, projectRoot) {
|
|
const validHooks = [];
|
|
if (hooks) {
|
|
var _hooks$hookType;
|
|
if (hooks[hookType]) {
|
|
hooks[hookType].forEach(hook => {
|
|
const {
|
|
file
|
|
} = hook;
|
|
const fn = requireFromProject(projectRoot, file);
|
|
if (typeof fn !== 'function') {
|
|
_internal().Logger.global.error(`Unable to load ${hookType} hook: '${file}'. The module does not export a function.`);
|
|
} else {
|
|
hook._fn = fn;
|
|
validHooks.push(hook);
|
|
}
|
|
});
|
|
}
|
|
if (hooks[hookType] !== undefined && validHooks.length !== ((_hooks$hookType = hooks[hookType]) === null || _hooks$hookType === void 0 ? void 0 : _hooks$hookType.length)) {
|
|
throw new (_internal().XDLError)('HOOK_INITIALIZATION_ERROR', `Please fix your ${hookType} hook configuration`);
|
|
}
|
|
}
|
|
return validHooks;
|
|
}
|
|
async function runHook(hook, hookOptions) {
|
|
let result = hook._fn({
|
|
config: hook.config,
|
|
...hookOptions
|
|
});
|
|
|
|
// If it's a promise, wait for it to resolve
|
|
if (result && result.then) {
|
|
result = await result;
|
|
}
|
|
if (result) {
|
|
_internal().Logger.global.info({
|
|
quiet: true
|
|
}, result);
|
|
}
|
|
}
|
|
//# sourceMappingURL=runHook.js.map
|