クラス: ComponentStore<T>
定義: src/component/ComponentStore.ts:45
1種別のロード済みコンポーネントを保持し、そのロード方法を知るストア。
ストアは拡張の単位です: プラグインは ComponentStore をサブクラス化して
StoreRegistry に登録し、ComponentStore.bind /
ComponentStore.unbind をオーバーライドすることで、新しい
コンポーネント種別を丸ごと追加できます。
ストアは discord.js の Collection を継承しているため、その検索・走査
ユーティリティがそのまま使えます(store.get(name)、store.filter、
store.map、...)。
拡張
Collection<string,T>
によって拡張された
ServiceStoreCommandStoreListenerStorePreconditionStoreTaskStoreStreamProviderStoreTrackResolverStoreAiToolStore
型パラメーター
T
T extends Component
コンストラクター
コンストラクター
new ComponentStore<T>(options): ComponentStore<T>;
定義: src/component/ComponentStore.ts:64
パラメータ
options
戻り値
ComponentStore<T>
上書き
Collection<string, T>.constructor
プロパティ
base
readonly base: AbstractComponentClass<T>;
定義: src/component/ComponentStore.ts:50
この種別のコンポーネントが継承する基底クラス。
container
readonly container: Container;
定義: src/component/ComponentStore.ts:56
コンテナ。レジストリへの登録時に割り当てられます。
logger
readonly logger: Logger;
定義: src/component/ComponentStore.ts:59
このストア用の子ロガー。登録時に割り当てられます。
name
readonly name: string;
定義: src/component/ComponentStore.ts:47
ストア名(= 自動探索ディレクトリ名)。
suffix
readonly suffix: string;
定義: src/component/ComponentStore.ts:53
クラス名から取り除く接尾辞(ComponentStoreOptions.suffix)。
メソッド
applyOptions()
protected applyOptions(component, options): void;
定義: src/component/ComponentStore.ts:238
解決済みメタデータをインスタンスへ適用します — 種別固有フィールドの 割り当てと必須項目の検証はここで行います。ロード時に弾く場合は (ComponentLoadError を推奨)例外を投げてください。
パラメータ
component
T
options
戻り値
void
bind()
protected bind(component): void;
定義: src/component/ComponentStore.ts:247
ロード済みコンポーネントをランタイムへ配線します(例: リスナーの
イベント購読)。onLoad の後、ストアに追加された状態で呼ばれます。
パラメータ
component
T
戻り値
void
deriveName()
protected deriveName(className): string;
定義: src/component/ComponentStore.ts:229
クラス名からコンポーネント名を導出します: 種別サフィックス
(ComponentStore.suffix)を取り除き、ケバブケース化します
(UserInfoCommand → user-info)。
カスタム種別で慣例を変えたい場合はオーバーライドしてください。
パラメータ
className
string
戻り値
string
load()
load(cls, location?): Promise<T>;
定義: src/component/ComponentStore.ts:122
単一のコンポーネントクラスを構築・初期化・追加します。 同じクラスの二重ロードは既存インスタンスを返すだけで無害です。 別の クラスが既存の名前に解決された場合は ComponentLoadError を投げます。
パラメータ
cls
location?
string | null
戻り値
Promise<T>
loadAll()
loadAll(baseDirectory): Promise<void>;
定義: src/component/ComponentStore.ts:95
この種別のすべてのコンポーネントをロードします: 先に明示登録分、
次に <baseDirectory>/<name> のファイル自動探索(baseDirectory 設定時)。
クライアント起動時にレジストリから呼ばれます。
パラメータ
baseDirectory
string | null
戻り値
Promise<void>
register()
register(...classes): this;
定義: src/component/ComponentStore.ts:77
コンポーネントクラスを明示登録します(ファイル自動探索の代替)。 ComponentStore.loadAll 前ならキューに積まれ、後なら即座に ロードされます(fire-and-forget — インスタンスを待つ場合は ComponentStore.load を使ってください)。
パラメータ
classes
...ComponentClass<T>[]
戻り値
this
unbind()
protected unbind(component): void;
定義: src/component/ComponentStore.ts:252
ComponentStore.bind の逆操作。アンロード時に呼ばれます。
パラメータ
component
T
戻り値
void
unload()
unload(resolvable): Promise<T>;
定義: src/component/ComponentStore.ts:200
コンポーネントを取り除きます(ComponentStore.unbind と onUnload を実行)。
パラメータ
resolvable
string | T
戻り値
Promise<T>
unloadAll()
unloadAll(): Promise<void>;
定義: src/component/ComponentStore.ts:217
このストアのすべてのコンポーネントをアンロードします(クライアント終了時に使用)。
戻り値
Promise<void>