import { ObjectId } from "mongodb"; import { BOARD_COLUMN_STATUSES } from "./scanResources.constants"; import type { BoardColumn, UrlTaskStatus } from "./scanResources.types"; const STATUS_TO_COLUMN: Record = Object.entries( BOARD_COLUMN_STATUSES, ).reduce( (acc, [column, statuses]) => { for (const status of statuses) { acc[status] = column as BoardColumn; } return acc; }, {} as Record, ); export const boardColumn = (status: UrlTaskStatus): BoardColumn => STATUS_TO_COLUMN[status]; export const statusesForColumn = ( column: BoardColumn, ): readonly UrlTaskStatus[] => BOARD_COLUMN_STATUSES[column]; export const encodeCursor = (id: ObjectId): string => Buffer.from(id.toHexString()).toString("base64"); export const decodeCursor = (cursor: string): ObjectId => new ObjectId(Buffer.from(cursor, "base64").toString("utf-8")); export const escapeRegex = (text: string): string => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");