async browse(frame) {
        let limit;
        if (!frame.options.limit || frame.options.limit === 'all') {
            limit = 'all';
        } else {
            limit = parseInt(frame.options.limit);
        }

        let page;
        if (frame.options.page) {
            page = parseInt(frame.options.page);
        } else {
            page = 1;
        }

        let order;
        if (frame.options.order && frame.options.order === 'created_at desc') {
            order = 'created_at desc';
        } else {
            order = 'created_at asc';
        }

        let unique;
        if (frame.options.unique && (frame.options.unique === 'true' || frame.options.unique === true)) {
            unique = true;
        }

        const mentions = await this.#api.listMentions({
            filter: frame.options.filter,
            order,
            limit,
            page,
            unique
        });

        const resources = await Promise.all(mentions.data.map((mention) => {
            return this.#mentionResourceService.getByID(mention.resourceId);
        }));

        /** @type {Page<MentionDTO>} */
        const result = {
            data: mentions.data.map((mention, index) => {
                const mentionDTO = {
                    ...mention.toJSON(),
                    resource: resources[index],
                    toJSON() {
                        return mentionDTO;
                    }
                };
                delete mentionDTO.resourceId;
                return mentionDTO;
            }),
            meta: mentions.meta
        };

        return result;
    }
@param {import('@tryghost/api-framework').Frame} frame
@returns {Promise<Page<MentionDTO>>}