artalk
    Preparing search index...

    Interface ConfigManager

    interface ConfigManager {
        get: () => Config;
        update: (
            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<(...), (...)>,
                        ) => Token[];
                        provideParser?: (
                            block?: boolean,
                        ) => (tokens: Token[], options?: MarkedOptions<(...), (...)>) => 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: (...)[]) => string;
                            parseInline?: (
                                tokens: (...)[],
                                renderer?: (...) | (...) | (...),
                            ) => 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?: (...) | (...);
                                codespan?: (...) | (...);
                                del?: (...) | (...);
                                em?: (...) | (...);
                                html?: (...) | (...);
                                image?: (...) | (...);
                                link?: (...) | (...);
                                strong?: (...) | (...);
                                text?: (...) | (...);
                            };
                        };
                        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?: (...) | (...) | (...),
                                ): (...)[];
                                (
                                    src: string,
                                    tokens?: (...) | (...),
                                    lastParagraphClipped?: (...) | (...) | (...),
                                ): TokensList;
                            };
                            inline?: (src: string, tokens?: (...) | (...)) => (...)[];
                            inlineQueue?: { src?: ...; tokens?: ... }[];
                            inlineTokens?: (src: string, tokens?: (...) | (...)) => (...)[];
                            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?: (...) | (...) | (...);
                                inRawBlock?: (...) | (...) | (...);
                                top?: (...) | (...) | (...);
                            };
                            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: ...]: ...;
                                };
                                length: number;
                                links: { [key: ...]: ... };
                                "[iterator]"(): ArrayIterator<(...)>;
                                at(index: number): (...) | (...);
                                concat(...items: (...)[]): (...)[];
                                concat(...items: (...)[]): (...)[];
                                copyWithin(target: number, start: number, end?: (...) | (...)): this;
                                entries(): ArrayIterator<(...)>;
                                every<S extends Token>(
                                    predicate: (value: ..., index: ..., array: ...) => value is (...),
                                    thisArg?: any,
                                ): this is (...)[];
                                every(
                                    predicate: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): boolean;
                                fill(value: Token, start?: (...) | (...), end?: (...) | (...)): this;
                                filter<S extends Token>(
                                    predicate: (value: ..., index: ..., array: ...) => value is (...),
                                    thisArg?: any,
                                ): (...)[];
                                filter(
                                    predicate: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): (...)[];
                                find<S extends Token>(
                                    predicate: (value: ..., index: ..., obj: ...) => value is (...),
                                    thisArg?: any,
                                ): (...) | (...);
                                find(
                                    predicate: (value: ..., index: ..., obj: ...) => ...,
                                    thisArg?: any,
                                ): (...) | (...);
                                findIndex(
                                    predicate: (value: ..., index: ..., obj: ...) => ...,
                                    thisArg?: any,
                                ): number;
                                findLast<S extends Token>(
                                    predicate: (value: ..., index: ..., array: ...) => value is (...),
                                    thisArg?: any,
                                ): (...) | (...);
                                findLast(
                                    predicate: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): (...) | (...);
                                findLastIndex(
                                    predicate: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): number;
                                flat<A, D extends number = 1>(
                                    this: A,
                                    depth?: (...) | (...),
                                ): (...)[];
                                flatMap<U, This = undefined>(
                                    callback: (this: ..., value: ..., index: ..., array: ...) => ...,
                                    thisArg?: (...) | (...),
                                ): (...)[];
                                forEach(
                                    callbackfn: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): void;
                                includes(searchElement: Token, fromIndex?: (...) | (...)): boolean;
                                indexOf(searchElement: Token, fromIndex?: (...) | (...)): number;
                                join(separator?: (...) | (...)): string;
                                keys(): ArrayIterator<(...)>;
                                lastIndexOf(searchElement: Token, fromIndex?: (...) | (...)): number;
                                map<U>(
                                    callbackfn: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): (...)[];
                                pop(): (...) | (...);
                                push(...items: (...)[]): number;
                                reduce(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                ): Token;
                                reduce(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                    initialValue: Token,
                                ): Token;
                                reduce<U>(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                    initialValue: U,
                                ): U;
                                reduceRight(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                ): Token;
                                reduceRight(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                    initialValue: Token,
                                ): Token;
                                reduceRight<U>(
                                    callbackfn: (
                                        previousValue: ...,
                                        currentValue: ...,
                                        currentIndex: ...,
                                        array: ...,
                                    ) => ...,
                                    initialValue: U,
                                ): U;
                                reverse(): (...)[];
                                shift(): (...) | (...);
                                slice(start?: (...) | (...), end?: (...) | (...)): (...)[];
                                some(
                                    predicate: (value: ..., index: ..., array: ...) => ...,
                                    thisArg?: any,
                                ): boolean;
                                sort(compareFn?: (...) | (...)): this;
                                splice(start: number, deleteCount?: (...) | (...)): (...)[];
                                splice(
                                    start: number,
                                    deleteCount: number,
                                    ...items: (...)[],
                                ): (...)[];
                                toLocaleString(): string;
                                toLocaleString(
                                    locales: (...) | (...),
                                    options?: (...) | (...),
                                ): string;
                                toReversed(): (...)[];
                                toSorted(compareFn?: (...) | (...)): (...)[];
                                toSpliced(
                                    start: number,
                                    deleteCount: number,
                                    ...items: (...)[],
                                ): (...)[];
                                toSpliced(start: number, deleteCount?: (...) | (...)): (...)[];
                                toString(): string;
                                unshift(...items: (...)[]): number;
                                values(): ArrayIterator<(...)>;
                                with(index: number, value: Token): (...)[];
                                [key: number]:
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...);
                            };
                        };
                        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?: (...) | (...);
                                code?: (...) | (...);
                                def?: (...) | (...);
                                fences?: (...) | (...);
                                heading?: (...) | (...);
                                hr?: (...) | (...);
                                html?: (...) | (...);
                                lheading?: (...) | (...);
                                list?: (...) | (...);
                                newline?: (...) | (...);
                                paragraph?: (...) | (...);
                                table?: (...) | (...);
                                text?: (...) | (...);
                            };
                            inline?: {
                                _backpedal?: (...)
                                | (...);
                                anyPunctuation?: (...) | (...);
                                autolink?: (...) | (...);
                                blockSkip?: (...) | (...);
                                br?: (...) | (...);
                                code?: (...) | (...);
                                del?: (...) | (...);
                                delLDelim?: (...) | (...);
                                delRDelim?: (...) | (...);
                                emStrongLDelim?: (...) | (...);
                                emStrongRDelimAst?: (...) | (...);
                                emStrongRDelimUnd?: (...) | (...);
                                escape?: (...) | (...);
                                link?: (...) | (...);
                                nolink?: (...) | (...);
                                punctuation?: (...) | (...);
                                reflink?: (...) | (...);
                                reflinkSearch?: (...) | (...);
                                tag?: (...) | (...);
                                text?: (...) | (...);
                                url?: (...) | (...);
                            };
                            other?: {
                                anyLine?: (...)
                                | (...);
                                beginningSpace?: (...) | (...);
                                blankLine?: (...) | (...);
                                blockquoteBeginRegex?: (...) | (...);
                                blockquoteSetextReplace?: (...) | (...);
                                blockquoteSetextReplace2?: (...) | (...);
                                blockquoteStart?: (...) | (...);
                                caret?: (...) | (...);
                                carriageReturn?: (...) | (...);
                                codeRemoveIndent?: (...) | (...);
                                doubleBlankLine?: (...) | (...);
                                endAngleBracket?: (...) | (...);
                                endATag?: (...) | (...);
                                endingHash?: (...) | (...);
                                endingNewline?: (...) | (...);
                                endingSpaceChar?: (...) | (...);
                                endPreScriptTag?: (...) | (...);
                                escapeReplace?: (...) | (...);
                                escapeReplaceNoEncode?: (...) | (...);
                                escapeTest?: (...) | (...);
                                escapeTestNoEncode?: (...) | (...);
                                fencesBeginRegex?: (...) | (...);
                                findPipe?: (...) | (...);
                                headingBeginRegex?: (...) | (...);
                                hrefBrackets?: (...) | (...);
                                hrRegex?: (...) | (...);
                                htmlBeginRegex?: (...) | (...);
                                indentCodeCompensation?: (...) | (...);
                                listIsTask?: (...) | (...);
                                listItemRegex?: (...) | (...);
                                listReplaceNesting?: (...) | (...);
                                listReplaceTask?: (...) | (...);
                                listTaskCheckbox?: (...) | (...);
                                multipleSpaceGlobal?: (...) | (...);
                                newLineCharGlobal?: (...) | (...);
                                nextBulletRegex?: (...) | (...);
                                nonSpaceChar?: (...) | (...);
                                notSpaceStart?: (...) | (...);
                                outputLinkReplace?: (...) | (...);
                                pedanticHrefTitle?: (...) | (...);
                                percentDecode?: (...) | (...);
                                slashPipe?: (...) | (...);
                                spaceLine?: (...) | (...);
                                splitPipe?: (...) | (...);
                                startAngleBracket?: (...) | (...);
                                startATag?: (...) | (...);
                                startingSpaceChar?: (...) | (...);
                                startPreScriptTag?: (...) | (...);
                                tabCharGlobal?: (...) | (...);
                                tableAlignCenter?: (...) | (...);
                                tableAlignChars?: (...) | (...);
                                tableAlignLeft?: (...) | (...);
                                tableAlignRight?: (...) | (...);
                                tableDelimiter?: (...) | (...);
                                tableRowBlankLine?: (...) | (...);
                                unicodeAlphaNumeric?: (...) | (...);
                            };
                        };
                        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;
    }
    Index
    get: () => Config
    update: (
        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<(...), (...)>,
                    ) => Token[];
                    provideParser?: (
                        block?: boolean,
                    ) => (tokens: Token[], options?: MarkedOptions<(...), (...)>) => 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: (...)[]) => string;
                        parseInline?: (
                            tokens: (...)[],
                            renderer?: (...) | (...) | (...),
                        ) => 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?: (...) | (...);
                            codespan?: (...) | (...);
                            del?: (...) | (...);
                            em?: (...) | (...);
                            html?: (...) | (...);
                            image?: (...) | (...);
                            link?: (...) | (...);
                            strong?: (...) | (...);
                            text?: (...) | (...);
                        };
                    };
                    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?: (...) | (...) | (...),
                            ): (...)[];
                            (
                                src: string,
                                tokens?: (...) | (...),
                                lastParagraphClipped?: (...) | (...) | (...),
                            ): TokensList;
                        };
                        inline?: (src: string, tokens?: (...) | (...)) => (...)[];
                        inlineQueue?: { src?: ...; tokens?: ... }[];
                        inlineTokens?: (src: string, tokens?: (...) | (...)) => (...)[];
                        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?: (...) | (...) | (...);
                            inRawBlock?: (...) | (...) | (...);
                            top?: (...) | (...) | (...);
                        };
                        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: ...]: ...;
                            };
                            length: number;
                            links: { [key: ...]: ... };
                            "[iterator]"(): ArrayIterator<(...)>;
                            at(index: number): (...) | (...);
                            concat(...items: (...)[]): (...)[];
                            concat(...items: (...)[]): (...)[];
                            copyWithin(target: number, start: number, end?: (...) | (...)): this;
                            entries(): ArrayIterator<(...)>;
                            every<S extends Token>(
                                predicate: (value: ..., index: ..., array: ...) => value is (...),
                                thisArg?: any,
                            ): this is (...)[];
                            every(
                                predicate: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): boolean;
                            fill(value: Token, start?: (...) | (...), end?: (...) | (...)): this;
                            filter<S extends Token>(
                                predicate: (value: ..., index: ..., array: ...) => value is (...),
                                thisArg?: any,
                            ): (...)[];
                            filter(
                                predicate: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): (...)[];
                            find<S extends Token>(
                                predicate: (value: ..., index: ..., obj: ...) => value is (...),
                                thisArg?: any,
                            ): (...) | (...);
                            find(
                                predicate: (value: ..., index: ..., obj: ...) => ...,
                                thisArg?: any,
                            ): (...) | (...);
                            findIndex(
                                predicate: (value: ..., index: ..., obj: ...) => ...,
                                thisArg?: any,
                            ): number;
                            findLast<S extends Token>(
                                predicate: (value: ..., index: ..., array: ...) => value is (...),
                                thisArg?: any,
                            ): (...) | (...);
                            findLast(
                                predicate: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): (...) | (...);
                            findLastIndex(
                                predicate: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): number;
                            flat<A, D extends number = 1>(this: A, depth?: (...) | (...)): (...)[];
                            flatMap<U, This = undefined>(
                                callback: (this: ..., value: ..., index: ..., array: ...) => ...,
                                thisArg?: (...) | (...),
                            ): (...)[];
                            forEach(
                                callbackfn: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): void;
                            includes(searchElement: Token, fromIndex?: (...) | (...)): boolean;
                            indexOf(searchElement: Token, fromIndex?: (...) | (...)): number;
                            join(separator?: (...) | (...)): string;
                            keys(): ArrayIterator<(...)>;
                            lastIndexOf(searchElement: Token, fromIndex?: (...) | (...)): number;
                            map<U>(
                                callbackfn: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): (...)[];
                            pop(): (...) | (...);
                            push(...items: (...)[]): number;
                            reduce(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                            ): Token;
                            reduce(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                                initialValue: Token,
                            ): Token;
                            reduce<U>(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                                initialValue: U,
                            ): U;
                            reduceRight(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                            ): Token;
                            reduceRight(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                                initialValue: Token,
                            ): Token;
                            reduceRight<U>(
                                callbackfn: (
                                    previousValue: ...,
                                    currentValue: ...,
                                    currentIndex: ...,
                                    array: ...,
                                ) => ...,
                                initialValue: U,
                            ): U;
                            reverse(): (...)[];
                            shift(): (...) | (...);
                            slice(start?: (...) | (...), end?: (...) | (...)): (...)[];
                            some(
                                predicate: (value: ..., index: ..., array: ...) => ...,
                                thisArg?: any,
                            ): boolean;
                            sort(compareFn?: (...) | (...)): this;
                            splice(start: number, deleteCount?: (...) | (...)): (...)[];
                            splice(start: number, deleteCount: number, ...items: (...)[]): (...)[];
                            toLocaleString(): string;
                            toLocaleString(
                                locales: (...) | (...),
                                options?: (...) | (...),
                            ): string;
                            toReversed(): (...)[];
                            toSorted(compareFn?: (...) | (...)): (...)[];
                            toSpliced(
                                start: number,
                                deleteCount: number,
                                ...items: (...)[],
                            ): (...)[];
                            toSpliced(start: number, deleteCount?: (...) | (...)): (...)[];
                            toString(): string;
                            unshift(...items: (...)[]): number;
                            values(): ArrayIterator<(...)>;
                            with(index: number, value: Token): (...)[];
                            [key: number]:
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...);
                        };
                    };
                    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?: (...) | (...);
                            code?: (...) | (...);
                            def?: (...) | (...);
                            fences?: (...) | (...);
                            heading?: (...) | (...);
                            hr?: (...) | (...);
                            html?: (...) | (...);
                            lheading?: (...) | (...);
                            list?: (...) | (...);
                            newline?: (...) | (...);
                            paragraph?: (...) | (...);
                            table?: (...) | (...);
                            text?: (...) | (...);
                        };
                        inline?: {
                            _backpedal?: (...)
                            | (...);
                            anyPunctuation?: (...) | (...);
                            autolink?: (...) | (...);
                            blockSkip?: (...) | (...);
                            br?: (...) | (...);
                            code?: (...) | (...);
                            del?: (...) | (...);
                            delLDelim?: (...) | (...);
                            delRDelim?: (...) | (...);
                            emStrongLDelim?: (...) | (...);
                            emStrongRDelimAst?: (...) | (...);
                            emStrongRDelimUnd?: (...) | (...);
                            escape?: (...) | (...);
                            link?: (...) | (...);
                            nolink?: (...) | (...);
                            punctuation?: (...) | (...);
                            reflink?: (...) | (...);
                            reflinkSearch?: (...) | (...);
                            tag?: (...) | (...);
                            text?: (...) | (...);
                            url?: (...) | (...);
                        };
                        other?: {
                            anyLine?: (...)
                            | (...);
                            beginningSpace?: (...) | (...);
                            blankLine?: (...) | (...);
                            blockquoteBeginRegex?: (...) | (...);
                            blockquoteSetextReplace?: (...) | (...);
                            blockquoteSetextReplace2?: (...) | (...);
                            blockquoteStart?: (...) | (...);
                            caret?: (...) | (...);
                            carriageReturn?: (...) | (...);
                            codeRemoveIndent?: (...) | (...);
                            doubleBlankLine?: (...) | (...);
                            endAngleBracket?: (...) | (...);
                            endATag?: (...) | (...);
                            endingHash?: (...) | (...);
                            endingNewline?: (...) | (...);
                            endingSpaceChar?: (...) | (...);
                            endPreScriptTag?: (...) | (...);
                            escapeReplace?: (...) | (...);
                            escapeReplaceNoEncode?: (...) | (...);
                            escapeTest?: (...) | (...);
                            escapeTestNoEncode?: (...) | (...);
                            fencesBeginRegex?: (...) | (...);
                            findPipe?: (...) | (...);
                            headingBeginRegex?: (...) | (...);
                            hrefBrackets?: (...) | (...);
                            hrRegex?: (...) | (...);
                            htmlBeginRegex?: (...) | (...);
                            indentCodeCompensation?: (...) | (...);
                            listIsTask?: (...) | (...);
                            listItemRegex?: (...) | (...);
                            listReplaceNesting?: (...) | (...);
                            listReplaceTask?: (...) | (...);
                            listTaskCheckbox?: (...) | (...);
                            multipleSpaceGlobal?: (...) | (...);
                            newLineCharGlobal?: (...) | (...);
                            nextBulletRegex?: (...) | (...);
                            nonSpaceChar?: (...) | (...);
                            notSpaceStart?: (...) | (...);
                            outputLinkReplace?: (...) | (...);
                            pedanticHrefTitle?: (...) | (...);
                            percentDecode?: (...) | (...);
                            slashPipe?: (...) | (...);
                            spaceLine?: (...) | (...);
                            splitPipe?: (...) | (...);
                            startAngleBracket?: (...) | (...);
                            startATag?: (...) | (...);
                            startingSpaceChar?: (...) | (...);
                            startPreScriptTag?: (...) | (...);
                            tabCharGlobal?: (...) | (...);
                            tableAlignCenter?: (...) | (...);
                            tableAlignChars?: (...) | (...);
                            tableAlignLeft?: (...) | (...);
                            tableAlignRight?: (...) | (...);
                            tableDelimiter?: (...) | (...);
                            tableRowBlankLine?: (...) | (...);
                            unicodeAlphaNumeric?: (...) | (...);
                        };
                    };
                    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

    Type Declaration

      • <T extends (keyof Config)[]>(
            keys: T,
            effect: (val: Pick<Config, T[number]>) => void,
        ): void
      • Watch the config

        Type Parameters

        Parameters

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

        Returns void