| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | import { RecipeAPI } from "./class-interfaces/recipes"; | 
					
						
							| 
									
										
										
										
											2021-08-03 21:38:45 -08:00
										 |  |  | import { UserApi } from "./class-interfaces/users"; | 
					
						
							| 
									
										
										
										
											2021-08-06 16:28:12 -08:00
										 |  |  | import { GroupAPI } from "./class-interfaces/groups"; | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  | import { DebugAPI } from "./class-interfaces/debug"; | 
					
						
							|  |  |  | import { EventsAPI } from "./class-interfaces/events"; | 
					
						
							|  |  |  | import { BackupAPI } from "./class-interfaces/backups"; | 
					
						
							|  |  |  | import { UploadFile } from "./class-interfaces/upload"; | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  | import { CategoriesAPI } from "./class-interfaces/categories"; | 
					
						
							|  |  |  | import { TagsAPI } from "./class-interfaces/tags"; | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | import { ApiRequestInstance } from "~/types/api"; | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  | class Api { | 
					
						
							|  |  |  |   private static instance: Api; | 
					
						
							|  |  |  |   public recipes: RecipeAPI; | 
					
						
							| 
									
										
										
										
											2021-08-03 21:38:45 -08:00
										 |  |  |   public users: UserApi; | 
					
						
							| 
									
										
										
										
											2021-08-06 16:28:12 -08:00
										 |  |  |   public groups: GroupAPI; | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |   public debug: DebugAPI; | 
					
						
							|  |  |  |   public events: EventsAPI; | 
					
						
							|  |  |  |   public backups: BackupAPI; | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  |   public categories: CategoriesAPI; | 
					
						
							|  |  |  |   public tags: TagsAPI; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Utils
 | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |   public upload: UploadFile; | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |   constructor(requests: ApiRequestInstance) { | 
					
						
							|  |  |  |     if (Api.instance instanceof Api) { | 
					
						
							|  |  |  |       return Api.instance; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  |     // Recipes
 | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |     this.recipes = new RecipeAPI(requests); | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  |     this.categories = new CategoriesAPI(requests); | 
					
						
							|  |  |  |     this.tags = new TagsAPI(requests); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Users
 | 
					
						
							| 
									
										
										
										
											2021-08-03 21:38:45 -08:00
										 |  |  |     this.users = new UserApi(requests); | 
					
						
							| 
									
										
										
										
											2021-08-06 16:28:12 -08:00
										 |  |  |     this.groups = new GroupAPI(requests); | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Admin
 | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |     this.debug = new DebugAPI(requests); | 
					
						
							|  |  |  |     this.events = new EventsAPI(requests); | 
					
						
							|  |  |  |     this.backups = new BackupAPI(requests); | 
					
						
							| 
									
										
										
										
											2021-08-08 20:52:44 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Utils
 | 
					
						
							| 
									
										
										
										
											2021-08-07 15:12:25 -08:00
										 |  |  |     this.upload = new UploadFile(requests); | 
					
						
							| 
									
										
										
										
											2021-07-31 14:45:28 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |     Object.freeze(this); | 
					
						
							|  |  |  |     Api.instance = this; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export { Api }; |