type EventPayloadMapping = {}; /** * Extends the Main "Window" Interface */ interface Window { electron: { ping: () => Promise; }; } type UnsubscribeFunction = () => void; type SubscribeFunction = (payload: EventPayloadMapping[Event]) => void; // --- Prodress R2 Request --- /** * structure of a handler based prodress r2 request schema */ type Pdr2_Schema = { handler: string; actions: Pdr2_ActionSchema[]; }; /** * structure of an action based prodress r2 request subschema */ type Pdr2_ActionSchema = { action: string; additionalInformation: Pdr2_RequestTupel[]; arguments: Pdr2_RequestTupel[]; response: Pdr2_ResponseSchema; }; /** * structure of the prodressd r2 request header */ interface Pdr2_Header { port?: number; host?: string; database: string; handler: string; action: string; } /** * mapping for string alias to scalar type with pdr2 read and write methods */ interface Pdr2_DataTypeConversion { string: () => string; integer: () => number; float: () => number; date: () => Date | null; date_time: () => Date | null; } /** * structrue of a response object which is already read */ interface Pdr2_ResponseObject { [key: string]: ReturnType; } /** * structure of a response tupel used inside of the response schema */ type Pdr2_ResponseTupel = [string, keyof Pdr2_DataTypeConversion]; /** * strucutre of a request tupel used inside the request body and schema */ type Pdr2_RequestTupel = { [K in keyof Pdr2_DataTypeConversion]: [K, NonNullable>]; }[keyof Pdr2_DataTypeConversion]; /** * structure of a prodress r2 request object recieved by the user */ type Pdr2_Request = { header: Pdr2_Header; body: Pdr2_RequestBody; response: Pdr2_ResponseSchema; }; /** * structure of a prodress r2 request body */ type Pdr2_RequestBody = { additionalInformation: Pdr2_RequestTupel[]; arguments: Pdr2_RequestTupel[][]; }; /** * structure of a prodress r2 response schema */ type Pdr2_ResponseSchema = { isStatic: boolean; responseTupel: Pdr2_ResponseTupel[]; };