Ctrl K
ComunidadGuías…

shared/types/unfurl.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/** The kinds of resource that a mention can refer to. */
export enum MentionType {
  User = "user",
  Document = "document",
  Collection = "collection",
  Group = "group",
  Issue = "issue",
  PullRequest = "pull_request",
  Project = "project",
  URL = "url",
  Date = "date",
}

/** How a mention is presented in a document. */
export enum MentionDisplay {
  /** Rendered inline with surrounding text. */
  Inline = "inline",
  /** Rendered as a preview card with image, title and description. */
  Card = "card",
}

/** The kinds of resource that a link can unfurl to. */
export enum UnfurlResourceType {
  URL = "url",
  Mention = "mention",
  Group = "group",
  Document = "document",
  Issue = "issue",
  PR = "pull",
  Project = "project",
}

/** The unfurl response shape for each resource type. */
export type UnfurlResponse = {
  [UnfurlResourceType.URL]: {
    /** The resource type */
    type: UnfurlResourceType.URL;
    /** URL pointing to the resource */
    url: string;
    /** A text title, describing the resource */
    title: string;
    /** A color representing the resource */
    color?: string;
    /** A brief description about the resource */
    description: string;
    /** A URL to a thumbnail image representing the resource */
    thumbnailUrl: string;
    /** A URL to a favicon representing the resource */
    faviconUrl: string;
  };
  [UnfurlResourceType.Mention]: {
    /** The resource type */
    type: UnfurlResourceType.Mention;
    /** Mentioned user's name */
    name: string;
    /** Mentioned user's email */
    email: string | null;
    /** Mentioned user's avatar URL */
    avatarUrl: string | null;
    /** Used to create mentioned user's avatar if no avatar URL provided */
    color: string;
    /** Mentioned user's recent activity */
    lastActive: string;
  };
  [UnfurlResourceType.Group]: {
    /** The resource type */
    type: UnfurlResourceType.Group;
    /** Group name */
    name: string;
    /** Group description */
    description: string | null;
    /** Number of members in the group */
    memberCount: number;
    /** Array of group members (limited to display count) */
    users: Array<{
      id: string;
      name: string;
      avatarUrl: string | null;
      color: string;
    }>;
  };
  [UnfurlResourceType.Document]: {
    /** The resource type */
    type: UnfurlResourceType.Document;
    /** URL pointing to the resource */
    url: string;
    /** Document id */
    id: string;
    /** Document title */
    title: string;
    /** Document summary */
    summary: string;
    /** Source of an image from the document to use as a preview */
    thumbnailUrl?: string;
    /** Viewer's last activity on this document */
    lastActivityByViewer?: string;
  };
  [UnfurlResourceType.Issue]: {
    /** The resource type */
    type: UnfurlResourceType.Issue;
    /** Issue link */
    url: string;
    /** Issue identifier */
    id: string;
    /** Issue title */
    title: string;
    /** Issue description */
    description: string | null;
    /** Issue's author */
    author: { name: string; avatarUrl: string };
    /** Issue's labels */
    labels: Array<{ name: string; color: string }>;
    /** Issue's status */
    state: {
      type?: string;
      name: string;
      color: string;
      completionPercentage?: number;
    };
    /** Issue's creation time */
    createdAt: string;
  };
  [UnfurlResourceType.PR]: {
    /** The resource type */
    type: UnfurlResourceType.PR;
    /** Pull Request link */
    url: string;
    /** Pull Request identifier */
    id: string;
    /** Pull Request title */
    title: string;
    /** Pull Request description */
    description: string | null;
    /** Pull Request author */
    author: { name: string; avatarUrl: string };
    /** Pull Request status */
    state: { name: string; color: string; draft?: boolean };
    /** Pull Request creation time */
    createdAt: string;
  };
  [UnfurlResourceType.Project]: {
    /** The resource type */
    type: UnfurlResourceType.Project;
    /** Project link */
    url: string;
    /** Project identifier */
    id: string;
    /** Project name */
    name: string;
    /** Project color */
    color: string;
    /** Project avatar URL */
    avatarUrl?: string;
    /** Project description */
    description: string | null;
    /** Project lead */
    lead: { name: string; avatarUrl: string } | null;
    /** Project state */
    state: {
      name: string;
      color: string;
      type: string;
    };
    /** Project labels */
    labels: Array<{ name: string; color: string }>;
    /** Project progress (0-1) */
    progress?: number;
    /** Project creation time */
    createdAt: string;
    /** Project target date */
    targetDate: string | null;
  };
};