UNPKG

spwmini-shitless

Version:

Shitless SPWorlds Miniapp creation toolkit

48 lines (46 loc) 1.21 kB
type Requests = { init: string; openURL: string; openPayment: string; }; type EmptyRequests = { [K in keyof Requests as Requests[K] extends undefined ? K : never]: undefined; }; type PayloadRequests = Omit<Requests, keyof EmptyRequests>; type Responses = { init: UserData; openURL: 'success'; openPayment: 'success'; payment: 'success' | 'cancel'; }; type SuccessResponses = { [K in keyof Responses as `${K}Response`]: Responses[K]; }; type ErrorResponses = { [K in keyof Responses as `${K}Error`]: string; }; type PlainResponses = { ready: never; }; type MessageFromServer = SuccessResponses & ErrorResponses & PlainResponses; interface User { accountId: string; username: string; minecraftUUID: string; } interface UserData extends User { hash: string; } type DoMessageData<T> = { [K in keyof T]: { type: K; }; }[keyof T]; type DoMessageLoadedData<T> = { [K in keyof T]: { type: K; payload: T[K]; }; }[keyof T]; type RequestMessage = DoMessageData<EmptyRequests> | DoMessageLoadedData<PayloadRequests>; export type { EmptyRequests, MessageFromServer, PayloadRequests, RequestMessage, User, UserData };