import { err, ok, type Result } from 'neverthrow' import { createContext, type FC, type ReactNode, useContext } from 'react' import type { Version } from '../schemas/version' type VersionContextProps = { version: Version } const VersionContext = createContext(undefined) const useVersion = (): Result => { const context = useContext(VersionContext) if (!context) { return err(new Error('useVersion must be used within a VersionProvider')) } return ok(context) } export const useVersionOrThrow = (): VersionContextProps => { const result = useVersion() if (result.isErr()) { throw result.error } return result.value } export const VersionProvider: FC<{ version: Version children: ReactNode }> = ({ version, children }) => { return ( {children} ) }