ApplicationPager
ApplicationPager は、Client.getCommunitiesUsingApplication() のカーソルページネーションをラップするヘルパーです。ページ単位の非同期ジェネレーター iteratePages() と、全件を一括取得する fetchAll() の 2 つの API を提供します。
インストール
Section titled “インストール”追加インストールは不要です。mixi2-js に同梱されています。
// ESMimport { ApplicationPager } from 'mixi2-js/helpers';// CJSconst { ApplicationPager } = require('mixi2-js/helpers');import { ApplicationPager } from '@otoneko1102/mixi2-js/helpers';基本的な使い方
Section titled “基本的な使い方”import { Client } from 'mixi2-js';import { ApplicationPager } from 'mixi2-js/helpers';import { Client } from '@otoneko1102/mixi2-js';import { ApplicationPager } from '@otoneko1102/mixi2-js/helpers';全件を一括取得する
Section titled “全件を一括取得する”アプリがインストールされているすべてのコミュニティを取得します。
const pager = new ApplicationPager(client);const { communitiesUsingApplication, applicationVersions } = await pager.fetchAll();
for (const { community, applicationVersionId } of communitiesUsingApplication) { console.log(community?.name, 'version:', applicationVersionId);}ページ単位でイテレートする
Section titled “ページ単位でイテレートする”大量のコミュニティを扱う場合や、逐次処理したい場合は iteratePages() を使います。
const pager = new ApplicationPager(client);
for await (const page of pager.iteratePages()) { console.log(`このページのコミュニティ数: ${page.communitiesUsingApplication.length}`);
for (const { community } of page.communitiesUsingApplication) { if (community) { console.log(community.name); } }}最大ページ数を制限する
Section titled “最大ページ数を制限する”// 最初の 2 ページ分だけ取得for await (const page of pager.iteratePages(undefined, { maxPages: 2 })) { console.log(page.communitiesUsingApplication.length);}ApplicationVersion を参照する
Section titled “ApplicationVersion を参照する”getCommunitiesUsingApplication は各コミュニティが使用しているバージョン情報も返します。
const { communitiesUsingApplication, applicationVersions } = await pager.fetchAll();
// バージョン ID → ApplicationVersion のマップを構築const versionMap = new Map( applicationVersions.map((v) => [v.applicationVersionId, v]));
for (const { community, applicationVersionId } of communitiesUsingApplication) { const version = versionMap.get(applicationVersionId); console.log(community?.name, 'requirements:', version?.requirements);}API リファレンス
Section titled “API リファレンス”コンストラクタ
Section titled “コンストラクタ”new ApplicationPager(client: Client)| 引数 | 型 | 説明 |
|---|---|---|
client | Client | API クライアント |
fetchAll(request?)
Section titled “fetchAll(request?)”fetchAll(request?: GetCommunitiesUsingApplicationRequest): Promise<ApplicationPagerPage>全ページを取得してマージした結果を返します。
戻り値: ApplicationPagerPage
| フィールド | 型 | 説明 |
|---|---|---|
communitiesUsingApplication | CommunityUsingApplication[] | インストール済みコミュニティ一覧 |
applicationVersions | ApplicationVersion[] | アプリケーションバージョン一覧 |
iteratePages(request?, options?)
Section titled “iteratePages(request?, options?)”iteratePages( request?: GetCommunitiesUsingApplicationRequest, options?: ApplicationPagerOptions): AsyncGenerator<ApplicationPagerPage>ページ単位で結果を yield する非同期ジェネレーターを返します。
ApplicationPagerOptions
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
maxPages | number | 無制限 | 取得する最大ページ数 |