53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { App } from "vue"
|
|
import { pipe } from "fp-ts/function"
|
|
import * as A from "fp-ts/Array"
|
|
import { RouteLocationNormalized, Router } from "vue-router"
|
|
|
|
export type HoppModule = {
|
|
/**
|
|
* Define this function to get access to Vue App instance and augment
|
|
* it (installing components, directives and plugins). Also useful for
|
|
* early generic initializations. This function should be called first
|
|
*/
|
|
onVueAppInit?: (app: App) => void
|
|
|
|
/**
|
|
* Called when the router is done initializing.
|
|
* Used if a module requires access to the router instance
|
|
*/
|
|
onRouterInit?: (app: App, router: Router) => void
|
|
|
|
/**
|
|
* Called when the root component (App.vue) is running setup.
|
|
* This function is generally called last in the lifecycle.
|
|
* This function executes with a component setup context, so you can
|
|
* run composables within this and it should just be scoped to the
|
|
* root component
|
|
*/
|
|
onRootSetup?: () => void
|
|
|
|
/**
|
|
* Called by the router to tell all the modules before a route navigation
|
|
* is made.
|
|
*/
|
|
onBeforeRouteChange?: (
|
|
to: RouteLocationNormalized,
|
|
from: RouteLocationNormalized,
|
|
router: Router
|
|
) => void
|
|
|
|
/**
|
|
* Called by the router to tell all the modules that a route navigation has completed
|
|
*/
|
|
onAfterRouteChange?: (to: RouteLocationNormalized, router: Router) => void
|
|
}
|
|
|
|
/**
|
|
* All the modules Hoppscotch loads into the app
|
|
*/
|
|
export const HOPP_MODULES = pipe(
|
|
import.meta.glob("@modules/*.ts", { eager: true }),
|
|
Object.values,
|
|
A.map(({ default: defaultVal }) => defaultVal as HoppModule)
|
|
)
|