UNPKG

@ubiquity-os/plugin-sdk

Version:

SDK for plugin support.

139 lines (135 loc) 5.46 kB
import { EmitterWebhookEventName, EmitterWebhookEvent } from '@octokit/webhooks'; import * as _ubiquity_os_ubiquity_os_logger from '@ubiquity-os/ubiquity-os-logger'; import { LogReturn, Metadata, Logs } from '@ubiquity-os/ubiquity-os-logger'; import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; import { customOctokit } from './octokit.js'; interface CommentOptions { raw?: boolean; updateComment?: boolean; commentKind?: string; } type PostedGithubComment = RestEndpointMethodTypes["issues"]["updateComment"]["response"]["data"] | RestEndpointMethodTypes["issues"]["createComment"]["response"]["data"] | RestEndpointMethodTypes["pulls"]["createReplyForReviewComment"]["response"]["data"]; type WithIssueNumber<T> = T & { issueNumber: number; }; interface IssueContext { issueNumber: number; commentId?: number; owner: string; repo: string; } type GraphqlCommentNode = { id: string; body?: string | null; isMinimized?: boolean | null; minimizedReason?: string | null; author?: { login?: string | null; } | null; }; declare class CommentHandler { static readonly HEADER_NAME = "UbiquityOS"; private _lastCommentId; private _commandResponsePolicyApplied; _updateIssueComment(context: Context, params: { owner: string; repo: string; body: string; issueNumber: number; }): Promise<WithIssueNumber<PostedGithubComment>>; _updateReviewComment(context: Context, params: { owner: string; repo: string; body: string; issueNumber: number; }): Promise<WithIssueNumber<PostedGithubComment>>; _createNewComment(context: Context, params: { owner: string; repo: string; body: string; issueNumber: number; commentId?: number; }): Promise<WithIssueNumber<PostedGithubComment>>; _getIssueNumber(context: Context): number | undefined; _getCommentId(context: Context): number | undefined; _getCommentNodeId(context: Context): string | null; _extractIssueContext(context: Context): IssueContext | null; _extractIssueLocator(context: Context): { owner: string; repo: string; issueNumber: number; } | null; _shouldApplyCommandResponsePolicy(context: Context): boolean; _isCommandResponseComment(body: string | null | undefined): boolean; _getGraphqlClient(context: Context): ((query: string, variables?: Record<string, unknown>) => Promise<unknown>) | null; _fetchRecentComments(context: Context, locator: { owner: string; repo: string; issueNumber: number; }, last?: number): Promise<GraphqlCommentNode[]>; _findPreviousCommandResponseComment(comments: GraphqlCommentNode[], currentCommentId: string | null): GraphqlCommentNode | null; _minimizeComment(context: Context, commentNodeId: string, classifier?: "RESOLVED" | "OUTDATED"): Promise<void>; _applyCommandResponsePolicy(context: Context): Promise<void>; _processMessage(context: Context, message: LogReturn | Error): { metadata: { status?: number | undefined; message: string; name: string; stack: string | undefined; }; logMessage: { raw: string; diff: string; level: _ubiquity_os_ubiquity_os_logger.LogLevel; type: _ubiquity_os_ubiquity_os_logger.LogLevelWithOk; }; } | { metadata: { message: string | undefined; stack: string | string[] | undefined; caller: {} | undefined; error?: Error | { stack: string; } | undefined; name?: string | undefined; } | { logMessage: { raw: string; diff: string; level: _ubiquity_os_ubiquity_os_logger.LogLevel; type: _ubiquity_os_ubiquity_os_logger.LogLevelWithOk; }; metadata?: Metadata; }; logMessage: { raw: string; diff: string; level: _ubiquity_os_ubiquity_os_logger.LogLevel; type: _ubiquity_os_ubiquity_os_logger.LogLevelWithOk; }; }; _getInstigatorName(context: Context): string; _createMetadataContent(context: Context, metadata: Metadata): { header: string; jsonPretty: string; }; _formatMetadataContent(logMessage: LogReturn["logMessage"], header: string, jsonPretty: string): string; createCommentBody(context: Context, message: LogReturn | Error, options?: Pick<CommentOptions, "raw">): string; private _createCommentBody; postComment(context: Context, message: LogReturn | Error, options?: CommentOptions): Promise<WithIssueNumber<PostedGithubComment> | null>; } interface Context<TConfig = unknown, TEnv = unknown, TCommand = unknown, TSupportedEvents extends EmitterWebhookEventName = EmitterWebhookEventName> { eventName: TSupportedEvents; payload: { [K in TSupportedEvents]: K extends EmitterWebhookEventName ? EmitterWebhookEvent<K> : never; }[TSupportedEvents]["payload"]; command: TCommand | null; authToken: string; ubiquityKernelToken?: string; octokit: InstanceType<typeof customOctokit>; config: TConfig; env: TEnv; logger: Logs; commentHandler: CommentHandler; } export { type Context as C, CommentHandler as a };