Init version
This commit is contained in:
		
						commit
						3113263206
					
				|  | @ -0,0 +1,3 @@ | |||
| node_modules | ||||
| # We do not rely on specific version, no need to share this | ||||
| yarn.lock | ||||
|  | @ -0,0 +1,35 @@ | |||
| { | ||||
|   "private": true, | ||||
|   "license": "MIT", | ||||
|   "version": "1.0.0-alpha.1", | ||||
|   "name": "@flaschengeist/types", | ||||
|   "author": "Ferdinand <rpm@fthiessen.de>", | ||||
|   "homepage": "https://flaschengeist.dev/Flaschengeist", | ||||
|   "description": "Flaschengeist TypeScript typings", | ||||
|   "bugs": { | ||||
|     "url": "https://flaschengeist.dev/Flaschengeist/flaschengeist/issues" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://flaschengeist.dev/Flaschengeist/flaschengeist-typings" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "build": "tsc", | ||||
|     "pretty": "prettier --config ./package.json  --write '{,!(node_modules)/**/}*.ts'" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "prettier": "^2.3.0", | ||||
|     "typescript": "^4.2.4", | ||||
|     "vue": "^3.0.11", | ||||
|     "vue-router": "^4.0.8" | ||||
|   }, | ||||
|   "peerDependencies": { | ||||
|     "flaschengeist": "^2.0.0-alpha.1" | ||||
|   }, | ||||
|   "prettier": { | ||||
|     "singleQuote": true, | ||||
|     "semi": true, | ||||
|     "printWidth": 100, | ||||
|     "arrowParens": "always" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,137 @@ | |||
| declare namespace FG { | ||||
|   interface Notification { | ||||
|     id: number; | ||||
|     plugin: string; | ||||
|     text: string; | ||||
|     data?: unknown; | ||||
|     time: Date; | ||||
|   } | ||||
|   interface User { | ||||
|     userid: string; | ||||
|     display_name: string; | ||||
|     firstname: string; | ||||
|     lastname: string; | ||||
|     mail: string; | ||||
|     birthday?: Date; | ||||
|     roles: Array<string>; | ||||
|     permissions?: Array<string>; | ||||
|     avatar_url?: string; | ||||
|   } | ||||
|   interface Session { | ||||
|     expires: Date; | ||||
|     token: string; | ||||
|     lifetime: number; | ||||
|     browser: string; | ||||
|     platform: string; | ||||
|     userid: string; | ||||
|   } | ||||
|   type Permission = string; | ||||
|   interface Role { | ||||
|     id: number; | ||||
|     name: string; | ||||
|     permissions: Array<Permission>; | ||||
|   } | ||||
|   interface Transaction { | ||||
|     id: number; | ||||
|     time: Date; | ||||
|     amount: number; | ||||
|     reversal_id?: number; | ||||
|     author_id?: string; | ||||
|     sender_id?: string; | ||||
|     original_id?: number; | ||||
|     receiver_id?: string; | ||||
|   } | ||||
|   interface Event { | ||||
|     id: number; | ||||
|     start: Date; | ||||
|     end?: Date; | ||||
|     name?: string; | ||||
|     description?: string; | ||||
|     type: EventType | number; | ||||
|     is_template: boolean; | ||||
|     jobs: Array<Job>; | ||||
|   } | ||||
|   interface EventType { | ||||
|     id: number; | ||||
|     name: string; | ||||
|   } | ||||
|   interface Invite { | ||||
|     id: number; | ||||
|     job_id: number; | ||||
|     invitee_id: string; | ||||
|     sender_id: string; | ||||
|   } | ||||
|   interface Job { | ||||
|     id: number; | ||||
|     start: Date; | ||||
|     end?: Date; | ||||
|     type: JobType | number; | ||||
|     comment?: string; | ||||
|     services: Array<Service>; | ||||
|     required_services: number; | ||||
|   } | ||||
|   interface JobType { | ||||
|     id: number; | ||||
|     name: string; | ||||
|   } | ||||
|   interface Service { | ||||
|     userid: string; | ||||
|     is_backup: boolean; | ||||
|     value: number; | ||||
|   } | ||||
|   interface Drink { | ||||
|     id: number; | ||||
|     article_id?: string; | ||||
|     package_size?: number; | ||||
|     name: string; | ||||
|     volume?: number; | ||||
|     cost_per_volume?: number; | ||||
|     cost_per_package?: number; | ||||
|     tags?: Array<Tag>; | ||||
|     type?: DrinkType; | ||||
|     volumes: Array<DrinkPriceVolume>; | ||||
|     uuid: string; | ||||
|     receipt?: Array<string>; | ||||
|   } | ||||
|   interface DrinkIngredient { | ||||
|     id: number; | ||||
|     volume: number; | ||||
|     ingredient_id: number; | ||||
|   } | ||||
|   interface DrinkPrice { | ||||
|     id: number; | ||||
|     price: number; | ||||
|     public: boolean; | ||||
|     description?: string; | ||||
|   } | ||||
|   interface DrinkPriceVolume { | ||||
|     id: number; | ||||
|     volume: number; | ||||
|     min_prices: Array<MinPrices>; | ||||
|     prices: Array<DrinkPrice>; | ||||
|     ingredients: Array<Ingredient>; | ||||
|   } | ||||
|   interface DrinkType { | ||||
|     id: number; | ||||
|     name: string; | ||||
|   } | ||||
|   interface ExtraIngredient { | ||||
|     id: number; | ||||
|     name: string; | ||||
|     price: number; | ||||
|   } | ||||
|   interface Ingredient { | ||||
|     id: number; | ||||
|     drink_ingredient?: DrinkIngredient; | ||||
|     extra_ingredient?: ExtraIngredient; | ||||
|   } | ||||
|   interface MinPrices { | ||||
|     percentage: number; | ||||
|     price: number; | ||||
|   } | ||||
|   interface Tag { | ||||
|     id: number; | ||||
|     name: string; | ||||
|     color: string; | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,2 @@ | |||
| /// <reference path="plugin.d.ts" />
 | ||||
| /// <reference path="flaschengeist.d.ts" />
 | ||||
|  | @ -0,0 +1 @@ | |||
| /// <reference path="index.d.ts" />
 | ||||
|  | @ -0,0 +1,117 @@ | |||
| import { RouteLocationRaw, RouteRecordRaw, RouteRecordName } from 'vue-router'; | ||||
| import { Component } from 'vue'; | ||||
| 
 | ||||
| declare namespace FG_Plugin { | ||||
|   /** | ||||
|    * Interface defining a Flaschengeist plugin | ||||
|    */ | ||||
|   interface Plugin { | ||||
|     name: string; | ||||
|     version: string; | ||||
|     widgets: Widget[]; | ||||
|     /** Pther frontend modules needed for this plugin to work correctly */ | ||||
|     requiredModules: string[]; | ||||
|     /** Backend modules needed for this plugin to work correctly */ | ||||
|     requiredBackendModules: string[]; | ||||
|     /** Menu entries for authenticated users */ | ||||
|     innerRoutes?: MenuRoute[]; | ||||
|     /** Public menu entries (without authentification) */ | ||||
|     outerRoutes?: MenuRoute[]; | ||||
|     /** Routes without menu links, for internal usage */ | ||||
|     internalRoutes?: NamedRouteRecordRaw[]; | ||||
|     /** Handle notifications, defaults to boot/plugins.ts:translateNotification() */ | ||||
|     notification?(msg: FG.Notification): FG_Plugin.Notification; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Defines the loaded state of the Flaschengeist | ||||
|    */ | ||||
|   interface Flaschengeist { | ||||
|     /** All loaded plugins */ | ||||
|     plugins: LoadedPlugin[]; | ||||
|     /** All routes, combined from all plugins */ | ||||
|     routes: RouteRecordRaw[]; | ||||
|     /** All menu entries */ | ||||
|     menuLinks: MenuLink[]; | ||||
|     /** All inner shortcuts */ | ||||
|     shortcuts: Shortcut[]; | ||||
|     /** All outer shortcuts */ | ||||
|     outerShortcuts: Shortcut[]; | ||||
|     /** All widgets */ | ||||
|     widgets: Widget[]; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Interface for a frontend notification | ||||
|    */ | ||||
|   interface Notification extends FG.Notification { | ||||
|     /** If set a button for accepting will be shown, this function will get called before deleting the notification */ | ||||
|     accept?(): Promise<void>; | ||||
|     /** If set this function is called before the notification gets deleted */ | ||||
|     reject?(): Promise<void>; | ||||
|     /** If set the notification text is interpreted as a link to this location */ | ||||
|     link?: RouteLocationRaw; | ||||
|     /** If set this icon is used */ | ||||
|     icon?: string; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Loaded Flaschengeist plugin | ||||
|    */ | ||||
|   interface LoadedPlugin { | ||||
|     name: string; | ||||
|     version: string; | ||||
|     notification(msg: FG.Notification): FG_Plugin.Notification; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Defines a shortcut link | ||||
|    */ | ||||
|   interface Shortcut { | ||||
|     link: RouteRecordName; | ||||
|     icon: string; | ||||
|     permissions?: string[]; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Defines a main menu entry along with the route | ||||
|    * Used when defining a plugin | ||||
|    */ | ||||
|   interface MenuRoute extends MenuEntry { | ||||
|     route: NamedRouteRecordRaw; | ||||
|     shortcut?: boolean; | ||||
|     children?: this[]; | ||||
|   } | ||||
| 
 | ||||
|   type NamedRouteRecordRaw = RouteRecordRaw & { | ||||
|     name: RouteRecordName; | ||||
|   }; | ||||
| 
 | ||||
|   /** | ||||
|    * Defines a menu entry in the main menu | ||||
|    */ | ||||
|   interface MenuLink extends MenuEntry { | ||||
|     /** Name of the target route */ | ||||
|     link: RouteRecordName; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Base interface for internal use | ||||
|    */ | ||||
|   interface MenuEntry { | ||||
|     title: string | (() => string); | ||||
|     icon: string; | ||||
|     permissions?: string[]; | ||||
|     children?: this[]; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Widget object for the dashboard | ||||
|    */ | ||||
|   interface Widget { | ||||
|     name: string; | ||||
|     priority: number; | ||||
|     permissions: FG.Permission[]; | ||||
|     widget: Component; | ||||
|   } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue