Files
medusa-store/packages/admin/admin-vite-plugin/src/vmod.ts
2024-10-18 09:38:28 +00:00

80 lines
2.2 KiB
TypeScript

import {
DISPLAY_VIRTUAL_MODULE,
FORM_VIRTUAL_MODULE,
LINK_VIRTUAL_MODULE,
MENU_ITEM_VIRTUAL_MODULE,
ROUTE_VIRTUAL_MODULE,
WIDGET_VIRTUAL_MODULE,
} from "@medusajs/admin-shared"
const RESOLVED_LINK_VIRTUAL_MODULE = `\0${LINK_VIRTUAL_MODULE}`
const RESOLVED_FORM_VIRTUAL_MODULE = `\0${FORM_VIRTUAL_MODULE}`
const RESOLVED_DISPLAY_VIRTUAL_MODULE = `\0${DISPLAY_VIRTUAL_MODULE}`
const RESOLVED_ROUTE_VIRTUAL_MODULE = `\0${ROUTE_VIRTUAL_MODULE}`
const RESOLVED_MENU_ITEM_VIRTUAL_MODULE = `\0${MENU_ITEM_VIRTUAL_MODULE}`
const RESOLVED_WIDGET_VIRTUAL_MODULE = `\0${WIDGET_VIRTUAL_MODULE}`
const VIRTUAL_MODULES = [
LINK_VIRTUAL_MODULE,
FORM_VIRTUAL_MODULE,
DISPLAY_VIRTUAL_MODULE,
ROUTE_VIRTUAL_MODULE,
MENU_ITEM_VIRTUAL_MODULE,
WIDGET_VIRTUAL_MODULE,
] as const
const RESOLVED_VIRTUAL_MODULES = [
RESOLVED_LINK_VIRTUAL_MODULE,
RESOLVED_FORM_VIRTUAL_MODULE,
RESOLVED_DISPLAY_VIRTUAL_MODULE,
RESOLVED_ROUTE_VIRTUAL_MODULE,
RESOLVED_MENU_ITEM_VIRTUAL_MODULE,
RESOLVED_WIDGET_VIRTUAL_MODULE,
] as const
export function resolveVirtualId(id: string) {
return `\0${id}`
}
export function isVirtualModuleId(id: string): id is VirtualModule {
return VIRTUAL_MODULES.includes(id as VirtualModule)
}
export function isResolvedVirtualModuleId(
id: string
): id is (typeof RESOLVED_VIRTUAL_MODULES)[number] {
return RESOLVED_VIRTUAL_MODULES.includes(
id as (typeof RESOLVED_VIRTUAL_MODULES)[number]
)
}
export type VirtualModule =
| typeof LINK_VIRTUAL_MODULE
| typeof FORM_VIRTUAL_MODULE
| typeof DISPLAY_VIRTUAL_MODULE
| typeof ROUTE_VIRTUAL_MODULE
| typeof MENU_ITEM_VIRTUAL_MODULE
| typeof WIDGET_VIRTUAL_MODULE
const resolvedVirtualModuleIds = {
link: RESOLVED_LINK_VIRTUAL_MODULE,
form: RESOLVED_FORM_VIRTUAL_MODULE,
display: RESOLVED_DISPLAY_VIRTUAL_MODULE,
route: RESOLVED_ROUTE_VIRTUAL_MODULE,
menuItem: RESOLVED_MENU_ITEM_VIRTUAL_MODULE,
widget: RESOLVED_WIDGET_VIRTUAL_MODULE,
} as const
const virtualModuleIds = {
link: LINK_VIRTUAL_MODULE,
form: FORM_VIRTUAL_MODULE,
display: DISPLAY_VIRTUAL_MODULE,
route: ROUTE_VIRTUAL_MODULE,
menuItem: MENU_ITEM_VIRTUAL_MODULE,
widget: WIDGET_VIRTUAL_MODULE,
} as const
export const vmod = {
resolved: resolvedVirtualModuleIds,
virtual: virtualModuleIds,
}