"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.defineCommonJSHook = defineCommonJSHook;
exports.makeInvokers = makeInvokers;
const commonJSHooksKey = "@babel/plugin-transform-modules-commonjs/customWrapperPlugin";
function defineCommonJSHook(file, hook) {
  let hooks = file.get(commonJSHooksKey);
  if (!hooks) file.set(commonJSHooksKey, hooks = []);
  hooks.push(hook);
}
function findMap(arr, cb) {
  if (arr) {
    for (const el of arr) {
      const res = cb(el);
      if (res != null) return res;
    }
  }
}
function makeInvokers(file) {
  const hooks = file.get(commonJSHooksKey);
  return {
    getWrapperPayload(...args) {
      return findMap(hooks, hook => hook.getWrapperPayload == null ? void 0 : hook.getWrapperPayload(...args));
    },
    wrapReference(...args) {
      return findMap(hooks, hook => hook.wrapReference == null ? void 0 : hook.wrapReference(...args));
    },
    buildRequireWrapper(...args) {
      return findMap(hooks, hook => hook.buildRequireWrapper == null ? void 0 : hook.buildRequireWrapper(...args));
    }
  };
}

//# sourceMappingURL=hooks.js.map