1import { enumOf } from "@akanjs/base";
2
3export const MyEnum = enumOf(["value1", "value2"] as const);
4export type MyEnum = enumOf<typeof MyEnum>;
1export const Status = enumOf(["active", "pending", "archived"] as const);
2export type Status = enumOf<typeof Status>;
1@Field.Prop(() => String, {
2 enum: Status,
3 default: "active"
4})
5status: Status;
1@Field.Prop(() => [String], {
2 enum: UserRole
3})
4roles: UserRole[];
1@Filter.Mongo()
2filterByStatus(
3 @Filter.Arg("status", () => String, {
4 enum: Status
5 })
6 status: Status
7) {
8 return { status };
9}
1Status.has("active"); // true
2Status.has("invalid"); // false
1Status.indexOf("archived"); // Returns 2
1// Find
2Status.find((val) => val.includes("a"));
3
4// Filter
5Status.filter((val) => val.startsWith("a"));
6
7// Map
8Status.map((val) => val.toUpperCase());
1export const TicketStatus = enumOf([
2 "active",
3 "rejected",
4 "opened",
5 "inProgress",
6 "done",
7 "reviewing",
8 "feedback",
9 "completed",
10 "archived",
11] as const);
1static getActiveTickets(tickets: LightTicket[]) {
2 return tickets.filter(t =>
3 ["active", "inProgress"].includes(t.status)
4 );
5}