OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / identity / identity.invitation.js

35 lines · javascript ref:
import { CHAT_INVITATION as t } from "./identity.constants"
export const PUBLIC_INVITE_PREFIX = "https://pears.com/invite/"
export const getPearInvitationContextRegExp = (t) => {
  const n = t.join("|")
  return new RegExp(`(?:${n}):\\/\\/\\w+\\/\\w+(\\?deviceId=(?:\\w+)&seq=(?:\\d+))?`)
}
export const getPearInvitationRegExp = (t) => {
  const n = t.join("|")
  return new RegExp(`^(?:${n}):\\/\\/(\\w+)\\/(\\w+)\\[?]?`)
}
export const KEET_LINK_PREFIX = "https://holepunchto.github.io/invite#"
export const SUPPORT_LINKS = [KEET_LINK_PREFIX, "https://gasolin.github.io/keetlink#"]
export const parseInvitation = (t, n) => {
  const o = (t || "").trim()
  for (const t of n) {
    const n = `${t}://`
    if (o.startsWith(n)) return o.slice(n.length).split("/").slice(1).join("/") || null
  }
  for (const t of SUPPORT_LINKS)
    if (o.startsWith(t)) return o.slice(t.length).split("?")[0].split("&")[0].split("#")[0]
  return null
}
export const removeInvitationQueryParams = (t) => t.split("?")[0]
export const isInvitation = (t, n) => !!parseInvitation(t, n)
export function createInvitationLink({ invitation: n, isPublic: o, appProtocol: i }) {
  return `${o ? PUBLIC_INVITE_PREFIX : `${i}://`}${t}/${n}`
}
export const trimRoomInvitation = (t, n) => {
  const o = `${n}://`,
    i = t.lastIndexOf(o)
  if (-1 !== i) return t.slice(i)
  const e = t.lastIndexOf(KEET_LINK_PREFIX)
  return -1 !== e ? t.slice(e) : t
}