var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/modules/BaseModule.ts
var BaseModule_exports = {};
__export(BaseModule_exports, {
  BaseModule: () => BaseModule
});
module.exports = __toCommonJS(BaseModule_exports);
var BaseModule = class {
  constructor(name, version) {
    this.defaultName = "baseModule";
    this.defaultVersion = "1.0.0";
    this.isSolution = false;
    this.name = name || this.defaultName;
    this.version = version || this.defaultVersion;
  }
  destroy() {
    this.core.effects.offByModuleDestroy(this.name);
    this.core.unregisterModule(this);
  }
  // 提供统一的缓存 module 里的数据的方法
  checkSaveCache({
    cacheId,
    fatherModule,
    store,
    cacheKey
  }) {
    const window = this.core.getPlugin("window");
    if (cacheId) {
      if (fatherModule) {
        const currentCacheData = window.sessionStorage.getItem(fatherModule);
        let currentCacheDataObj = JSON.parse(currentCacheData || "{}");
        if (!currentCacheData || !currentCacheDataObj[cacheId]) {
          currentCacheDataObj = {
            [cacheId]: {
              [this.name]: {}
            }
          };
        }
        if (!currentCacheDataObj[cacheId][this.name]) {
          currentCacheDataObj[cacheId][this.name] = {};
        }
        cacheKey.forEach((key) => {
          currentCacheDataObj[cacheId][this.name][key] = store == null ? void 0 : store[key];
        });
        window.sessionStorage.setItem(
          fatherModule,
          JSON.stringify(currentCacheDataObj)
        );
      } else {
        let currentCacheData = window.sessionStorage.getItem(cacheId);
        let currentCacheDataObj = JSON.parse(currentCacheData || "{}");
        if (!currentCacheDataObj) {
          currentCacheDataObj = {};
        }
        if (!currentCacheDataObj[this.name]) {
          currentCacheDataObj[this.name] = {};
        }
        cacheKey.forEach((key) => {
          currentCacheDataObj[this.name][key] = store[key];
        });
        window.sessionStorage.setItem(
          cacheId,
          JSON.stringify(currentCacheDataObj)
        );
      }
    }
  }
  effectsOn(eventType, callback) {
    return this.core.effects.on(`${this.name}:${eventType}`, callback);
  }
  effectsOff(eventType, callback) {
    return this.core.effects.off(`${this.name}:${eventType}`, callback);
  }
  effectsOnce(eventType, callback) {
    return this.core.effects.once(`${this.name}:${eventType}`, callback);
  }
  effectsEmit(eventType, payload) {
    return this.core.effects.emit(`${this.name}:${eventType}`, payload);
  }
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  BaseModule
});
