@goodfellas/graduation
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

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.

Package Sidebar

Install

npm i @goodfellas/graduation

Weekly Downloads

2

Version

1.0.4

License

MIT

Unpacked Size

16.2 kB

Total Files

11

Last publish

Collaborators

  • lfvaamorim