1
0

Modules.ts 909 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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 ModuleStatus =
  21. | "LOADED"
  22. | "STARTING"
  23. | "STARTED"
  24. | "STOPPED"
  25. | "STOPPING"
  26. | "ERROR"
  27. | "DISABLED";
  28. export type Methods<T> = {
  29. [P in keyof T as T[P] extends (...args: any) => Awaited<any>
  30. ? P
  31. : never]: T[P];
  32. };
  33. export type UniqueMethods<T> = Methods<Omit<T, keyof BaseModule>>;