"use strict";
var FireproofConnect = (() => {
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  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);
  var __publicField = (obj, key, value) => {
    __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
    return value;
  };

  // src/server.ts
  var server_exports = {};
  __export(server_exports, {
    default: () => Server
  });
  var Server = class {
    constructor(party) {
      this.party = party;
      __publicField(this, "clockHead", /* @__PURE__ */ new Map());
    }
    async onStart() {
      return this.party.storage.get("main").then((head) => {
        if (head) {
          this.clockHead = head;
        }
      });
    }
    async onConnect(conn) {
      for (const value of this.clockHead.values()) {
        conn.send(value);
      }
    }
    onMessage(message, sender) {
      const { data, cid, parents } = JSON.parse(message);
      for (const p of parents) {
        this.clockHead.delete(p);
      }
      this.clockHead.set(cid, data);
      this.party.broadcast(data, [sender.id]);
      void this.party.storage.put("main", this.clockHead);
    }
  };
  return __toCommonJS(server_exports);
})();
//# sourceMappingURL=server.iife.js.map
