artalk
    Preparing search index...

    Interface Context

    Artalk Context

    interface Context {
        $root: HTMLElement;
        checkerLauncher: CheckerManager;
        conf: Config;
        data: DataManager;
        editor: Editor;
        editorPlugs: EditorPluginManager | undefined;
        layerManager: LayerManager;
        list: List;
        sidebarLayer: SidebarLayer;
        user: UserManager;
        $t(
            key:
                | "link"
                | "client"
                | "server"
                | "open"
                | "cancel"
                | "loading"
                | "pending"
                | "username"
                | "email"
                | "confirm"
                | "days"
                | "hours"
                | "minutes"
                | "seconds"
                | "expand"
                | "ignore"
                | "emoticon"
                | "now"
                | "reply"
                | "edit"
                | "placeholder"
                | "noComment"
                | "send"
                | "signIn"
                | "signUp"
                | "save"
                | "nick"
                | "preview"
                | "uploadImage"
                | "uploadFail"
                | "commentFail"
                | "restoredMsg"
                | "onlyAdminCanReply"
                | "uploadLoginMsg"
                | "counter"
                | "sortLatest"
                | "sortOldest"
                | "sortBest"
                | "sortAuthor"
                | "openComment"
                | "closeComment"
                | "listLoadFailMsg"
                | "listRetry"
                | "loadMore"
                | "admin"
                | "voteUp"
                | "voteDown"
                | "voteFail"
                | "readMore"
                | "actionConfirm"
                | "collapse"
                | "collapsed"
                | "collapsedMsg"
                | "approved"
                | "pendingMsg"
                | "editCancel"
                | "delete"
                | "deleteConfirm"
                | "pin"
                | "unpin"
                | "adminCheck"
                | "captchaCheck"
                | "msgCenter"
                | "ctrlCenter"
                | "userProfile"
                | "noAccountPrompt"
                | "haveAccountPrompt"
                | "forgetPassword"
                | "resetPassword"
                | "changePassword"
                | "confirmPassword"
                | "passwordMismatch"
                | "verificationCode"
                | "verifySend"
                | "verifyResend"
                | "waitSeconds"
                | "emailVerified"
                | "password"
                | "nextStep"
                | "skipVerify"
                | "logoutConfirm"
                | "accountMergeNotice"
                | "accountMergeSelectOne"
                | "accountMergeConfirm"
                | "dismiss"
                | "merge"
                | "loadFail"
                | "editing"
                | "editFail"
                | "deleting"
                | "deleteFail"
                | "reqGot"
                | "reqAborted"
                | "updateMsg"
                | "currentVersion"
                | "openName",
            args?: { [key: string]: string },
        ): string;
        checkAdmin(payload: CheckerPayload): Promise<void>;
        checkCaptcha(payload: CheckerCaptchaPayload): Promise<void>;
        destroy(): void;
        editComment(commentData: CommentData, $comment: HTMLElement): void;
        editorHideLoading(): void;
        editorResetState(): void;
        editorShowLoading(): void;
        editorShowNotify(msg: string, type: NotifyLevel): void;
        fetch(params: Partial<ListFetchParams>): void;
        get<T extends keyof Services>(key: T): Services[T];
        getApi(): Api;
        getApiHandlers(): ApiHandlers;
        getCommentDataList(): CommentData[];
        getCommentList(): CommentNode[];
        getCommentNodes(): CommentNode[];
        getComments(): CommentData[];
        getConf(): Config;
        getData(): DataManager;
        getEl(): HTMLElement;
        getMarked(): Marked<string, string> | undefined;
        getUser(): UserManager;
        hideSidebar(): void;
        inject<T = undefined, K extends keyof Services = any>(
            key: K,
        ): T extends undefined ? Services[K] : T;
        listGotoFirst(): void;
        off<K extends keyof EventPayloadMap>(
            name: K,
            handler: EventHandler<EventPayloadMap[K]>,
        ): void;
        on<K extends keyof EventPayloadMap>(
            name: K,
            handler: EventHandler<EventPayloadMap[K]>,
            opts?: EventOptions,
        ): void;
        provide<
            K extends keyof Services,
            T extends
            
                    | DataManager
                    | Editor
                    | ConfigManager
                    | Api
                    | UserManager
                    | CheckerManager
                    | ApiHandlers
                    | EditorPluginManager
                    | EventManager<EventPayloadMap>
                    | List
                    | SidebarLayer
                    | LayerManager
                    | undefined = any,
            D extends readonly (keyof Services)[] = any,
        >(
            key: K,
            impl: Constructor<T, Services, D>,
            deps?: D,
            opts?: ProvideFuncOptions,
        ): void;
        reload(): void;
        replyComment(commentData: CommentData, $comment: HTMLElement): void;
        setDarkMode(darkMode: boolean | "auto"): void;
        showSidebar(payload?: SidebarShowPayload): void;
        trigger<K extends keyof EventPayloadMap>(
            name: K,
            payload?: EventPayloadMap[K],
        ): void;
        updateConf(
            conf: {
                apiVersion?: string;
                avatarURLBuilder?: (comment: CommentData) => string;
                beforeSubmit?: (editor: Editor, next: () => void) => void;
                countEl?: string;
                darkMode?: boolean | "auto";
                dateFormatter?: (date: Date) => string;
                editorTravel?: boolean;
                el?: string | HTMLElement;
                emoticons?: string | false | object | any[];
                fetchCommentsOnInit?: boolean;
                flatMode?: boolean | "auto";
                gravatar?: { mirror?: string; params?: string };
                heightLimit?: {
                    children?: number;
                    content?: number;
                    scrollable?: boolean;
                };
                imgLazyLoad?: false
                | "native"
                | "data-src";
                imgUpload?: boolean;
                imgUploader?: (file: File) => Promise<string>;
                listFetchParamsModifier?: (params: any) => void;
                listSort?: boolean;
                listUnreadHighlight?: boolean;
                locale?:
                    | string
                    | {
                        accountMergeConfirm?: string;
                        accountMergeNotice?: string;
                        accountMergeSelectOne?: string;
                        actionConfirm?: string;
                        admin?: string;
                        adminCheck?: string;
                        approved?: string;
                        cancel?: string;
                        captchaCheck?: string;
                        changePassword?: string;
                        client?: string;
                        closeComment?: string;
                        collapse?: string;
                        collapsed?: string;
                        collapsedMsg?: string;
                        commentFail?: string;
                        confirm?: string;
                        confirmPassword?: string;
                        counter?: string;
                        ctrlCenter?: string;
                        currentVersion?: string;
                        days?: string;
                        delete?: string;
                        deleteConfirm?: string;
                        deleteFail?: string;
                        deleting?: string;
                        dismiss?: string;
                        edit?: string;
                        editCancel?: string;
                        editFail?: string;
                        editing?: string;
                        email?: string;
                        emailVerified?: string;
                        emoticon?: string;
                        expand?: string;
                        forgetPassword?: string;
                        haveAccountPrompt?: string;
                        hours?: string;
                        ignore?: string;
                        link?: string;
                        listLoadFailMsg?: string;
                        listRetry?: string;
                        loadFail?: string;
                        loading?: string;
                        loadMore?: string;
                        logoutConfirm?: string;
                        merge?: string;
                        minutes?: string;
                        msgCenter?: string;
                        nextStep?: string;
                        nick?: string;
                        noAccountPrompt?: string;
                        noComment?: string;
                        now?: string;
                        onlyAdminCanReply?: string;
                        open?: string;
                        openComment?: string;
                        openName?: string;
                        password?: string;
                        passwordMismatch?: string;
                        pending?: string;
                        pendingMsg?: string;
                        pin?: string;
                        placeholder?: string;
                        preview?: string;
                        readMore?: string;
                        reply?: string;
                        reqAborted?: string;
                        reqGot?: string;
                        resetPassword?: string;
                        restoredMsg?: string;
                        save?: string;
                        seconds?: string;
                        send?: string;
                        server?: string;
                        signIn?: string;
                        signUp?: string;
                        skipVerify?: string;
                        sortAuthor?: string;
                        sortBest?: string;
                        sortLatest?: string;
                        sortOldest?: string;
                        unpin?: string;
                        updateMsg?: string;
                        uploadFail?: string;
                        uploadImage?: string;
                        uploadLoginMsg?: string;
                        username?: string;
                        userProfile?: string;
                        verificationCode?: string;
                        verifyResend?: string;
                        verifySend?: string;
                        voteDown?: string;
                        voteFail?: string;
                        voteUp?: string;
                        waitSeconds?: string;
                    };
                markedOptions?: {
                    async?: boolean;
                    breaks?: boolean;
                    extensions?: | {
                        block?: TokenizerExtensionFunction[];
                        childTokens?: { [key: string]: string[]
                        | undefined };
                        inline?: TokenizerExtensionFunction[];
                        renderers?: {
                            [key: string]:
                                | RendererExtensionFunction<string, string>
                                | undefined;
                        };
                        startBlock?: TokenizerStartFunction[];
                        startInline?: TokenizerStartFunction[];
                    }
                    | null;
                    gfm?: boolean;
                    hooks?: | {
                        block?: boolean;
                        emStrongMask?: (src: string) => string;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        postprocess?: (html: string) => string;
                        preprocess?: (markdown: string) => string;
                        processAllTokens?: (
                            tokens: Token[] | TokensList,
                        ) => Token[] | TokensList;
                        provideLexer?: (
                            block?: boolean,
                        ) => <ParserOutput = string, RendererOutput = string>(
                            src: string,
                            options?: MarkedOptions<ParserOutput, RendererOutput>,
                        ) => Token[];
                        provideParser?: (
                            block?: boolean,
                        ) => (
                            tokens: Token[],
                            options?: MarkedOptions<string, string>,
                        ) => string;
                    }
                    | null;
                    pedantic?: boolean;
                    renderer?: | {
                        blockquote?: (__namedParameters: Blockquote) => string;
                        br?: (token: Br) => string;
                        checkbox?: (__namedParameters: Checkbox) => string;
                        code?: (__namedParameters: Code) => string;
                        codespan?: (__namedParameters: Codespan) => string;
                        def?: (token: Def) => string;
                        del?: (__namedParameters: Del) => string;
                        em?: (__namedParameters: Em) => string;
                        heading?: (__namedParameters: Heading) => string;
                        hr?: (token: Hr) => string;
                        html?: (__namedParameters: HTML | Tag) => string;
                        image?: (__namedParameters: Image) => string;
                        link?: (__namedParameters: Link) => string;
                        list?: (token: List) => string;
                        listitem?: (item: ListItem) => string;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        paragraph?: (__namedParameters: Paragraph) => string;
                        parser?: {
                            options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                            parse?: (tokens: Token[]) => string;
                            parseInline?: (
                                tokens: Token[],
                                renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                            ) => string;
                            renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                            textRenderer?: {
                                br?: () => ...;
                                checkbox?: (__namedParameters: ...) => ...;
                                codespan?: (__namedParameters: ...) => ...;
                                del?: (__namedParameters: ...) => ...;
                                em?: (__namedParameters: ...) => ...;
                                html?: (__namedParameters: ...) => ...;
                                image?: (__namedParameters: ...) => ...;
                                link?: (__namedParameters: ...) => ...;
                                strong?: (__namedParameters: ...) => ...;
                                text?: (__namedParameters: ...) => ...;
                            };
                        };
                        space?: (token: Space) => string;
                        strong?: (__namedParameters: Strong) => string;
                        table?: (token: Table) => string;
                        tablecell?: (token: TableCell) => string;
                        tablerow?: (__namedParameters: TableRow<string>) => string;
                        text?: (token: Escape | Text) => string;
                    }
                    | null;
                    silent?: boolean;
                    tokenizer?: | {
                        autolink?: (src: string) => Link | undefined;
                        blockquote?: (src: string) => Blockquote | undefined;
                        br?: (src: string) => Br | undefined;
                        code?: (src: string) => Code | undefined;
                        codespan?: (src: string) => Codespan | undefined;
                        def?: (src: string) => Def | undefined;
                        del?: (
                            src: string,
                            maskedSrc: string,
                            prevChar?: string,
                        ) => Del | undefined;
                        emStrong?: (
                            src: string,
                            maskedSrc: string,
                            prevChar?: string,
                        ) => Em | Strong | undefined;
                        escape?: (src: string) => Escape | undefined;
                        fences?: (src: string) => Code | undefined;
                        heading?: (src: string) => Heading | undefined;
                        hr?: (src: string) => Hr | undefined;
                        html?: (src: string) => HTML | undefined;
                        inlineText?: (src: string) => Text | undefined;
                        lexer?: {
                            blockTokens?: {
                                (
                                    src: string,
                                    tokens?: (...)[],
                                    lastParagraphClipped?: boolean,
                                ): Token[];
                                (
                                    src: string,
                                    tokens?: TokensList,
                                    lastParagraphClipped?: boolean,
                                ): TokensList;
                            };
                            inline?: (src: string, tokens?: (...)[]) => Token[];
                            inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                            inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                            lex?: (src: string) => TokensList;
                            options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                            state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                            tokens?: {
                                "[unscopables]": {
                                    "[iterator]"?: (...) | (...) | (...);
                                    "[unscopables]"?: (...) | (...) | (...);
                                    at?: (...) | (...) | (...);
                                    concat?: (...) | (...) | (...);
                                    copyWithin?: (...) | (...) | (...);
                                    entries?: (...) | (...) | (...);
                                    every?: (...) | (...) | (...);
                                    fill?: (...) | (...) | (...);
                                    filter?: (...) | (...) | (...);
                                    find?: (...) | (...) | (...);
                                    findIndex?: (...) | (...) | (...);
                                    findLast?: (...) | (...) | (...);
                                    findLastIndex?: (...) | (...) | (...);
                                    flat?: (...) | (...) | (...);
                                    flatMap?: (...) | (...) | (...);
                                    forEach?: (...) | (...) | (...);
                                    includes?: (...) | (...) | (...);
                                    indexOf?: (...) | (...) | (...);
                                    join?: (...) | (...) | (...);
                                    keys?: (...) | (...) | (...);
                                    lastIndexOf?: (...) | (...) | (...);
                                    length?: (...) | (...) | (...);
                                    map?: (...) | (...) | (...);
                                    pop?: (...) | (...) | (...);
                                    push?: (...) | (...) | (...);
                                    reduce?: (...) | (...) | (...);
                                    reduceRight?: (...) | (...) | (...);
                                    reverse?: (...) | (...) | (...);
                                    shift?: (...) | (...) | (...);
                                    slice?: (...) | (...) | (...);
                                    some?: (...) | (...) | (...);
                                    sort?: (...) | (...) | (...);
                                    splice?: (...) | (...) | (...);
                                    toLocaleString?: (...) | (...) | (...);
                                    toReversed?: (...) | (...) | (...);
                                    toSorted?: (...) | (...) | (...);
                                    toSpliced?: (...) | (...) | (...);
                                    toString?: (...) | (...) | (...);
                                    unshift?: (...) | (...) | (...);
                                    values?: (...) | (...) | (...);
                                    with?: (...) | (...) | (...);
                                    [key: number]: (...) | (...) | (...);
                                };
                                length: number;
                                links: { [key: string]: (...)
                                | (...) };
                                "[iterator]"(): ArrayIterator<Token>;
                                at(index: number): Token | undefined;
                                concat(...items: ConcatArray<(...)>[]): Token[];
                                concat(...items: ((...) | (...))[]): Token[];
                                copyWithin(target: number, start: number, end?: number): this;
                                entries(): ArrayIterator<[(...), (...)]>;
                                every<S extends Token>(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => value is S,
                                    thisArg?: any,
                                ): this is S[];
                                every(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => unknown,
                                    thisArg?: any,
                                ): boolean;
                                fill(value: Token, start?: number, end?: number): this;
                                filter<S extends Token>(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => value is S,
                                    thisArg?: any,
                                ): S[];
                                filter(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => unknown,
                                    thisArg?: any,
                                ): Token[];
                                find<S extends Token>(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        obj: (...)[],
                                    ) => value is S,
                                    thisArg?: any,
                                ): S | undefined;
                                find(
                                    predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                    thisArg?: any,
                                ): Token | undefined;
                                findIndex(
                                    predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                    thisArg?: any,
                                ): number;
                                findLast<S extends Token>(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => value is S,
                                    thisArg?: any,
                                ): S | undefined;
                                findLast(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => unknown,
                                    thisArg?: any,
                                ): Token | undefined;
                                findLastIndex(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => unknown,
                                    thisArg?: any,
                                ): number;
                                flat<A, D extends number = 1>(
                                    this: A,
                                    depth?: D,
                                ): FlatArray<(...), (...)>[];
                                flatMap<U, This = undefined>(
                                    callback: (
                                        this: This,
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => (...) | (...),
                                    thisArg?: This,
                                ): U[];
                                forEach(
                                    callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                    thisArg?: any,
                                ): void;
                                includes(searchElement: Token, fromIndex?: number): boolean;
                                indexOf(searchElement: Token, fromIndex?: number): number;
                                join(separator?: string): string;
                                keys(): ArrayIterator<number>;
                                lastIndexOf(searchElement: Token, fromIndex?: number): number;
                                map<U>(
                                    callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                    thisArg?: any,
                                ): U[];
                                pop(): Token | undefined;
                                push(...items: Token[]): number;
                                reduce(
                                    callbackfn: (
                                        previousValue: Token,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => Token,
                                ): Token;
                                reduce(
                                    callbackfn: (
                                        previousValue: Token,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => Token,
                                    initialValue: Token,
                                ): Token;
                                reduce<U>(
                                    callbackfn: (
                                        previousValue: U,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => U,
                                    initialValue: U,
                                ): U;
                                reduceRight(
                                    callbackfn: (
                                        previousValue: Token,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => Token,
                                ): Token;
                                reduceRight(
                                    callbackfn: (
                                        previousValue: Token,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => Token,
                                    initialValue: Token,
                                ): Token;
                                reduceRight<U>(
                                    callbackfn: (
                                        previousValue: U,
                                        currentValue: Token,
                                        currentIndex: number,
                                        array: (...)[],
                                    ) => U,
                                    initialValue: U,
                                ): U;
                                reverse(): Token[];
                                shift(): Token | undefined;
                                slice(start?: number, end?: number): Token[];
                                some(
                                    predicate: (
                                        value: Token,
                                        index: number,
                                        array: (...)[],
                                    ) => unknown,
                                    thisArg?: any,
                                ): boolean;
                                sort(compareFn?: (a: ..., b: ...) => ...): this;
                                splice(start: number, deleteCount?: number): Token[];
                                splice(
                                    start: number,
                                    deleteCount: number,
                                    ...items: Token[],
                                ): Token[];
                                toLocaleString(): string;
                                toLocaleString(
                                    locales: string | (...)[],
                                    options?: (...) & (...),
                                ): string;
                                toReversed(): Token[];
                                toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                                toSpliced(
                                    start: number,
                                    deleteCount: number,
                                    ...items: Token[],
                                ): Token[];
                                toSpliced(start: number, deleteCount?: number): Token[];
                                toString(): string;
                                unshift(...items: Token[]): number;
                                values(): ArrayIterator<Token>;
                                with(index: number, value: Token): Token[];
                                [key: number]:
                                    | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; type?: ... }
                                    | { checked?: ...; raw?: ...; type?: ... }
                                    | {
                                        codeBlockStyle?: ...;
                                        escaped?: ...;
                                        lang?: ...;
                                        raw?: ...;
                                        text?: ...;
                                        type?: ...;
                                    }
                                    | { raw?: ...; text?: ...; type?: ... }
                                    | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                    | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; text?: ...; type?: ... }
                                    | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; type?: ... }
                                    | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                    | {
                                        href?: ...;
                                        raw?: ...;
                                        text?: ...;
                                        title?: ...;
                                        tokens?: ...;
                                        type?: ...;
                                    }
                                    | {
                                        href?: ...;
                                        raw?: ...;
                                        text?: ...;
                                        title?: ...;
                                        tokens?: ...;
                                        type?: ...;
                                    }
                                    | {
                                        items?: ...;
                                        loose?: ...;
                                        ordered?: ...;
                                        raw?: ...;
                                        start?: ...;
                                        type?: ...;
                                    }
                                    | {
                                        checked?: ...;
                                        loose?: ...;
                                        raw?: ...;
                                        task?: ...;
                                        text?: ...;
                                        tokens?: ...;
                                        type?: ...;
                                    }
                                    | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; type?: ... }
                                    | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                    | {
                                        block?: ...;
                                        inLink?: ...;
                                        inRawBlock?: ...;
                                        raw?: ...;
                                        text?: ...;
                                        type?: ...;
                                    }
                                    | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                    | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                            };
                        };
                        lheading?: (src: string) => Heading | undefined;
                        link?: (src: string) => Image | Link | undefined;
                        list?: (src: string) => List | undefined;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        paragraph?: (src: string) => Paragraph | undefined;
                        reflink?: (
                            src: string,
                            links: Links,
                        ) => Image | Link | Text | undefined;
                        rules?: {
                            block?: {
                                blockquote?: RegExp;
                                code?: RegExp;
                                def?: RegExp;
                                fences?: RegExp;
                                heading?: RegExp;
                                hr?: RegExp;
                                html?: RegExp;
                                lheading?: RegExp;
                                list?: RegExp;
                                newline?: RegExp;
                                paragraph?: RegExp;
                                table?: RegExp;
                                text?: RegExp;
                            };
                            inline?: {
                                _backpedal?: RegExp;
                                anyPunctuation?: RegExp;
                                autolink?: RegExp;
                                blockSkip?: RegExp;
                                br?: RegExp;
                                code?: RegExp;
                                del?: RegExp;
                                delLDelim?: RegExp;
                                delRDelim?: RegExp;
                                emStrongLDelim?: RegExp;
                                emStrongRDelimAst?: RegExp;
                                emStrongRDelimUnd?: RegExp;
                                escape?: RegExp;
                                link?: RegExp;
                                nolink?: RegExp;
                                punctuation?: RegExp;
                                reflink?: RegExp;
                                reflinkSearch?: RegExp;
                                tag?: RegExp;
                                text?: RegExp;
                                url?: RegExp;
                            };
                            other?: {
                                anyLine?: RegExp;
                                beginningSpace?: RegExp;
                                blankLine?: RegExp;
                                blockquoteBeginRegex?: (indent: ...) => ...;
                                blockquoteSetextReplace?: RegExp;
                                blockquoteSetextReplace2?: RegExp;
                                blockquoteStart?: RegExp;
                                caret?: RegExp;
                                carriageReturn?: RegExp;
                                codeRemoveIndent?: RegExp;
                                doubleBlankLine?: RegExp;
                                endAngleBracket?: RegExp;
                                endATag?: RegExp;
                                endingHash?: RegExp;
                                endingNewline?: RegExp;
                                endingSpaceChar?: RegExp;
                                endPreScriptTag?: RegExp;
                                escapeReplace?: RegExp;
                                escapeReplaceNoEncode?: RegExp;
                                escapeTest?: RegExp;
                                escapeTestNoEncode?: RegExp;
                                fencesBeginRegex?: (indent: ...) => ...;
                                findPipe?: RegExp;
                                headingBeginRegex?: (indent: ...) => ...;
                                hrefBrackets?: RegExp;
                                hrRegex?: (indent: ...) => ...;
                                htmlBeginRegex?: (indent: ...) => ...;
                                indentCodeCompensation?: RegExp;
                                listIsTask?: RegExp;
                                listItemRegex?: (bull: ...) => ...;
                                listReplaceNesting?: RegExp;
                                listReplaceTask?: RegExp;
                                listTaskCheckbox?: RegExp;
                                multipleSpaceGlobal?: RegExp;
                                newLineCharGlobal?: RegExp;
                                nextBulletRegex?: (indent: ...) => ...;
                                nonSpaceChar?: RegExp;
                                notSpaceStart?: RegExp;
                                outputLinkReplace?: RegExp;
                                pedanticHrefTitle?: RegExp;
                                percentDecode?: RegExp;
                                slashPipe?: RegExp;
                                spaceLine?: RegExp;
                                splitPipe?: RegExp;
                                startAngleBracket?: RegExp;
                                startATag?: RegExp;
                                startingSpaceChar?: RegExp;
                                startPreScriptTag?: RegExp;
                                tabCharGlobal?: RegExp;
                                tableAlignCenter?: RegExp;
                                tableAlignChars?: RegExp;
                                tableAlignLeft?: RegExp;
                                tableAlignRight?: RegExp;
                                tableDelimiter?: RegExp;
                                tableRowBlankLine?: RegExp;
                                unicodeAlphaNumeric?: RegExp;
                            };
                        };
                        space?: (src: string) => Space | undefined;
                        table?: (src: string) => Table | undefined;
                        tag?: (src: string) => Tag | undefined;
                        text?: (src: string) => Text | undefined;
                        url?: (src: string) => Link | undefined;
                    }
                    | null;
                    walkTokens?: | (
                        (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                    )
                    | null;
                };
                markedReplacers?: ((raw: string) => string)[];
                nestMax?: number;
                nestSort?: "DATE_ASC" | "DATE_DESC";
                noComment?: string;
                pageKey?: string;
                pageTitle?: string;
                pageVote?:
                    | boolean
                    | {
                        activeClass?: string;
                        downBtnEl?: string;
                        downCountEl?: string;
                        upBtnEl?: string;
                        upCountEl?: string;
                    };
                pagination?: {
                    autoLoad?: boolean;
                    pageSize?: number;
                    readMore?: boolean;
                };
                placeholder?: string;
                pluginURLs?: string[];
                preferRemoteConf?: boolean;
                preview?: boolean;
                pvAdd?: boolean;
                pvEl?: string;
                reqTimeout?: number;
                scrollRelativeTo?: () => HTMLElement;
                sendBtn?: string;
                server?: string;
                site?: string;
                statPageKeyAttr?: string;
                uaBadge?: boolean;
                useBackendConf?: boolean;
                versionCheck?: boolean;
                vote?: boolean;
                voteDown?: boolean;
            },
        ): void;
        watchConf<T extends (keyof Config)[]>(
            keys: T,
            effect: (val: Pick<Config, T[number]>) => void,
        ): void;
    }

    Hierarchy (View Summary)

    Index
    $root: HTMLElement

    The root element of Artalk

    Use getEl() instead

    checkerLauncher: CheckerManager

    Use inject('checkers') instead.

    conf: Config

    Get config object

    Use getConf() and updateConf() instead

    Use getData() or inject('data') instead.

    editor: Editor

    Use inject('editor') instead.

    editorPlugs: EditorPluginManager | undefined

    Use inject('editorPlugs') instead.

    layerManager: LayerManager

    Use inject('layers') instead.

    list: List

    Use inject('list') instead.

    sidebarLayer: SidebarLayer

    Use inject('sidebar') instead.

    Use getUser() or inject('user') instead.

    • Translate i18n message

      Parameters

      • key:
            | "link"
            | "client"
            | "server"
            | "open"
            | "cancel"
            | "loading"
            | "pending"
            | "username"
            | "email"
            | "confirm"
            | "days"
            | "hours"
            | "minutes"
            | "seconds"
            | "expand"
            | "ignore"
            | "emoticon"
            | "now"
            | "reply"
            | "edit"
            | "placeholder"
            | "noComment"
            | "send"
            | "signIn"
            | "signUp"
            | "save"
            | "nick"
            | "preview"
            | "uploadImage"
            | "uploadFail"
            | "commentFail"
            | "restoredMsg"
            | "onlyAdminCanReply"
            | "uploadLoginMsg"
            | "counter"
            | "sortLatest"
            | "sortOldest"
            | "sortBest"
            | "sortAuthor"
            | "openComment"
            | "closeComment"
            | "listLoadFailMsg"
            | "listRetry"
            | "loadMore"
            | "admin"
            | "voteUp"
            | "voteDown"
            | "voteFail"
            | "readMore"
            | "actionConfirm"
            | "collapse"
            | "collapsed"
            | "collapsedMsg"
            | "approved"
            | "pendingMsg"
            | "editCancel"
            | "delete"
            | "deleteConfirm"
            | "pin"
            | "unpin"
            | "adminCheck"
            | "captchaCheck"
            | "msgCenter"
            | "ctrlCenter"
            | "userProfile"
            | "noAccountPrompt"
            | "haveAccountPrompt"
            | "forgetPassword"
            | "resetPassword"
            | "changePassword"
            | "confirmPassword"
            | "passwordMismatch"
            | "verificationCode"
            | "verifySend"
            | "verifyResend"
            | "waitSeconds"
            | "emailVerified"
            | "password"
            | "nextStep"
            | "skipVerify"
            | "logoutConfirm"
            | "accountMergeNotice"
            | "accountMergeSelectOne"
            | "accountMergeConfirm"
            | "dismiss"
            | "merge"
            | "loadFail"
            | "editing"
            | "editFail"
            | "deleting"
            | "deleteFail"
            | "reqGot"
            | "reqAborted"
            | "updateMsg"
            | "currentVersion"
            | "openName"
      • Optionalargs: { [key: string]: string }

      Returns string

    • Check captcha

      Parameters

      • payload: CheckerCaptchaPayload

      Returns Promise<void>

    • Update the config

      Parameters

      • conf: {
            apiVersion?: string;
            avatarURLBuilder?: (comment: CommentData) => string;
            beforeSubmit?: (editor: Editor, next: () => void) => void;
            countEl?: string;
            darkMode?: boolean | "auto";
            dateFormatter?: (date: Date) => string;
            editorTravel?: boolean;
            el?: string | HTMLElement;
            emoticons?: string | false | object | any[];
            fetchCommentsOnInit?: boolean;
            flatMode?: boolean | "auto";
            gravatar?: { mirror?: string; params?: string };
            heightLimit?: { children?: number; content?: number; scrollable?: boolean };
            imgLazyLoad?: false | "native" | "data-src";
            imgUpload?: boolean;
            imgUploader?: (file: File) => Promise<string>;
            listFetchParamsModifier?: (params: any) => void;
            listSort?: boolean;
            listUnreadHighlight?: boolean;
            locale?:
                | string
                | {
                    accountMergeConfirm?: string;
                    accountMergeNotice?: string;
                    accountMergeSelectOne?: string;
                    actionConfirm?: string;
                    admin?: string;
                    adminCheck?: string;
                    approved?: string;
                    cancel?: string;
                    captchaCheck?: string;
                    changePassword?: string;
                    client?: string;
                    closeComment?: string;
                    collapse?: string;
                    collapsed?: string;
                    collapsedMsg?: string;
                    commentFail?: string;
                    confirm?: string;
                    confirmPassword?: string;
                    counter?: string;
                    ctrlCenter?: string;
                    currentVersion?: string;
                    days?: string;
                    delete?: string;
                    deleteConfirm?: string;
                    deleteFail?: string;
                    deleting?: string;
                    dismiss?: string;
                    edit?: string;
                    editCancel?: string;
                    editFail?: string;
                    editing?: string;
                    email?: string;
                    emailVerified?: string;
                    emoticon?: string;
                    expand?: string;
                    forgetPassword?: string;
                    haveAccountPrompt?: string;
                    hours?: string;
                    ignore?: string;
                    link?: string;
                    listLoadFailMsg?: string;
                    listRetry?: string;
                    loadFail?: string;
                    loading?: string;
                    loadMore?: string;
                    logoutConfirm?: string;
                    merge?: string;
                    minutes?: string;
                    msgCenter?: string;
                    nextStep?: string;
                    nick?: string;
                    noAccountPrompt?: string;
                    noComment?: string;
                    now?: string;
                    onlyAdminCanReply?: string;
                    open?: string;
                    openComment?: string;
                    openName?: string;
                    password?: string;
                    passwordMismatch?: string;
                    pending?: string;
                    pendingMsg?: string;
                    pin?: string;
                    placeholder?: string;
                    preview?: string;
                    readMore?: string;
                    reply?: string;
                    reqAborted?: string;
                    reqGot?: string;
                    resetPassword?: string;
                    restoredMsg?: string;
                    save?: string;
                    seconds?: string;
                    send?: string;
                    server?: string;
                    signIn?: string;
                    signUp?: string;
                    skipVerify?: string;
                    sortAuthor?: string;
                    sortBest?: string;
                    sortLatest?: string;
                    sortOldest?: string;
                    unpin?: string;
                    updateMsg?: string;
                    uploadFail?: string;
                    uploadImage?: string;
                    uploadLoginMsg?: string;
                    username?: string;
                    userProfile?: string;
                    verificationCode?: string;
                    verifyResend?: string;
                    verifySend?: string;
                    voteDown?: string;
                    voteFail?: string;
                    voteUp?: string;
                    waitSeconds?: string;
                };
            markedOptions?: {
                async?: boolean;
                breaks?: boolean;
                extensions?: | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null;
                gfm?: boolean;
                hooks?: | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null;
                pedantic?: boolean;
                renderer?: | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null;
                silent?: boolean;
                tokenizer?: | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    obj: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null;
                walkTokens?: | (
                    (token: Token) => void | Promise<void> | (void | Promise<void>)[]
                )
                | null;
            };
            markedReplacers?: ((raw: string) => string)[];
            nestMax?: number;
            nestSort?: "DATE_ASC" | "DATE_DESC";
            noComment?: string;
            pageKey?: string;
            pageTitle?: string;
            pageVote?:
                | boolean
                | {
                    activeClass?: string;
                    downBtnEl?: string;
                    downCountEl?: string;
                    upBtnEl?: string;
                    upCountEl?: string;
                };
            pagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean };
            placeholder?: string;
            pluginURLs?: string[];
            preferRemoteConf?: boolean;
            preview?: boolean;
            pvAdd?: boolean;
            pvEl?: string;
            reqTimeout?: number;
            scrollRelativeTo?: () => HTMLElement;
            sendBtn?: string;
            server?: string;
            site?: string;
            statPageKeyAttr?: string;
            uaBadge?: boolean;
            useBackendConf?: boolean;
            versionCheck?: boolean;
            vote?: boolean;
            voteDown?: boolean;
        }
        • OptionalapiVersion?: string

          Backend API version (system data, not allowed for user modification)

        • OptionalavatarURLBuilder?: (comment: CommentData) => string

          Avatar URL generator function

        • OptionalbeforeSubmit?: (editor: Editor, next: () => void) => void

          Callback before submitting a comment

        • OptionalcountEl?: string

          Selector for the element binding to the comment count

        • OptionaldarkMode?: boolean | "auto"

          Dark mode settings

        • OptionaldateFormatter?: (date: Date) => string

          Custom date formatter

        • OptionaleditorTravel?: boolean

          Movable comment box (display below the comment to be replied)

        • Optionalel?: string | HTMLElement

          Element selector or Element to mount the Artalk

        • Optionalemoticons?: string | false | object | any[]

          Emoticons settings

        • OptionalfetchCommentsOnInit?: boolean

          Immediately fetch comments when Artalk instance is initialized

        • OptionalflatMode?: boolean | "auto"

          Flat mode for comment display

        • Optionalgravatar?: { mirror?: string; params?: string }

          Gravatar avatar settings

          • Optionalmirror?: string

            API endpoint

          • Optionalparams?: string

            API parameters

        • OptionalheightLimit?: { children?: number; content?: number; scrollable?: boolean }

          Height limit configuration

          • Optionalchildren?: number

            Maximum height for child comments

          • Optionalcontent?: number

            Maximum height for comment content

          • Optionalscrollable?: boolean

            Whether the content is scrollable

        • OptionalimgLazyLoad?: false | "native" | "data-src"

          Image lazy load mode

        • OptionalimgUpload?: boolean

          Enable image upload feature

        • OptionalimgUploader?: (file: File) => Promise<string>

          Image uploader function

        • OptionallistFetchParamsModifier?: (params: any) => void

          Modifier for list fetch request parameters

        • OptionallistSort?: boolean

          Show sorting dropdown for comment list

        • OptionallistUnreadHighlight?: boolean

          List unread highlight (enable by default in artalk-sidebar)

        • Optionallocale?:
              | string
              | {
                  accountMergeConfirm?: string;
                  accountMergeNotice?: string;
                  accountMergeSelectOne?: string;
                  actionConfirm?: string;
                  admin?: string;
                  adminCheck?: string;
                  approved?: string;
                  cancel?: string;
                  captchaCheck?: string;
                  changePassword?: string;
                  client?: string;
                  closeComment?: string;
                  collapse?: string;
                  collapsed?: string;
                  collapsedMsg?: string;
                  commentFail?: string;
                  confirm?: string;
                  confirmPassword?: string;
                  counter?: string;
                  ctrlCenter?: string;
                  currentVersion?: string;
                  days?: string;
                  delete?: string;
                  deleteConfirm?: string;
                  deleteFail?: string;
                  deleting?: string;
                  dismiss?: string;
                  edit?: string;
                  editCancel?: string;
                  editFail?: string;
                  editing?: string;
                  email?: string;
                  emailVerified?: string;
                  emoticon?: string;
                  expand?: string;
                  forgetPassword?: string;
                  haveAccountPrompt?: string;
                  hours?: string;
                  ignore?: string;
                  link?: string;
                  listLoadFailMsg?: string;
                  listRetry?: string;
                  loadFail?: string;
                  loading?: string;
                  loadMore?: string;
                  logoutConfirm?: string;
                  merge?: string;
                  minutes?: string;
                  msgCenter?: string;
                  nextStep?: string;
                  nick?: string;
                  noAccountPrompt?: string;
                  noComment?: string;
                  now?: string;
                  onlyAdminCanReply?: string;
                  open?: string;
                  openComment?: string;
                  openName?: string;
                  password?: string;
                  passwordMismatch?: string;
                  pending?: string;
                  pendingMsg?: string;
                  pin?: string;
                  placeholder?: string;
                  preview?: string;
                  readMore?: string;
                  reply?: string;
                  reqAborted?: string;
                  reqGot?: string;
                  resetPassword?: string;
                  restoredMsg?: string;
                  save?: string;
                  seconds?: string;
                  send?: string;
                  server?: string;
                  signIn?: string;
                  signUp?: string;
                  skipVerify?: string;
                  sortAuthor?: string;
                  sortBest?: string;
                  sortLatest?: string;
                  sortOldest?: string;
                  unpin?: string;
                  updateMsg?: string;
                  uploadFail?: string;
                  uploadImage?: string;
                  uploadLoginMsg?: string;
                  username?: string;
                  userProfile?: string;
                  verificationCode?: string;
                  verifyResend?: string;
                  verifySend?: string;
                  voteDown?: string;
                  voteFail?: string;
                  voteUp?: string;
                  waitSeconds?: string;
              }

          Localization settings

        • OptionalmarkedOptions?: {
              async?: boolean;
              breaks?: boolean;
              extensions?:
                  | {
                      block?: TokenizerExtensionFunction[];
                      childTokens?: { [key: string]: string[]
                      | undefined };
                      inline?: TokenizerExtensionFunction[];
                      renderers?: {
                          [key: string]: RendererExtensionFunction<string, string> | undefined;
                      };
                      startBlock?: TokenizerStartFunction[];
                      startInline?: TokenizerStartFunction[];
                  }
                  | null;
              gfm?: boolean;
              hooks?: | {
                  block?: boolean;
                  emStrongMask?: (src: string) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  postprocess?: (html: string) => string;
                  preprocess?: (markdown: string) => string;
                  processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                  provideLexer?: (
                      block?: boolean,
                  ) => <ParserOutput = string, RendererOutput = string>(
                      src: string,
                      options?: MarkedOptions<ParserOutput, RendererOutput>,
                  ) => Token[];
                  provideParser?: (
                      block?: boolean,
                  ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
              }
              | null;
              pedantic?: boolean;
              renderer?: | {
                  blockquote?: (__namedParameters: Blockquote) => string;
                  br?: (token: Br) => string;
                  checkbox?: (__namedParameters: Checkbox) => string;
                  code?: (__namedParameters: Code) => string;
                  codespan?: (__namedParameters: Codespan) => string;
                  def?: (token: Def) => string;
                  del?: (__namedParameters: Del) => string;
                  em?: (__namedParameters: Em) => string;
                  heading?: (__namedParameters: Heading) => string;
                  hr?: (token: Hr) => string;
                  html?: (__namedParameters: HTML | Tag) => string;
                  image?: (__namedParameters: Image) => string;
                  link?: (__namedParameters: Link) => string;
                  list?: (token: List) => string;
                  listitem?: (item: ListItem) => string;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (__namedParameters: Paragraph) => string;
                  parser?: {
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      parse?: (tokens: Token[]) => string;
                      parseInline?: (
                          tokens: Token[],
                          renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                      ) => string;
                      renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                      textRenderer?: {
                          br?: () => ...;
                          checkbox?: (__namedParameters: ...) => ...;
                          codespan?: (__namedParameters: ...) => ...;
                          del?: (__namedParameters: ...) => ...;
                          em?: (__namedParameters: ...) => ...;
                          html?: (__namedParameters: ...) => ...;
                          image?: (__namedParameters: ...) => ...;
                          link?: (__namedParameters: ...) => ...;
                          strong?: (__namedParameters: ...) => ...;
                          text?: (__namedParameters: ...) => ...;
                      };
                  };
                  space?: (token: Space) => string;
                  strong?: (__namedParameters: Strong) => string;
                  table?: (token: Table) => string;
                  tablecell?: (token: TableCell) => string;
                  tablerow?: (__namedParameters: TableRow<string>) => string;
                  text?: (token: Escape | Text) => string;
              }
              | null;
              silent?: boolean;
              tokenizer?: | {
                  autolink?: (src: string) => Link | undefined;
                  blockquote?: (src: string) => Blockquote | undefined;
                  br?: (src: string) => Br | undefined;
                  code?: (src: string) => Code | undefined;
                  codespan?: (src: string) => Codespan | undefined;
                  def?: (src: string) => Def | undefined;
                  del?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Del | undefined;
                  emStrong?: (
                      src: string,
                      maskedSrc: string,
                      prevChar?: string,
                  ) => Em | Strong | undefined;
                  escape?: (src: string) => Escape | undefined;
                  fences?: (src: string) => Code | undefined;
                  heading?: (src: string) => Heading | undefined;
                  hr?: (src: string) => Hr | undefined;
                  html?: (src: string) => HTML | undefined;
                  inlineText?: (src: string) => Text | undefined;
                  lexer?: {
                      blockTokens?: {
                          (
                              src: string,
                              tokens?: (...)[],
                              lastParagraphClipped?: boolean,
                          ): Token[];
                          (
                              src: string,
                              tokens?: TokensList,
                              lastParagraphClipped?: boolean,
                          ): TokensList;
                      };
                      inline?: (src: string, tokens?: (...)[]) => Token[];
                      inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                      inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                      lex?: (src: string) => TokensList;
                      options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                      state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                      tokens?: {
                          "[unscopables]": {
                              "[iterator]"?: (...) | (...) | (...);
                              "[unscopables]"?: (...) | (...) | (...);
                              at?: (...) | (...) | (...);
                              concat?: (...) | (...) | (...);
                              copyWithin?: (...) | (...) | (...);
                              entries?: (...) | (...) | (...);
                              every?: (...) | (...) | (...);
                              fill?: (...) | (...) | (...);
                              filter?: (...) | (...) | (...);
                              find?: (...) | (...) | (...);
                              findIndex?: (...) | (...) | (...);
                              findLast?: (...) | (...) | (...);
                              findLastIndex?: (...) | (...) | (...);
                              flat?: (...) | (...) | (...);
                              flatMap?: (...) | (...) | (...);
                              forEach?: (...) | (...) | (...);
                              includes?: (...) | (...) | (...);
                              indexOf?: (...) | (...) | (...);
                              join?: (...) | (...) | (...);
                              keys?: (...) | (...) | (...);
                              lastIndexOf?: (...) | (...) | (...);
                              length?: (...) | (...) | (...);
                              map?: (...) | (...) | (...);
                              pop?: (...) | (...) | (...);
                              push?: (...) | (...) | (...);
                              reduce?: (...) | (...) | (...);
                              reduceRight?: (...) | (...) | (...);
                              reverse?: (...) | (...) | (...);
                              shift?: (...) | (...) | (...);
                              slice?: (...) | (...) | (...);
                              some?: (...) | (...) | (...);
                              sort?: (...) | (...) | (...);
                              splice?: (...) | (...) | (...);
                              toLocaleString?: (...) | (...) | (...);
                              toReversed?: (...) | (...) | (...);
                              toSorted?: (...) | (...) | (...);
                              toSpliced?: (...) | (...) | (...);
                              toString?: (...) | (...) | (...);
                              unshift?: (...) | (...) | (...);
                              values?: (...) | (...) | (...);
                              with?: (...) | (...) | (...);
                              [key: number]: (...) | (...) | (...);
                          };
                          length: number;
                          links: { [key: string]: (...)
                          | (...) };
                          "[iterator]"(): ArrayIterator<Token>;
                          at(index: number): Token | undefined;
                          concat(...items: ConcatArray<(...)>[]): Token[];
                          concat(...items: ((...) | (...))[]): Token[];
                          copyWithin(target: number, start: number, end?: number): this;
                          entries(): ArrayIterator<[(...), (...)]>;
                          every<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): this is S[];
                          every(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          fill(value: Token, start?: number, end?: number): this;
                          filter<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S[];
                          filter(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token[];
                          find<S extends Token>(
                              predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          find(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findIndex(
                              predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          findLast<S extends Token>(
                              predicate: (
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => value is S,
                              thisArg?: any,
                          ): S | undefined;
                          findLast(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): Token | undefined;
                          findLastIndex(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): number;
                          flat<A, D extends number = 1>(
                              this: A,
                              depth?: D,
                          ): FlatArray<(...), (...)>[];
                          flatMap<U, This = undefined>(
                              callback: (
                                  this: This,
                                  value: Token,
                                  index: number,
                                  array: (...)[],
                              ) => (...) | (...),
                              thisArg?: This,
                          ): U[];
                          forEach(
                              callbackfn: (value: Token, index: number, array: (...)[]) => void,
                              thisArg?: any,
                          ): void;
                          includes(searchElement: Token, fromIndex?: number): boolean;
                          indexOf(searchElement: Token, fromIndex?: number): number;
                          join(separator?: string): string;
                          keys(): ArrayIterator<number>;
                          lastIndexOf(searchElement: Token, fromIndex?: number): number;
                          map<U>(
                              callbackfn: (value: Token, index: number, array: (...)[]) => U,
                              thisArg?: any,
                          ): U[];
                          pop(): Token | undefined;
                          push(...items: Token[]): number;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduce(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduce<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                          ): Token;
                          reduceRight(
                              callbackfn: (
                                  previousValue: Token,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => Token,
                              initialValue: Token,
                          ): Token;
                          reduceRight<U>(
                              callbackfn: (
                                  previousValue: U,
                                  currentValue: Token,
                                  currentIndex: number,
                                  array: (...)[],
                              ) => U,
                              initialValue: U,
                          ): U;
                          reverse(): Token[];
                          shift(): Token | undefined;
                          slice(start?: number, end?: number): Token[];
                          some(
                              predicate: (value: Token, index: number, array: (...)[]) => unknown,
                              thisArg?: any,
                          ): boolean;
                          sort(compareFn?: (a: ..., b: ...) => ...): this;
                          splice(start: number, deleteCount?: number): Token[];
                          splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                          toLocaleString(): string;
                          toLocaleString(
                              locales: string | (...)[],
                              options?: (...) & (...),
                          ): string;
                          toReversed(): Token[];
                          toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                          toSpliced(
                              start: number,
                              deleteCount: number,
                              ...items: Token[],
                          ): Token[];
                          toSpliced(start: number, deleteCount?: number): Token[];
                          toString(): string;
                          unshift(...items: Token[]): number;
                          values(): ArrayIterator<Token>;
                          with(index: number, value: Token): Token[];
                          [key: number]:
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { checked?: ...; raw?: ...; type?: ... }
                              | {
                                  codeBlockStyle?: ...;
                                  escaped?: ...;
                                  lang?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; text?: ...; type?: ... }
                              | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  href?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  title?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | {
                                  items?: ...;
                                  loose?: ...;
                                  ordered?: ...;
                                  raw?: ...;
                                  start?: ...;
                                  type?: ...;
                              }
                              | {
                                  checked?: ...;
                                  loose?: ...;
                                  raw?: ...;
                                  task?: ...;
                                  text?: ...;
                                  tokens?: ...;
                                  type?: ...;
                              }
                              | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; type?: ... }
                              | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                              | {
                                  block?: ...;
                                  inLink?: ...;
                                  inRawBlock?: ...;
                                  raw?: ...;
                                  text?: ...;
                                  type?: ...;
                              }
                              | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                              | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                      };
                  };
                  lheading?: (src: string) => Heading | undefined;
                  link?: (src: string) => Image | Link | undefined;
                  list?: (src: string) => List | undefined;
                  options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                  paragraph?: (src: string) => Paragraph | undefined;
                  reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                  rules?: {
                      block?: {
                          blockquote?: RegExp;
                          code?: RegExp;
                          def?: RegExp;
                          fences?: RegExp;
                          heading?: RegExp;
                          hr?: RegExp;
                          html?: RegExp;
                          lheading?: RegExp;
                          list?: RegExp;
                          newline?: RegExp;
                          paragraph?: RegExp;
                          table?: RegExp;
                          text?: RegExp;
                      };
                      inline?: {
                          _backpedal?: RegExp;
                          anyPunctuation?: RegExp;
                          autolink?: RegExp;
                          blockSkip?: RegExp;
                          br?: RegExp;
                          code?: RegExp;
                          del?: RegExp;
                          delLDelim?: RegExp;
                          delRDelim?: RegExp;
                          emStrongLDelim?: RegExp;
                          emStrongRDelimAst?: RegExp;
                          emStrongRDelimUnd?: RegExp;
                          escape?: RegExp;
                          link?: RegExp;
                          nolink?: RegExp;
                          punctuation?: RegExp;
                          reflink?: RegExp;
                          reflinkSearch?: RegExp;
                          tag?: RegExp;
                          text?: RegExp;
                          url?: RegExp;
                      };
                      other?: {
                          anyLine?: RegExp;
                          beginningSpace?: RegExp;
                          blankLine?: RegExp;
                          blockquoteBeginRegex?: (indent: ...) => ...;
                          blockquoteSetextReplace?: RegExp;
                          blockquoteSetextReplace2?: RegExp;
                          blockquoteStart?: RegExp;
                          caret?: RegExp;
                          carriageReturn?: RegExp;
                          codeRemoveIndent?: RegExp;
                          doubleBlankLine?: RegExp;
                          endAngleBracket?: RegExp;
                          endATag?: RegExp;
                          endingHash?: RegExp;
                          endingNewline?: RegExp;
                          endingSpaceChar?: RegExp;
                          endPreScriptTag?: RegExp;
                          escapeReplace?: RegExp;
                          escapeReplaceNoEncode?: RegExp;
                          escapeTest?: RegExp;
                          escapeTestNoEncode?: RegExp;
                          fencesBeginRegex?: (indent: ...) => ...;
                          findPipe?: RegExp;
                          headingBeginRegex?: (indent: ...) => ...;
                          hrefBrackets?: RegExp;
                          hrRegex?: (indent: ...) => ...;
                          htmlBeginRegex?: (indent: ...) => ...;
                          indentCodeCompensation?: RegExp;
                          listIsTask?: RegExp;
                          listItemRegex?: (bull: ...) => ...;
                          listReplaceNesting?: RegExp;
                          listReplaceTask?: RegExp;
                          listTaskCheckbox?: RegExp;
                          multipleSpaceGlobal?: RegExp;
                          newLineCharGlobal?: RegExp;
                          nextBulletRegex?: (indent: ...) => ...;
                          nonSpaceChar?: RegExp;
                          notSpaceStart?: RegExp;
                          outputLinkReplace?: RegExp;
                          pedanticHrefTitle?: RegExp;
                          percentDecode?: RegExp;
                          slashPipe?: RegExp;
                          spaceLine?: RegExp;
                          splitPipe?: RegExp;
                          startAngleBracket?: RegExp;
                          startATag?: RegExp;
                          startingSpaceChar?: RegExp;
                          startPreScriptTag?: RegExp;
                          tabCharGlobal?: RegExp;
                          tableAlignCenter?: RegExp;
                          tableAlignChars?: RegExp;
                          tableAlignLeft?: RegExp;
                          tableAlignRight?: RegExp;
                          tableDelimiter?: RegExp;
                          tableRowBlankLine?: RegExp;
                          unicodeAlphaNumeric?: RegExp;
                      };
                  };
                  space?: (src: string) => Space | undefined;
                  table?: (src: string) => Table | undefined;
                  tag?: (src: string) => Tag | undefined;
                  text?: (src: string) => Text | undefined;
                  url?: (src: string) => Link | undefined;
              }
              | null;
              walkTokens?: | (
                  (token: Token) => void | Promise<void> | (void | Promise<void>)[]
              )
              | null;
          }

          Options for the marked (Markdown parser)

          • Optionalasync?: boolean

            True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string.

          • Optionalbreaks?: boolean

            Enable GFM line breaks. This option requires the gfm option to be true.

          • Optionalextensions?:
                | {
                    block?: TokenizerExtensionFunction[];
                    childTokens?: { [key: string]: string[]
                    | undefined };
                    inline?: TokenizerExtensionFunction[];
                    renderers?: {
                        [key: string]: RendererExtensionFunction<string, string> | undefined;
                    };
                    startBlock?: TokenizerStartFunction[];
                    startInline?: TokenizerStartFunction[];
                }
                | null

            Custom extensions

          • Optionalgfm?: boolean

            Enable GitHub flavored markdown.

          • Optionalhooks?:
                | {
                    block?: boolean;
                    emStrongMask?: (src: string) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    postprocess?: (html: string) => string;
                    preprocess?: (markdown: string) => string;
                    processAllTokens?: (tokens: Token[] | TokensList) => Token[] | TokensList;
                    provideLexer?: (
                        block?: boolean,
                    ) => <ParserOutput = string, RendererOutput = string>(
                        src: string,
                        options?: MarkedOptions<ParserOutput, RendererOutput>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<string, string>) => string;
                }
                | null

            Hooks are methods that hook into some part of marked.

          • Optionalpedantic?: boolean

            Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.

          • Optionalrenderer?:
                | {
                    blockquote?: (__namedParameters: Blockquote) => string;
                    br?: (token: Br) => string;
                    checkbox?: (__namedParameters: Checkbox) => string;
                    code?: (__namedParameters: Code) => string;
                    codespan?: (__namedParameters: Codespan) => string;
                    def?: (token: Def) => string;
                    del?: (__namedParameters: Del) => string;
                    em?: (__namedParameters: Em) => string;
                    heading?: (__namedParameters: Heading) => string;
                    hr?: (token: Hr) => string;
                    html?: (__namedParameters: HTML | Tag) => string;
                    image?: (__namedParameters: Image) => string;
                    link?: (__namedParameters: Link) => string;
                    list?: (token: List) => string;
                    listitem?: (item: ListItem) => string;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (__namedParameters: Paragraph) => string;
                    parser?: {
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        parse?: (tokens: Token[]) => string;
                        parseInline?: (
                            tokens: Token[],
                            renderer?: _Renderer<(...), (...)> | _TextRenderer<(...)>,
                        ) => string;
                        renderer?: { options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => stri...;
                        textRenderer?: {
                            br?: () => ...;
                            checkbox?: (__namedParameters: ...) => ...;
                            codespan?: (__namedParameters: ...) => ...;
                            del?: (__namedParameters: ...) => ...;
                            em?: (__namedParameters: ...) => ...;
                            html?: (__namedParameters: ...) => ...;
                            image?: (__namedParameters: ...) => ...;
                            link?: (__namedParameters: ...) => ...;
                            strong?: (__namedParameters: ...) => ...;
                            text?: (__namedParameters: ...) => ...;
                        };
                    };
                    space?: (token: Space) => string;
                    strong?: (__namedParameters: Strong) => string;
                    table?: (token: Table) => string;
                    tablecell?: (token: TableCell) => string;
                    tablerow?: (__namedParameters: TableRow<string>) => string;
                    text?: (token: Escape | Text) => string;
                }
                | null

            Type: object Default: new Renderer()

            An object containing functions to render tokens to HTML.

          • Optionalsilent?: boolean

            Shows an HTML error message when rendering fails.

          • Optionaltokenizer?:
                | {
                    autolink?: (src: string) => Link | undefined;
                    blockquote?: (src: string) => Blockquote | undefined;
                    br?: (src: string) => Br | undefined;
                    code?: (src: string) => Code | undefined;
                    codespan?: (src: string) => Codespan | undefined;
                    def?: (src: string) => Def | undefined;
                    del?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Del | undefined;
                    emStrong?: (
                        src: string,
                        maskedSrc: string,
                        prevChar?: string,
                    ) => Em | Strong | undefined;
                    escape?: (src: string) => Escape | undefined;
                    fences?: (src: string) => Code | undefined;
                    heading?: (src: string) => Heading | undefined;
                    hr?: (src: string) => Hr | undefined;
                    html?: (src: string) => HTML | undefined;
                    inlineText?: (src: string) => Text | undefined;
                    lexer?: {
                        blockTokens?: {
                            (
                                src: string,
                                tokens?: (...)[],
                                lastParagraphClipped?: boolean,
                            ): Token[];
                            (
                                src: string,
                                tokens?: TokensList,
                                lastParagraphClipped?: boolean,
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...)[]) => Token[];
                        inlineQueue?: { src?: (...) | (...); tokens?: (...) | (...) }[];
                        inlineTokens?: (src: string, tokens?: (...)[]) => Token[];
                        lex?: (src: string) => TokensList;
                        options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                        state?: { inLink?: boolean; inRawBlock?: boolean; top?: boolean };
                        tokens?: {
                            "[unscopables]": {
                                "[iterator]"?: (...) | (...) | (...);
                                "[unscopables]"?: (...) | (...) | (...);
                                at?: (...) | (...) | (...);
                                concat?: (...) | (...) | (...);
                                copyWithin?: (...) | (...) | (...);
                                entries?: (...) | (...) | (...);
                                every?: (...) | (...) | (...);
                                fill?: (...) | (...) | (...);
                                filter?: (...) | (...) | (...);
                                find?: (...) | (...) | (...);
                                findIndex?: (...) | (...) | (...);
                                findLast?: (...) | (...) | (...);
                                findLastIndex?: (...) | (...) | (...);
                                flat?: (...) | (...) | (...);
                                flatMap?: (...) | (...) | (...);
                                forEach?: (...) | (...) | (...);
                                includes?: (...) | (...) | (...);
                                indexOf?: (...) | (...) | (...);
                                join?: (...) | (...) | (...);
                                keys?: (...) | (...) | (...);
                                lastIndexOf?: (...) | (...) | (...);
                                length?: (...) | (...) | (...);
                                map?: (...) | (...) | (...);
                                pop?: (...) | (...) | (...);
                                push?: (...) | (...) | (...);
                                reduce?: (...) | (...) | (...);
                                reduceRight?: (...) | (...) | (...);
                                reverse?: (...) | (...) | (...);
                                shift?: (...) | (...) | (...);
                                slice?: (...) | (...) | (...);
                                some?: (...) | (...) | (...);
                                sort?: (...) | (...) | (...);
                                splice?: (...) | (...) | (...);
                                toLocaleString?: (...) | (...) | (...);
                                toReversed?: (...) | (...) | (...);
                                toSorted?: (...) | (...) | (...);
                                toSpliced?: (...) | (...) | (...);
                                toString?: (...) | (...) | (...);
                                unshift?: (...) | (...) | (...);
                                values?: (...) | (...) | (...);
                                with?: (...) | (...) | (...);
                                [key: number]: (...) | (...) | (...);
                            };
                            length: number;
                            links: { [key: string]: (...)
                            | (...) };
                            "[iterator]"(): ArrayIterator<Token>;
                            at(index: number): Token | undefined;
                            concat(...items: ConcatArray<(...)>[]): Token[];
                            concat(...items: ((...) | (...))[]): Token[];
                            copyWithin(target: number, start: number, end?: number): this;
                            entries(): ArrayIterator<[(...), (...)]>;
                            every<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): this is S[];
                            every(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: number, end?: number): this;
                            filter<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S[];
                            filter(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token[];
                            find<S extends Token>(
                                predicate: (value: Token, index: number, obj: (...)[]) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            find(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findIndex(
                                predicate: (value: Token, index: number, obj: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => value is S,
                                thisArg?: any,
                            ): S | undefined;
                            findLast(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): Token | undefined;
                            findLastIndex(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(
                                this: A,
                                depth?: D,
                            ): FlatArray<(...), (...)>[];
                            flatMap<U, This = undefined>(
                                callback: (
                                    this: This,
                                    value: Token,
                                    index: number,
                                    array: (...)[],
                                ) => (...) | (...),
                                thisArg?: This,
                            ): U[];
                            forEach(
                                callbackfn: (value: Token, index: number, array: (...)[]) => void,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: number): boolean;
                            indexOf(searchElement: Token, fromIndex?: number): number;
                            join(separator?: string): string;
                            keys(): ArrayIterator<number>;
                            lastIndexOf(searchElement: Token, fromIndex?: number): number;
                            map<U>(
                                callbackfn: (value: Token, index: number, array: (...)[]) => U,
                                thisArg?: any,
                            ): U[];
                            pop(): Token | undefined;
                            push(...items: Token[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: Token,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => Token,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: U,
                                    currentValue: Token,
                                    currentIndex: number,
                                    array: (...)[],
                                ) => U,
                                initialValue: U,
                            ): U;
                            reverse(): Token[];
                            shift(): Token | undefined;
                            slice(start?: number, end?: number): Token[];
                            some(
                                predicate: (value: Token, index: number, array: (...)[]) => unknown,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (a: ..., b: ...) => ...): this;
                            splice(start: number, deleteCount?: number): Token[];
                            splice(start: number, deleteCount: number, ...items: Token[]): Token[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: string | (...)[],
                                options?: (...) & (...),
                            ): string;
                            toReversed(): Token[];
                            toSorted(compareFn?: (a: ..., b: ...) => ...): Token[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: Token[],
                            ): Token[];
                            toSpliced(start: number, deleteCount?: number): Token[];
                            toString(): string;
                            unshift(...items: Token[]): number;
                            values(): ArrayIterator<Token>;
                            with(index: number, value: Token): Token[];
                            [key: number]:
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { checked?: ...; raw?: ...; type?: ... }
                                | {
                                    codeBlockStyle?: ...;
                                    escaped?: ...;
                                    lang?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { href?: ...; raw?: ...; tag?: ...; title?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; text?: ...; type?: ... }
                                | { depth?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { block?: ...; pre?: ...; raw?: ...; text?: ...; type?: ... }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    href?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    title?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | {
                                    items?: ...;
                                    loose?: ...;
                                    ordered?: ...;
                                    raw?: ...;
                                    start?: ...;
                                    type?: ...;
                                }
                                | {
                                    checked?: ...;
                                    loose?: ...;
                                    raw?: ...;
                                    task?: ...;
                                    text?: ...;
                                    tokens?: ...;
                                    type?: ...;
                                }
                                | { pre?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; type?: ... }
                                | { raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { align?: ...; header?: ...; raw?: ...; rows?: ...; type?: ... }
                                | {
                                    block?: ...;
                                    inLink?: ...;
                                    inRawBlock?: ...;
                                    raw?: ...;
                                    text?: ...;
                                    type?: ...;
                                }
                                | { escaped?: ...; raw?: ...; text?: ...; tokens?: ...; type?: ... }
                                | { raw?: ...; tokens?: ...; type?: ...; [key: ...]: ... };
                        };
                    };
                    lheading?: (src: string) => Heading | undefined;
                    link?: (src: string) => Image | Link | undefined;
                    list?: (src: string) => List | undefined;
                    options?: { hooks?: { options?: ... | undefined; block?: boolean | undefined; preprocess?: ((markdown: string) => string) | undefined; postprocess?: ((html: string) => string) | undefined; processAllTokens?: ((tokens: Token[] | TokensList) => Token[] | TokensList) | undefined; emStrongMask?: ((src: string) => string) | undefi...;
                    paragraph?: (src: string) => Paragraph | undefined;
                    reflink?: (src: string, links: Links) => Image | Link | Text | undefined;
                    rules?: {
                        block?: {
                            blockquote?: RegExp;
                            code?: RegExp;
                            def?: RegExp;
                            fences?: RegExp;
                            heading?: RegExp;
                            hr?: RegExp;
                            html?: RegExp;
                            lheading?: RegExp;
                            list?: RegExp;
                            newline?: RegExp;
                            paragraph?: RegExp;
                            table?: RegExp;
                            text?: RegExp;
                        };
                        inline?: {
                            _backpedal?: RegExp;
                            anyPunctuation?: RegExp;
                            autolink?: RegExp;
                            blockSkip?: RegExp;
                            br?: RegExp;
                            code?: RegExp;
                            del?: RegExp;
                            delLDelim?: RegExp;
                            delRDelim?: RegExp;
                            emStrongLDelim?: RegExp;
                            emStrongRDelimAst?: RegExp;
                            emStrongRDelimUnd?: RegExp;
                            escape?: RegExp;
                            link?: RegExp;
                            nolink?: RegExp;
                            punctuation?: RegExp;
                            reflink?: RegExp;
                            reflinkSearch?: RegExp;
                            tag?: RegExp;
                            text?: RegExp;
                            url?: RegExp;
                        };
                        other?: {
                            anyLine?: RegExp;
                            beginningSpace?: RegExp;
                            blankLine?: RegExp;
                            blockquoteBeginRegex?: (indent: ...) => ...;
                            blockquoteSetextReplace?: RegExp;
                            blockquoteSetextReplace2?: RegExp;
                            blockquoteStart?: RegExp;
                            caret?: RegExp;
                            carriageReturn?: RegExp;
                            codeRemoveIndent?: RegExp;
                            doubleBlankLine?: RegExp;
                            endAngleBracket?: RegExp;
                            endATag?: RegExp;
                            endingHash?: RegExp;
                            endingNewline?: RegExp;
                            endingSpaceChar?: RegExp;
                            endPreScriptTag?: RegExp;
                            escapeReplace?: RegExp;
                            escapeReplaceNoEncode?: RegExp;
                            escapeTest?: RegExp;
                            escapeTestNoEncode?: RegExp;
                            fencesBeginRegex?: (indent: ...) => ...;
                            findPipe?: RegExp;
                            headingBeginRegex?: (indent: ...) => ...;
                            hrefBrackets?: RegExp;
                            hrRegex?: (indent: ...) => ...;
                            htmlBeginRegex?: (indent: ...) => ...;
                            indentCodeCompensation?: RegExp;
                            listIsTask?: RegExp;
                            listItemRegex?: (bull: ...) => ...;
                            listReplaceNesting?: RegExp;
                            listReplaceTask?: RegExp;
                            listTaskCheckbox?: RegExp;
                            multipleSpaceGlobal?: RegExp;
                            newLineCharGlobal?: RegExp;
                            nextBulletRegex?: (indent: ...) => ...;
                            nonSpaceChar?: RegExp;
                            notSpaceStart?: RegExp;
                            outputLinkReplace?: RegExp;
                            pedanticHrefTitle?: RegExp;
                            percentDecode?: RegExp;
                            slashPipe?: RegExp;
                            spaceLine?: RegExp;
                            splitPipe?: RegExp;
                            startAngleBracket?: RegExp;
                            startATag?: RegExp;
                            startingSpaceChar?: RegExp;
                            startPreScriptTag?: RegExp;
                            tabCharGlobal?: RegExp;
                            tableAlignCenter?: RegExp;
                            tableAlignChars?: RegExp;
                            tableAlignLeft?: RegExp;
                            tableAlignRight?: RegExp;
                            tableDelimiter?: RegExp;
                            tableRowBlankLine?: RegExp;
                            unicodeAlphaNumeric?: RegExp;
                        };
                    };
                    space?: (src: string) => Space | undefined;
                    table?: (src: string) => Table | undefined;
                    tag?: (src: string) => Tag | undefined;
                    text?: (src: string) => Text | undefined;
                    url?: (src: string) => Link | undefined;
                }
                | null

            The tokenizer defines how to turn markdown text into tokens.

          • OptionalwalkTokens?: ((token: Token) => void | Promise<void> | (void | Promise<void>)[]) | null

            walkTokens function returns array of values for Promise.all

        • OptionalmarkedReplacers?: ((raw: string) => string)[]

          Replacers for the marked (Markdown parser)

        • OptionalnestMax?: number

          Maximum number of levels for nested comments

        • OptionalnestSort?: "DATE_ASC" | "DATE_DESC"

          Sorting order for nested comments

        • OptionalnoComment?: string

          Text to display when there are no comments

        • OptionalpageKey?: string

          Unique page identifier

        • OptionalpageTitle?: string

          Title of the page

        • OptionalpageVote?:
              | boolean
              | {
                  activeClass?: string;
                  downBtnEl?: string;
                  downCountEl?: string;
                  upBtnEl?: string;
                  upCountEl?: string;
              }

          Page Vote Widget

        • Optionalpagination?: { autoLoad?: boolean; pageSize?: number; readMore?: boolean }

          Pagination settings

          • OptionalautoLoad?: boolean

            Automatically load more comments when scrolled to the bottom

          • OptionalpageSize?: number

            Number of comments to fetch per request

          • OptionalreadMore?: boolean

            "Read more" mode

        • Optionalplaceholder?: string

          Placeholder text for the comment input box

        • OptionalpluginURLs?: string[]

          URLs for plugin scripts

        • OptionalpreferRemoteConf?: boolean

          Prefer to use the local configuration if available

          If true, the local config will be used as a fallback (remote config first).

          If false, the local config will override the remote config (local config first).

          false
          
        • Optionalpreview?: boolean

          Preview feature for comments

        • OptionalpvAdd?: boolean

          Page view increment when comment list is loaded

        • OptionalpvEl?: string

          Selector for the element binding to the page views (PV) count

        • OptionalreqTimeout?: number

          Request timeout (in seconds)

        • OptionalscrollRelativeTo?: () => HTMLElement

          The relative element for scrolling (useful if artalk is in a scrollable container)

        • OptionalsendBtn?: string

          Text for the send button

        • Optionalserver?: string

          Server address

        • Optionalsite?: string

          Site name

        • OptionalstatPageKeyAttr?: string

          Attribute name for the PageKey in statistics components

        • OptionaluaBadge?: boolean

          Display UA badge (user agent badge)

        • OptionaluseBackendConf?: boolean

          Use remote configuration (from the backend server)

          The useBackendConf is always true and planned to be removed in the future.

          Please use preferRemoteConf to control the priority of the remote and local configuration.

          true
          
        • OptionalversionCheck?: boolean

          Enable version check

        • Optionalvote?: boolean

          Voting feature for comments

        • OptionalvoteDown?: boolean

          Downvote button for comments

      Returns void

    • Watch the config

      Type Parameters

      Parameters

      • keys: T
      • effect: (val: Pick<Config, T[number]>) => void

      Returns void