Modules.ts 789 B

12345678910111213141516171819202122232425262728293031
  1. import DataModule, { DataModuleJobs } from "../modules/DataModule";
  2. import StationModule, { StationModuleJobs } from "../modules/StationModule";
  3. import BaseModule from "../BaseModule";
  4. export type Module = BaseModule;
  5. export type ModuleClass<Module extends typeof BaseModule> = {
  6. new (): Module;
  7. };
  8. export type Jobs = {
  9. data: {
  10. [Property in keyof DataModuleJobs]: DataModuleJobs[Property];
  11. };
  12. stations: {
  13. [Property in keyof StationModuleJobs]: StationModuleJobs[Property];
  14. };
  15. };
  16. export type Modules = {
  17. data: DataModule & typeof BaseModule;
  18. stations: StationModule & typeof BaseModule;
  19. };
  20. export type Methods<T> = {
  21. [P in keyof T as T[P] extends (...args: any) => Awaited<any>
  22. ? P
  23. : never]: T[P];
  24. };
  25. export type UniqueMethods<T> = Methods<Omit<T, keyof BaseModule>>;