57 lines
2.5 KiB
TypeScript
57 lines
2.5 KiB
TypeScript
import {
|
|
GetAimeAccountHandler,
|
|
GetAimeAccountExtendedHandler,
|
|
RegisterAimeAccountHandler,
|
|
} from "./aime-account";
|
|
import { AimeExtendedLogHandler, AimeLogHandler, StatusLogHandler } from "./aime-log";
|
|
import { GetCampaignClearInfoHandler, GetCampaignInfoHandler } from "./campaign";
|
|
import {
|
|
FelicaExtendedLookupHandler,
|
|
FelicaLookupHandler,
|
|
FelicaRegisterHandler,
|
|
} from "./felica-conversion";
|
|
import { ServiceHealthCheckHandler } from "./status-check";
|
|
import { CommandId } from "../../../lib/constants/aimedb";
|
|
import type { AimeDBHandlerFn, AimeDBReturnTypes } from "../types/handlers";
|
|
|
|
type CommandIdRequest = {
|
|
[K in keyof typeof CommandId]: K extends `${infer _}_REQUEST` ? typeof CommandId[K] : never;
|
|
}[keyof typeof CommandId];
|
|
|
|
// We need to make the key type wider so that the request handler can still index with
|
|
// an arbitrary command ID. On the other hand, the `satisfies` clause makes TypeScript
|
|
// yells at us for any known unimplemented AimeDB commands.
|
|
export const AIMEDB_HANDLERS: Record<number, AimeDBHandlerFn<AimeDBReturnTypes>> = {
|
|
[CommandId.FELICA_LOOKUP_REQUEST]: FelicaLookupHandler,
|
|
[CommandId.FELICA_REGISTER_REQUEST]: FelicaRegisterHandler,
|
|
[CommandId.AIME_ACCOUNT_REQUEST]: GetAimeAccountHandler,
|
|
[CommandId.REGISTER_AIME_ACCOUNT_REQUEST]: RegisterAimeAccountHandler,
|
|
[CommandId.STATUS_LOG_REQUEST]: StatusLogHandler,
|
|
[CommandId.AIME_LOG_REQUEST]: AimeLogHandler,
|
|
[CommandId.EXTENDED_AIME_LOG_REQUEST]: AimeExtendedLogHandler,
|
|
[CommandId.CAMPAIGN_INFO_REQUEST]: GetCampaignInfoHandler,
|
|
[CommandId.CAMPAIGN_CLEAR_INFO_REQUEST]: GetCampaignClearInfoHandler,
|
|
[CommandId.EXTENDED_ACCOUNT_REQUEST]: GetAimeAccountExtendedHandler,
|
|
[CommandId.EXTENDED_FELICA_ACCOUNT_REQUEST]: FelicaExtendedLookupHandler,
|
|
[CommandId.SERVICE_HEALTH_REQUEST]: ServiceHealthCheckHandler,
|
|
} satisfies Record<
|
|
Exclude<CommandIdRequest, CommandId.CLIENT_END_REQUEST>,
|
|
AimeDBHandlerFn<AimeDBReturnTypes>
|
|
>;
|
|
|
|
export const EXPECTED_PACKET_LENGTH: Record<number, number> = {
|
|
[CommandId.FELICA_LOOKUP_REQUEST]: 48,
|
|
[CommandId.FELICA_REGISTER_REQUEST]: 48,
|
|
[CommandId.AIME_ACCOUNT_REQUEST]: 48,
|
|
[CommandId.REGISTER_AIME_ACCOUNT_REQUEST]: 48,
|
|
[CommandId.STATUS_LOG_REQUEST]: 48,
|
|
[CommandId.AIME_LOG_REQUEST]: 64,
|
|
[CommandId.EXTENDED_AIME_LOG_REQUEST]: 1008,
|
|
[CommandId.CAMPAIGN_INFO_REQUEST]: 48,
|
|
[CommandId.CAMPAIGN_CLEAR_INFO_REQUEST]: 48,
|
|
[CommandId.EXTENDED_ACCOUNT_REQUEST]: 48,
|
|
[CommandId.EXTENDED_FELICA_ACCOUNT_REQUEST]: 112,
|
|
[CommandId.SERVICE_HEALTH_REQUEST]: 32,
|
|
[CommandId.CLIENT_END_REQUEST]: 32,
|
|
} satisfies Record<CommandIdRequest, number>;
|