Skip to content

This package is the result of reverse analysis of embedding Facebook Comment Plugin (FCP)

License

Notifications You must be signed in to change notification settings

tachibana-shin/fb-comments-web

Repository files navigation

#fb-comments-web

This package is the result of reverse analysis of embedding Facebook Comment Plugin (FCP) into my website. I was using FCP on my website AnimeVsub and I realized that FCP uses too many resources. While the main thread is only using 32MB of RAM, FCP is using >200MB of RAM which is unacceptable. And finally I decompiled FCP to get its most core APIs and implemented it into an API

Usage

import { FBCommentPlugin } from "fb-comments-web"

const commentsPlugin = new FBCommentPlugin({
  // config
})
interface FBCommentPluginConfig {
  href: string
  limit?: number
  locale: string
  order_by?: "time" | "reverse_time"
  pluginUrl?: string
  /** @description {string} url require starts with "https://" or "http://" */
  app: string
  sdk?: string
  version?: string
  fetch?: (
    url: string,
    options?: {
      method: string
      headers: Record<string, string>
      body: URLSearchParams
    }
  ) => Promise<string>
}
declare class FBCommentPlugin {
  #private
  static readonly default_config: Partial<FBCommentPluginConfig>
  constructor(config: FBCommentPluginConfig)
  private _setup
  setup(): Promise<{
    headers: {
      "content-type": string
      dpr: string
      pragma: string
      "sec-ch-prefers-color-scheme": string
      "sec-ch-ua": string
      "sec-ch-ua-full-version-list": string
      "sec-ch-ua-mobile": string
      "sec-ch-ua-platform": string
      "sec-ch-ua-platform-version": string
      "sec-gpc": string
      "viewport-width": string
      "x-asbd-id": string
      "x-fb-lsd": string
      Referer: string
      "Referrer-Policy": string
    }
    targetID: string
    app_id: string
    limit: string
    __a: string
    __req: string
    __hs: string
    dpr: string
    __ccg: string
    __rev: string
    __s: string
    __hsi: string
    __dyn: string
    __csr: string
    locale: string
    lsd: string
    jazoest: string
    __sp: string
    after_cursor: string
    fb_dtsg: string
    comments: DefaultComments
  }>
  getComments(after_cursor?: string): Promise<AsyncComments>
  getMoreComments(
    commentID: string,
    after_cursor?: string
  ): Promise<AsyncComments>
  postComment(text: string): Promise<PostComment>
  replyComment(commentID: string, text: string): Promise<PostComment>
  likeComment(commentID: string, isLike: boolean): Promise<PostComment>
  editCommit(commentID: string, text: string): Promise<PostComment>
  removeComment(commentID: string): Promise<RemoveComment>
}

About

This package is the result of reverse analysis of embedding Facebook Comment Plugin (FCP)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published