UNPKG

@ovv/artalk

Version:

A self-hosted comment system

1,616 lines (1,488 loc) 95.1 kB
import { Marked } from 'marked'; import { MarkedOptions } from 'marked'; /** * 通用操作按钮 */ declare class ActionBtn { private opts; $el: HTMLElement; isLoading: boolean; msgRecTimer?: number; msgRecTimerFunc?: () => void; get isMessaging(): boolean; isConfirming: boolean; confirmRecTimer?: number; /** 构造函数 */ constructor(opts: ActionBtnOptions | string | (() => string)); /** 将按钮装载到指定元素 */ appendTo(dom: HTMLElement): this; /** 获取按钮文字(动态/静态) */ private getText; /** 设置点击事件 */ setClick(func: () => void): void; /** 文字刷新(动态/静态) */ updateText(text?: (() => string) | string): void; /** 设置加载状态 */ setLoading(value: boolean, loadingText?: string): void; /** 错误消息 */ setError(text: string): void; /** 警告消息 */ setWarn(text: string): void; /** 成功消息 */ setSuccess(text: string): void; /** 设置消息 */ setMsg(text: string, className?: string, duringTime?: number, after?: () => void): void; /** 设置消息复原操作定时器 */ private setMsgRecTimer; /** 立刻触发器复原定时器 */ private fireMsgRecTimer; /** 仅清除 timer */ private clearMsgRecTimer; } declare interface ActionBtnOptions { /** 按钮文字 (动态/静态) */ text: (() => string) | string; /** 仅管理员可用 */ adminOnly?: boolean; /** 确认操作 */ confirm?: boolean; /** 确认时提示文字 */ confirmText?: string; } export declare class Api extends Api_2<void> { private _opts; constructor(opts: ApiOptions); /** * Get user info as params for request * * @returns Request params with user info */ getUserFields(): { name: string; email: string; } | undefined; } /** * @title Artalk API * @version 2.0 * @license MIT (https://github.com/ArtalkJS/Artalk/blob/master/LICENSE) * @baseUrl /api/v2 * @contact API Support <artalkjs@gmail.com> (https://artalk.js.org) * * Artalk is a modern comment system based on Golang. */ declare class Api_2<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> { auth: { /** * @description Login by email with verify code (Need send email verify code first) or password * * @tags Auth * @name LoginByEmail * @summary Login by email * @request POST:/auth/email/login * @response `200` `HandlerResponseUserLogin` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ loginByEmail: (data: HandlerRequestAuthEmailLogin, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserLogin, HandlerMap & { msg?: string; }>>; /** * @description Register by email and verify code (if user exists, will update user, like forget or change password. Need send email verify code first) * * @tags Auth * @name RegisterByEmail * @summary Register by email * @request POST:/auth/email/register * @response `200` `HandlerResponseUserLogin` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ registerByEmail: (data: HandlerRequestAuthEmailRegister, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserLogin, HandlerMap & { msg?: string; }>>; /** * @description Send email including verify code to user * * @tags Auth * @name SendVerifyEmail * @summary Send verify email * @request POST:/auth/email/send * @response `200` `(HandlerMap & { msg?: string, })` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ sendVerifyEmail: (data: HandlerRequestAuthEmailSend, params?: RequestParams) => Promise<HttpResponse<HandlerMap & { msg?: string; }, HandlerMap & { msg?: string; }>>; /** * @description Get all users with same email, if there are more than one user with same email, need merge * * @tags Auth * @name CheckDataMerge * @summary Check data merge * @request GET:/auth/merge * @secure * @response `200` `HandlerResponseAuthDataMergeCheck` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ checkDataMerge: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseAuthDataMergeCheck, HandlerMap & { msg?: string; }>>; /** * @description This function is to solve the problem of multiple users with the same email address, should be called after user login and then check, and perform data merge. * * @tags Auth * @name ApplyDataMerge * @summary Apply data merge * @request POST:/auth/merge * @secure * @response `200` `HandlerResponseAuthDataMergeApply` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ applyDataMerge: (data: HandlerRequestAuthDataMergeApply, params?: RequestParams) => Promise<HttpResponse<HandlerResponseAuthDataMergeApply, HandlerMap & { msg?: string; }>>; }; cache: { /** * @description Flush all cache on the server * * @tags Cache * @name FlushCache * @summary Flush Cache * @request POST:/cache/flush * @secure * @response `200` `(HandlerMap & { msg?: string, })` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden */ flushCache: (params?: RequestParams) => Promise<HttpResponse<HandlerMap & { msg?: string; }, HandlerMap & { msg?: string; }>>; /** * @description Cache warming helps you to pre-load the cache to improve the performance of the first request * * @tags Cache * @name WarmUpCache * @summary Warm-Up Cache * @request POST:/cache/warm_up * @secure * @response `200` `(HandlerMap & { msg?: string, })` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden */ warmUpCache: (params?: RequestParams) => Promise<HttpResponse<HandlerMap & { msg?: string; }, HandlerMap & { msg?: string; }>>; }; captcha: { /** * @description Get a base64 encoded captcha image or a HTML page to verify for user * * @tags Captcha * @name GetCaptcha * @summary Get Captcha * @request GET:/captcha * @response `200` `HandlerResponseCaptchaGet` OK * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getCaptcha: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseCaptchaGet, HandlerMap & { msg?: string; }>>; /** * @description Get the status of the user's captcha verification * * @tags Captcha * @name GetCaptchaStatus * @summary Get Captcha Status * @request GET:/captcha/status * @response `200` `HandlerResponseCaptchaStatus` OK */ getCaptchaStatus: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseCaptchaStatus, any>>; /** * @description Verify user enters correct captcha code * * @tags Captcha * @name VerifyCaptcha * @summary Verify Captcha * @request POST:/captcha/verify * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { img_data?: string, })` Forbidden */ verifyCaptcha: (data: HandlerParamsCaptchaVerify, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { img_data?: string; }>>; }; comments: { /** * @description Get a list of comments by some conditions * * @tags Comment * @name GetComments * @summary Get Comment List * @request GET:/comments * @secure * @response `200` `HandlerResponseCommentList` OK * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getComments: (query: { /** The user email */ email?: string; /** Enable flat_mode */ flat_mode?: boolean; /** The limit for pagination */ limit?: number; /** The username */ name?: string; /** The offset for pagination */ offset?: number; /** The comment page_key */ page_key: string; /** The scope of comments */ scope?: "page" | "user" | "site"; /** Search keywords */ search?: string; /** The site name of your content scope */ site_name?: string; /** Sort by condition */ sort_by?: "date_asc" | "date_desc" | "vote"; /** Message center show type */ type?: "all" | "mentions" | "mine" | "pending"; /** Only show comments by admin */ view_only_admin?: boolean; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseCommentList, HandlerMap & { msg?: string; }>>; /** * @description Create a new comment * * @tags Comment * @name CreateComment * @summary Create Comment * @request POST:/comments * @secure * @response `200` `HandlerResponseCommentCreate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ createComment: (comment: HandlerParamsCommentCreate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseCommentCreate, HandlerMap & { msg?: string; }>>; /** * @description Get the detail of a comment by comment id * * @tags Comment * @name GetComment * @summary Get a comment * @request GET:/comments/{id} * @response `200` `HandlerResponseCommentGet` OK * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getComment: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerResponseCommentGet, HandlerMap & { msg?: string; }>>; /** * @description Update a specific comment * * @tags Comment * @name UpdateComment * @summary Update Comment * @request PUT:/comments/{id} * @secure * @response `200` `HandlerResponseCommentUpdate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ updateComment: (id: number, comment: HandlerParamsCommentUpdate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseCommentUpdate, HandlerMap & { msg?: string; }>>; /** * @description Delete a specific comment * * @tags Comment * @name DeleteComment * @summary Delete Comment * @request DELETE:/comments/{id} * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ deleteComment: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; }; conf: { /** * @description Get System Configs for UI * * @tags System * @name Conf * @summary Get System Configs * @request GET:/conf * @response `200` `CommonConfData` OK */ conf: (params?: RequestParams) => Promise<HttpResponse<CommonConfData, any>>; /** * @description Get social login providers * * @tags System * @name GetSocialLoginProviders * @summary Get Social Login Providers * @request GET:/conf/auth/providers * @response `200` `HandlerResponseConfAuthProviders` OK * @response `404` `(HandlerMap & { msg?: string, })` Not Found */ getSocialLoginProviders: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseConfAuthProviders, HandlerMap & { msg?: string; }>>; /** * @description Get Domain Info * * @tags System * @name GetDomain * @summary Get Domain Info * @request GET:/conf/domain * @response `200` `HandlerResponseConfDomain` OK */ getDomain: (query?: { /** Domain URL */ url?: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseConfDomain, any>>; }; notifies: { /** * @description Get a list of notifies for user * * @tags Notify * @name GetNotifies * @summary Get Notifies * @request GET:/notifies * @response `200` `HandlerResponseNotifyList` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getNotifies: (query: { /** The user email */ email: string; /** The user name */ name: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseNotifyList, HandlerMap & { msg?: string; }>>; /** * @description Mark all notifies as read for user * * @tags Notify * @name MarkAllNotifyRead * @summary Mark All Notifies as Read * @request POST:/notifies/read * @response `200` `HandlerMap` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ markAllNotifyRead: (options: HandlerParamsNotifyReadAll, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Mark specific notification as read for user * * @tags Notify * @name MarkNotifyRead * @summary Mark Notify as Read * @request POST:/notifies/{comment_id}/{notify_key} * @response `200` `HandlerMap` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ markNotifyRead: (commentId: number, notifyKey: string, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; }; pages: { /** * @description Get a list of pages by some conditions * * @tags Page * @name GetPages * @summary Get Page List * @request GET:/pages * @secure * @response `200` `HandlerResponsePageList` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden */ getPages: (query?: { /** The limit for pagination */ limit?: number; /** The offset for pagination */ offset?: number; /** Search keywords */ search?: string; /** The site name of your content scope */ site_name?: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponsePageList, HandlerMap & { msg?: string; }>>; /** * @description Fetch the data of all pages * * @tags Page * @name FetchAllPages * @summary Fetch All Pages Data * @request POST:/pages/fetch * @secure * @response `200` `HandlerMap` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ fetchAllPages: (options: HandlerParamsPageFetchAll, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Get the status of the task of fetching all pages * * @tags Page * @name GetPageFetchStatus * @summary Get Pages Fetch Status * @request GET:/pages/fetch/status * @secure * @response `200` `HandlerResponsePageFetchStatus` OK */ getPageFetchStatus: (params?: RequestParams) => Promise<HttpResponse<HandlerResponsePageFetchStatus, any>>; /** * @description Increase and get the number of page views * * @tags Page * @name LogPv * @summary Increase Page Views (PV) * @request POST:/pages/pv * @response `200` `HandlerResponsePagePV` OK */ logPv: (page: HandlerParamsPagePV, params?: RequestParams) => Promise<HttpResponse<HandlerResponsePagePV, any>>; /** * @description Update a specific page * * @tags Page * @name UpdatePage * @summary Update Page * @request PUT:/pages/{id} * @secure * @response `200` `HandlerResponsePageUpdate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ updatePage: (id: number, page: HandlerParamsPageUpdate, params?: RequestParams) => Promise<HttpResponse<HandlerResponsePageUpdate, HandlerMap & { msg?: string; }>>; /** * @description Delete a specific page * * @tags Page * @name DeletePage * @summary Delete Page * @request DELETE:/pages/{id} * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ deletePage: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Fetch the data of a specific page * * @tags Page * @name FetchPage * @summary Fetch Page Data * @request POST:/pages/{id}/fetch * @secure * @response `200` `HandlerResponsePageFetch` OK * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ fetchPage: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerResponsePageFetch, HandlerMap & { msg?: string; }>>; }; sendEmail: { /** * @description Send an email to test the email sender * * @tags System * @name SendEmail * @summary Send Email * @request POST:/send_email * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `HandlerMap` Internal Server Error */ sendEmail: (email: HandlerParamsEmailSend, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap | (HandlerMap & { msg?: string; })>>; }; settings: { /** * @description Get settings from app config file * * @tags System * @name GetSettings * @summary Get Settings * @request GET:/settings * @secure * @response `200` `HandlerResponseSettingGet` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getSettings: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseSettingGet, HandlerMap & { msg?: string; }>>; /** * @description Apply settings and restart the server * * @tags System * @name ApplySettings * @summary Save and apply Settings * @request PUT:/settings * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ applySettings: (settings: HandlerParamsSettingApply, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Get config templates in different languages for rendering the settings page in the frontend * * @tags System * @name GetSettingsTemplate * @summary Get Settings Template * @request GET:/settings/template/{locale} * @secure * @response `200` `HandlerResponseSettingTemplate` OK */ getSettingsTemplate: (locale: string, params?: RequestParams) => Promise<HttpResponse<HandlerResponseSettingTemplate, any>>; }; sites: { /** * @description Get a list of sites by some conditions * * @tags Site * @name GetSites * @summary Get Site List * @request GET:/sites * @secure * @response `200` `HandlerResponseSiteList` OK */ getSites: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseSiteList, any>>; /** * @description Create a new site * * @tags Site * @name CreateSite * @summary Create Site * @request POST:/sites * @secure * @response `200` `HandlerResponseSiteCreate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ createSite: (site: HandlerParamsSiteCreate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseSiteCreate, HandlerMap & { msg?: string; }>>; /** * @description Update a specific site * * @tags Site * @name UpdateSite * @summary Update Site * @request PUT:/sites/{id} * @secure * @response `200` `HandlerResponseSiteUpdate` OK */ updateSite: (id: number, site: HandlerParamsSiteUpdate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseSiteUpdate, any>>; /** * @description Delete a specific site * * @tags Site * @name DeleteSite * @summary Site Delete * @request DELETE:/sites/{id} * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ deleteSite: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; }; stats: { /** * @description Get the statistics of various data analysis * * @tags Statistic * @name GetStats * @summary Statistic * @request GET:/stats/{type} * @response `200` `CommonJSONResult` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getStats: (type: "latest_comments" | "latest_pages" | "pv_most_pages" | "comment_most_pages" | "page_pv" | "site_pv" | "page_comment" | "site_comment" | "rand_comments" | "rand_pages", query?: { /** The limit for pagination */ limit?: number; /** multiple page keys separated by commas */ page_keys?: string; /** The site name of your content scope */ site_name?: string; }, params?: RequestParams) => Promise<HttpResponse<CommonJSONResult, HandlerMap & { msg?: string; }>>; }; transfer: { /** * @description Export data from Artalk * * @tags Transfer * @name ExportArtrans * @summary Export Artrans * @request GET:/transfer/export * @secure * @response `200` `HandlerResponseTransferExport` OK * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ exportArtrans: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseTransferExport, HandlerMap & { msg?: string; }>>; /** * @description Import data to Artalk * * @tags Transfer * @name ImportArtrans * @summary Import Artrans * @request POST:/transfer/import * @secure * @response `200` `string` OK */ importArtrans: (data: HandlerParamsTransferImport, params?: RequestParams) => Promise<HttpResponse<string, any>>; /** * @description Upload a file to prepare to import * * @tags Transfer * @name UploadArtrans * @summary Upload Artrans * @request POST:/transfer/upload * @secure * @response `200` `(HandlerResponseTransferUpload & { filename?: string, })` OK * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ uploadArtrans: (data: { /** * Upload file in preparation for import task * @format binary */ file: File; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseTransferUpload & { filename?: string; }, HandlerMap & { msg?: string; }>>; }; upload: { /** * @description Upload file from this endpoint * * @tags Upload * @name Upload * @summary Upload * @request POST:/upload * @secure * @response `200` `HandlerResponseUpload` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ upload: (data: { /** * Upload file * @format binary */ file: File; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUpload, HandlerMap & { msg?: string; }>>; }; user: { /** * @description Get user info to prepare for login or check current user status * * @tags Auth * @name GetUser * @summary Get User Info * @request GET:/user * @secure * @response `200` `HandlerResponseUserInfo` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request */ getUser: (query?: { /** The user email */ email?: string; /** The username */ name?: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserInfo, HandlerMap & { msg?: string; }>>; /** * @description Update user profile when user is logged in * * @tags Auth * @name UpdateProfile * @summary Update user profile * @request POST:/user * @secure * @response `200` `HandlerResponseUserInfoUpdate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ updateProfile: (data: HandlerRequestUserInfoUpdate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserInfoUpdate, HandlerMap & { msg?: string; }>>; /** * @description Login user by name or email * * @tags Auth * @name Login * @summary Get Access Token * @request POST:/user/access_token * @response `200` `HandlerResponseUserLogin` OK * @response `400` `(HandlerMap & { data?: { need_name_select?: (string)[], }, msg?: string, })` Multiple users with the same email address are matched * @response `401` `(HandlerMap & { msg?: string, })` Unauthorized * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ login: (user: HandlerParamsUserLogin, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserLogin, (HandlerMap & { data?: { need_name_select?: string[]; }; msg?: string; }) | (HandlerMap & { msg?: string; })>>; /** * @description Get user login status by header Authorization * * @tags Auth * @name GetUserStatus * @summary Get Login Status * @request GET:/user/status * @secure * @response `200` `HandlerResponseUserStatus` OK */ getUserStatus: (query?: { /** The user email */ email?: string; /** The username */ name?: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserStatus, any>>; }; users: { /** * @description Create a new user * * @tags User * @name CreateUser * @summary Create User * @request POST:/users * @secure * @response `200` `HandlerResponseUserCreate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ createUser: (user: HandlerParamsUserCreate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserCreate, HandlerMap & { msg?: string; }>>; /** * @description Update a specific user * * @tags User * @name UpdateUser * @summary Update User * @request PUT:/users/{id} * @secure * @response `200` `HandlerResponseUserUpdate` OK * @response `400` `(HandlerMap & { msg?: string, })` Bad Request * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ updateUser: (id: number, user: HandlerParamsUserUpdate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserUpdate, HandlerMap & { msg?: string; }>>; /** * @description Delete a specific user * * @tags User * @name DeleteUser * @summary Delete User * @request DELETE:/users/{id} * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ deleteUser: (id: number, params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Get a list of users by some conditions * * @tags User * @name GetUsers * @summary Get User List * @request GET:/users/{type} * @secure * @response `200` `HandlerResponseAdminUserList` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden */ getUsers: (type?: "all" | "admin" | "in_conf", query?: { /** The limit for pagination */ limit?: number; /** The offset for pagination */ offset?: number; /** Search keywords */ search?: string; }, params?: RequestParams) => Promise<HttpResponse<HandlerResponseAdminUserList, HandlerMap & { msg?: string; }>>; }; version: { /** * @description Get the version of Artalk * * @tags System * @name GetVersion * @summary Get Version Info * @request GET:/version * @response `200` `CommonApiVersionData` OK */ getVersion: (params?: RequestParams) => Promise<HttpResponse<CommonApiVersionData, any>>; }; votes: { /** * @description Sync the number of votes in the `comments` or `pages` data tables to keep them the same as the `votes` table * * @tags Vote * @name SyncVotes * @summary Sync Vote Data * @request POST:/votes/sync * @secure * @response `200` `HandlerMap` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden */ syncVotes: (params?: RequestParams) => Promise<HttpResponse<HandlerMap, HandlerMap & { msg?: string; }>>; /** * @description Get vote status for a specific comment or page * * @tags Vote * @name GetVote * @summary Get Vote Status * @request GET:/votes/{target_name}/{target_id} * @response `200` `HandlerResponseVote` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ getVote: (targetName: "comment" | "page", targetId: number, params?: RequestParams) => Promise<HttpResponse<HandlerResponseVote, HandlerMap & { msg?: string; }>>; /** * @description Create a new vote for a specific comment or page * * @tags Vote * @name CreateVote * @summary Create Vote * @request POST:/votes/{target_name}/{target_id}/{choice} * @response `200` `HandlerResponseVote` OK * @response `403` `(HandlerMap & { msg?: string, })` Forbidden * @response `404` `(HandlerMap & { msg?: string, })` Not Found * @response `500` `(HandlerMap & { msg?: string, })` Internal Server Error */ createVote: (targetName: "comment" | "page", targetId: number, choice: "up" | "down", vote: HandlerParamsVoteCreate, params?: RequestParams) => Promise<HttpResponse<HandlerResponseVote, HandlerMap & { msg?: string; }>>; }; } declare interface ApiConfig<SecurityDataType = unknown> { baseUrl?: string; baseApiParams?: Omit<RequestParams, 'baseUrl' | 'cancelToken' | 'signal'>; securityWorker?: (securityData: SecurityDataType | null) => Promise<RequestParams | void> | RequestParams | void; customFetch?: typeof fetch; } declare interface ApiHandler<T extends PayloadKey = PayloadKey> { action: T; handler: (data: ApiHandlerPayload[T]) => Promise<void>; } declare interface ApiHandlerPayload { need_captcha: { img_data?: string; iframe?: string; }; need_login: object; need_auth_login: object; } export declare interface ApiHandlers { add: <T extends PayloadKey>(action: T, handler: (data: ApiHandlerPayload[T]) => Promise<void>) => void; remove: (action: PayloadKey) => void; get: () => ApiHandler[]; } declare interface ApiOptions { baseURL: string; siteName: string; pageKey: string; pageTitle: string; timeout?: number; getApiToken?: () => string | undefined; userInfo?: { name: string; email: string; }; handlers?: ApiHandlers; } export declare interface ApiVersionData { /** API 程序名 */ app: string; /** API 程序版本号 */ version: string; /** API 程序 CommitHash */ commit_hash: string; } /** * Artalk * * @see https://artalk.js.org */ declare class Artalk { ctx: Context; constructor(conf: ConfigPartial); /** Get the config of Artalk */ getConf(): Config; /** Get the root element of Artalk */ getEl(): HTMLElement; /** Update config of Artalk */ update(conf: ConfigPartial): void; /** Reload comment list of Artalk */ reload(): void; /** Destroy instance of Artalk */ destroy(): void; /** Add an event listener */ on<K extends keyof EventPayloadMap>(name: K, handler: EventHandler<EventPayloadMap[K]>): void; /** Remove an event listener */ off<K extends keyof EventPayloadMap>(name: K, handler: EventHandler<EventPayloadMap[K]>): void; /** Trigger an event */ trigger<K extends keyof EventPayloadMap>(name: K, payload?: EventPayloadMap[K]): void; /** Set dark mode */ setDarkMode(darkMode: boolean): void; /** Init Artalk */ static init(conf: ConfigPartial): Artalk; /** Use plugin, the plugin will be used when Artalk.init */ static use<T = any>(plugin: ArtalkPlugin<T>, options?: T): void; /** Load count widget */ static loadCountWidget(c: ConfigPartial): void; /** @deprecated Please use `getEl()` instead */ get $root(): HTMLElement; /** @description Please use `getConf()` instead */ get conf(): Config; } export default Artalk; export declare type ArtalkConfig = Config; export declare type ArtalkPlugin<T = any> = (ctx: Context, options?: T) => void; declare namespace ArtalkType { export { I18n, I18nKeys, Api, ApiHandlers, Config, ConfigPartial, ArtalkConfig, ConfigManager, CommentData, ListData, PageData, SiteData, UserData, UserDataForAdmin, NotifyData, EmoticonGrpData, EmoticonListData, ApiVersionData, ListFetchParams, ListLastFetchData, DataManager, NotifyLevel, UserInfoApiResponseData, FetchError, Context, LocalUser, UserManager, List, ListLayout, EditorState, Editor, EditorPluginManager, ListErrorData, ListFetchedArgs, EventPayloadMap, EventHandler, Event_2 as Event, EventOptions, EventManager, ArtalkPlugin, SidebarLayer, SidebarShowPayload, Layer, LayerManager, CheckerManager, Services } } export { ArtalkType } declare interface AuthAuthProviderInfo { icon: string; label: string; name: string; path?: string; } declare type CancelToken = Symbol | string | number; declare interface Checker<T = any> { el?: HTMLElement; inputType?: 'password' | 'text'; body: (checker: CheckerCtx) => HTMLElement; request: (checker: CheckerCtx, inputVal: string) => Promise<T>; onSuccess?: (checker: CheckerCtx, respData: T, inputVal: string, formEl: HTMLElement) => void; onError?: (checker: CheckerCtx, errData: any, inputVal: string, formEl: HTMLElement) => void; } declare interface CheckerCaptchaPayload extends CheckerPayload { img_data?: string; iframe?: string; } declare interface CheckerCtx { get<K extends keyof CheckerStore>(key: K): CheckerStore[K]; set<K extends keyof CheckerStore>(key: K, val: CheckerStore[K]): void; getOpts(): CheckerLauncherOptions; getApi(): Api; getUser(): UserManager; hideInteractInput(): void; triggerSuccess(): void; cancel(): void; } declare interface CheckerLauncherOptions { getApi: () => Api; getLayers: () => LayerManager; getUser: () => UserManager; getCaptchaIframeURL: () => string; onReload: () => void; } export declare interface CheckerManager { checkCaptcha: (payload: CheckerCaptchaPayload) => Promise<void>; checkAdmin: (payload: CheckerPayload) => Promise<void>; check: (checker: Checker, payload: CheckerPayload, beforeCheck?: (c: CheckerCtx) => void) => void; } declare interface CheckerPayload { onSuccess?: () => void; onMount?: (dialogEl: HTMLElement) => void; onCancel?: () => void; } declare interface CheckerStore { val?: string; img_data?: string; iframe?: string; } declare class CommentActions { private comment; private get data(); private get opts(); private getApi; constructor(comment: CommentNode); /** 投票操作 */ vote(choice: 'up' | 'down'): void; /** 管理员 - 评论状态修改 */ adminEdit(type: 'collapsed' | 'pending' | 'pinned', btnElem: ActionBtn): void; /** 管理员 - 评论删除 */ adminDelete(btnElem: ActionBtn): void; /** 快速跳转到该评论 */ goToReplyComment(): void; } export declare interface CommentData { /** 评论 ID */ id: number; /** 评论正文 */ content: string; /** 用户昵称 */ nick: string; /** 用户邮箱 (该字段仅管理员可见) */ email?: string; /** 用户邮箱(已加密) */ email_encrypted: string; /** 用户链接 */ link: string; /** 回复目标评论 ID */ rid: number; /** User Agent */ ua: string; /** 评论日期 */ date: string; /** 是否折叠 */ is_collapsed: boolean; /** 是否待审 */ is_pending: boolean; /** 是否置顶 */ is_pinned: boolean; /** 是否已验证 */ is_verified: boolean; /** 徽章文字 */ badge_name?: string; /** 徽章颜色 */ badge_color?: string; /** IP 属地 */ ip_region?: string; /** 是否允许回复 */ is_allow_reply: boolean; /** 评论页面 key */ page_key: string; /** 评论页面 url */ page_url?: string; /** 是否可见 */ visible: boolean; /** 站点名(用于隔离) */ site_name: string; /** 赞同数 */ vote_up: number; /** 反对数 */ vote_down: number; } declare class CommentNode { $el?: HTMLElement; private renderInstance; private actionInstance; private data; private opts; private parent; private children; private nestCurt; constructor(data: CommentData, opts: CommentOptions); /** 渲染 UI */ render(): void; /** 获取评论操作实例对象 */ getActions(): CommentActions; /** 获取评论渲染器实例对象 */ getRender(): Render; /** 获取评论数据 */ getData(): CommentData; /** 设置数据 */ setData(data: CommentData): void; /** 获取父评论 */ getParent(): CommentNode | null; /** 获取所有子评论 */ getChildren(): CommentNode[]; /** 获取当前嵌套层数 */ getNestCurt(): number; /** 判断是否为根评论 */ getIsRoot(): boolean; /** 获取评论 ID */ getID(): number; /** 置入子评论 */ putChild(childNode: CommentNode, insertMode?: 'append' | 'prepend'): void; /** 获取存放子评论的元素对象 */ getChildrenWrapEl(): HTMLElement; /** 获取所有父评论 */ getParents(): CommentNode[]; /** * Get the element of the comment * * The `getEl()` will always return the latest $el after calling `render()`. * Please be aware of the memory leak if you use the $el reference directly. */ getEl(): HTMLElement; /** * Focus on the comment * * Scroll to the comment and perform flash animation */ focus(): void; scrollIntoView(): void; /** * Remove the comment node */ remove(): void; /** 获取 Gravatar 头像 URL */ getGravatarURL(): string; /** 获取评论 markdown 解析后的内容 */ getContentMarked(): string; /** 获取格式化后的日期 */ getDateFormatted(): any; /** 获取用户 UserAgent 信息 */ getUserUA(): { browser: string; os: string; }; /** 获取配置 */ getOpts(): CommentOptions; } declare interface CommentOptions { onAfterRender?: () => void; onDelete?: (c: CommentNode) => void; /** The comment being replied to (linked comment) */ replyTo?: CommentData; flatMode: boolean; vote: boolean; voteDown: boolean; uaBadge: boolean; nestMax: number; gravatar: Config['gravatar']; heightLimit: Config['heightLimit']; avatarURLBuilder: Config['avatarURLBuilder']; scrollRelativeTo: Config['scrollRelativeTo']; dateFormatter: Config['dateFormatter']; getApi: () => Api; replyComment: Context['replyComment']; editComment: Context['editComment']; } declare interface CommonApiVersionData { app: string; commit_hash: string; version: string; } declare interface CommonConfData { frontend_conf: CommonMap; version: CommonApiVersionData; } declare interface CommonJSONResult { /** Data */ data: any; /** Message */ msg: string; } declare type