@goodfellas/graduation
v1.0.4
Published
This package provides the necessary types, interfaces, and utilities for managing jiujitsu graduations.
Downloads
75
Maintainers
Readme
Jiujitsu Belt Graduation
This repository contains TypeScript code for modeling and validating jiujitsu belt graduations. It includes two modules: Colors and Jiujitsu Belt Type.
Colors
Colors exports an enumeration List of all valid jiujitsu belt colors, including white, gray, yellow, orange, green, blue, purple, brown, black, red, and their variations (e.g. gray-white, yellow-black, etc.). It also exports a function createSchema that returns a zod schema for validating a given belt color.
Jiujitsu Belt Type
Jiujitsu Belt Type exports a type Interface representing a jiujitsu belt with a color and degree of proficiency. It also exports a function createSchema that returns a zod schema for validating a given jiujitsu belt, and a function compare for comparing two belts by color and degree.
Additionally, it exports a list object mapping each belt color to an array of valid degrees, as well as degreeList, an array of all possible jiujitsu belts sorted by color and degree.
Usage
To use these modules in your TypeScript code, simply import them as needed:
import { List, createSchema as createColorSchema } from '@goodfellas/graduation/colors';
import { Interface, createSchema as createBeltSchema } from '@goodfellas/graduation';
const colorSchema = createColorSchema();
const beltSchema = createBeltSchema();
const whiteBelt: Interface = { color: List.White, degree: 1 };
const yellowBelt: Interface = { color: List.Yellow, degree: 2 };
const validWhiteBelt = beltSchema.parse(whiteBelt); // OK
const invalidYellowBelt = beltSchema.parse(yellowBelt); // Throws an error
License
This code is released under the MIT License. See LICENSE for more information.