OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-media / shared / spec / hrpc / index.js

138 lines · javascript ref:
import { c as e, RPC as a, RPCStream as t, RPCRequestStream as r } from "hrpc/runtime"
import { getEncoding as i } from "./messages.js"
const s = new Map([
  ["@media/create-chat-image-preview", 0],
  [0, "@media/create-chat-image-preview"],
  ["@media/create-chat-video-preview", 1],
  [1, "@media/create-chat-video-preview"],
  ["@media/create-chat-link-preview", 2],
  [2, "@media/create-chat-link-preview"],
  ["@media/create-profile-avatar", 3],
  [3, "@media/create-profile-avatar"],
  ["@media/create-room-avatar", 4],
  [4, "@media/create-room-avatar"],
  ["@media/decode-image", 5],
  [5, "@media/decode-image"],
])
class c {
  constructor(c) {
    ;((this._stream = c),
      (this._handlers = []),
      (this._requestEncodings = new Map([
        ["@media/create-chat-image-preview", i("@media/create-chat-image-preview-request")],
        ["@media/create-chat-video-preview", i("@media/create-chat-video-preview-request")],
        ["@media/create-chat-link-preview", i("@media/create-chat-link-preview-request")],
        ["@media/create-profile-avatar", i("@media/create-profile-avatar-request")],
        ["@media/create-room-avatar", i("@media/create-room-avatar-request")],
        ["@media/decode-image", i("@media/decode-image-request")],
      ])),
      (this._responseEncodings = new Map([
        ["@media/create-chat-image-preview", i("@media/create-chat-image-preview-response")],
        ["@media/create-chat-video-preview", i("@media/create-chat-video-preview-response")],
        ["@media/create-chat-link-preview", i("@media/create-chat-link-preview-response")],
        ["@media/create-profile-avatar", i("@media/create-profile-avatar-response")],
        ["@media/create-room-avatar", i("@media/create-room-avatar-response")],
        ["@media/decode-image", i("@media/decode-image-response")],
      ])),
      (this._rpc = new a(c, async (a) => {
        const i = s.get(a.command),
          c = this._responseEncodings.get(i),
          n = this._requestEncodings.get(i)
        if (this._requestIsSend(i)) {
          const t = a.data ? e.decode(n, a.data) : null
          return void (await this._handlers[i](t))
        }
        if (!this._requestIsStream(i) && !this._responseIsStream(i)) {
          const t = a.data ? e.decode(n, a.data) : null,
            r = await this._handlers[i](t)
          a.reply(e.encode(c, r))
        }
        if (!this._requestIsStream(i) && this._responseIsStream(i)) {
          const r = a.data ? e.decode(n, a.data) : null,
            s = new t(null, null, a.createResponseStream(), c)
          ;((s.data = r), await this._handlers[i](s))
        }
        if (this._requestIsStream(i) && !this._responseIsStream(i)) {
          const t = new r(a, c, a.createRequestStream(), n),
            s = await this._handlers[i](t)
          a.reply(e.encode(c, s))
        }
        if (this._requestIsStream(i) && this._responseIsStream(i)) {
          const e = new r(a, c, a.createRequestStream(), n, a.createResponseStream(), c)
          await this._handlers[i](e)
        }
      })))
  }
  async _call(a, t) {
    const r = this._requestEncodings.get(a),
      i = this._responseEncodings.get(a),
      c = this._rpc.request(s.get(a)),
      n = e.encode(r, t)
    return (c.send(n), e.decode(i, await c.reply()))
  }
  _callSync(a, i) {
    const c = this._requestEncodings.get(a),
      n = this._responseEncodings.get(a)
    if (this._requestIsSend(a)) {
      const t = e.encode(c, i)
      this._rpc.event(s.get(a)).send(t)
    }
    const d = this._rpc.request(s.get(a))
    if (!this._requestIsStream(a) && this._responseIsStream(a)) {
      const a = e.encode(c, i)
      return (d.send(a), new t(d.createResponseStream(), n))
    }
    return this._requestIsStream(a) && !this._responseIsStream(a)
      ? new r(d, n, null, null, d.createRequestStream(), c)
      : this._requestIsStream(a) && this._responseIsStream(a)
        ? new r(d, n, d.createResponseStream(), n, d.createRequestStream(), c)
        : void 0
  }
  async createChatImagePreview(e) {
    return this._call("@media/create-chat-image-preview", e)
  }
  async createChatVideoPreview(e) {
    return this._call("@media/create-chat-video-preview", e)
  }
  async createChatLinkPreview(e) {
    return this._call("@media/create-chat-link-preview", e)
  }
  async createProfileAvatar(e) {
    return this._call("@media/create-profile-avatar", e)
  }
  async createRoomAvatar(e) {
    return this._call("@media/create-room-avatar", e)
  }
  async decodeImage(e) {
    return this._call("@media/decode-image", e)
  }
  onCreateChatImagePreview(e) {
    this._handlers["@media/create-chat-image-preview"] = e
  }
  onCreateChatVideoPreview(e) {
    this._handlers["@media/create-chat-video-preview"] = e
  }
  onCreateChatLinkPreview(e) {
    this._handlers["@media/create-chat-link-preview"] = e
  }
  onCreateProfileAvatar(e) {
    this._handlers["@media/create-profile-avatar"] = e
  }
  onCreateRoomAvatar(e) {
    this._handlers["@media/create-room-avatar"] = e
  }
  onDecodeImage(e) {
    this._handlers["@media/decode-image"] = e
  }
  _requestIsStream(e) {
    return [].includes(e)
  }
  _responseIsStream(e) {
    return [].includes(e)
  }
  _requestIsSend(e) {
    return [].includes(e)
  }
}
export default c