global.d.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. type Raw = import("knex").Raw;
  2. type Match<T> = {
  3. [K in keyof T]?: T[K] | [">" | ">=" | "<=" | "<", T[K]];
  4. };
  5. interface User {
  6. id: number;
  7. apikey?: string;
  8. banned: boolean;
  9. banned_by_id?: number;
  10. cooldowns?: string[];
  11. created_at: string;
  12. email: string;
  13. password: string;
  14. reset_password_expires?: string;
  15. reset_password_token?: string;
  16. updated_at: string;
  17. verification_expires?: string;
  18. verification_token?: string;
  19. verified?: boolean;
  20. }
  21. interface UserJoined extends User {
  22. admin?: boolean;
  23. homepage?: string;
  24. domain?: string;
  25. domain_id?: number;
  26. }
  27. interface Domain {
  28. id: number;
  29. uuid: string;
  30. address: string;
  31. banned: boolean;
  32. banned_by_id?: number;
  33. created_at: string;
  34. homepage?: string;
  35. updated_at: string;
  36. user_id?: number;
  37. }
  38. interface DomainSanitized {
  39. id: string;
  40. uuid: undefined;
  41. address: string;
  42. banned: boolean;
  43. banned_by_id?: undefined;
  44. created_at: string;
  45. homepage?: string;
  46. updated_at: string;
  47. user_id?: undefined;
  48. }
  49. interface Host {
  50. id: number;
  51. address: string;
  52. banned: boolean;
  53. banned_by_id?: number;
  54. created_at: string;
  55. updated_at: string;
  56. }
  57. interface IP {
  58. id: number;
  59. created_at: string;
  60. updated_at: string;
  61. ip: string;
  62. }
  63. interface Link {
  64. address: string;
  65. banned_by_id?: number;
  66. banned: boolean;
  67. created_at: string;
  68. description?: string;
  69. domain_id?: number;
  70. expire_in: string;
  71. id: number;
  72. password?: string;
  73. target: string;
  74. updated_at: string;
  75. user_id?: number;
  76. uuid: string;
  77. visit_count: number;
  78. }
  79. interface LinkSanitized {
  80. address: string;
  81. banned_by_id?: undefined;
  82. banned: boolean;
  83. created_at: string;
  84. domain_id?: undefined;
  85. id: string;
  86. link: string;
  87. password: boolean;
  88. target: string;
  89. updated_at: string;
  90. user_id?: undefined;
  91. uuid?: undefined;
  92. visit_count: number;
  93. }
  94. interface LinkJoinedDomain extends Link {
  95. domain?: string;
  96. }
  97. interface Visit {
  98. id: number;
  99. countries: Record<string, number>;
  100. created_at: string;
  101. link_id: number;
  102. referrers: Record<string, number>;
  103. total: number;
  104. br_chrome: number;
  105. br_edge: number;
  106. br_firefox: number;
  107. br_ie: number;
  108. br_opera: number;
  109. br_other: number;
  110. br_safari: number;
  111. os_android: number;
  112. os_ios: number;
  113. os_linux: number;
  114. os_macos: number;
  115. os_other: number;
  116. os_windows: number;
  117. }
  118. interface Stats {
  119. browser: Record<
  120. "chrome" | "edge" | "firefox" | "ie" | "opera" | "other" | "safari",
  121. number
  122. >;
  123. os: Record<
  124. "android" | "ios" | "linux" | "macos" | "other" | "windows",
  125. number
  126. >;
  127. country: Record<string, number>;
  128. referrer: Record<string, number>;
  129. }
  130. declare namespace Express {
  131. export interface Request {
  132. realIP?: string;
  133. pageType?: string;
  134. linkTarget?: string;
  135. protectedLink?: string;
  136. token?: string;
  137. user: UserJoined;
  138. }
  139. }