From fc5c217fd257e955832814547caeee7a9171462e Mon Sep 17 00:00:00 2001 From: Snickbit Date: Tue, 16 May 2023 12:46:06 -0400 Subject: [PATCH] fix: add general use methods --- packages/cycle/src/index.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/cycle/src/index.ts b/packages/cycle/src/index.ts index 6cfbb44b..2ee5eacf 100644 --- a/packages/cycle/src/index.ts +++ b/packages/cycle/src/index.ts @@ -1,7 +1,7 @@ -import {arrayShuffle, isString} from '@snickbit/utilities' +import {arrayShuffle, isString, JSONStringify} from '@snickbit/utilities' import * as presets from './presets' -export type Preset = keyof typeof presets +export type Preset = string & keyof typeof presets export class Cycle { protected started: boolean @@ -92,10 +92,26 @@ export class Cycle { shuffle() { this.items = arrayShuffle(this.items) } + + values() { + return [...this.items] + } + + indexes() { + return Object.keys(this.items).map(Number) + } + + toJSON() { + return this.values() + } + + toString() { + return JSONStringify(this.toJSON()) + } } export function cycle(items?: T[]): Cycle export function cycle(prefix?: Preset): Cycle -export function cycle(itemsOrPreset?: T[] | string): Cycle { +export function cycle(itemsOrPreset?: Preset | T[]): Cycle { return new Cycle(itemsOrPreset as any) }