From c84da5a617db161d997dbd36f5bc554f1353b3da Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Thu, 3 Apr 2025 22:56:29 +0700 Subject: [PATCH] feat(lib/utils)!: remove non-working `index-required-file` util, add `generators` util --- lib/utils/package.json | 6 +++--- lib/utils/src/generators.ts | 29 ++++++++++++++++++++++++++++ lib/utils/src/index-required-file.ts | 3 --- 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 lib/utils/src/generators.ts delete mode 100644 lib/utils/src/index-required-file.ts diff --git a/lib/utils/package.json b/lib/utils/package.json index 0b51eb1..562c9f0 100644 --- a/lib/utils/package.json +++ b/lib/utils/package.json @@ -9,8 +9,8 @@ "./functions": { "default": "./src/functions.ts" }, - "./index-required-file": { - "default": "./src/index-required-file.ts" + "./generators": { + "default": "./src/generators.ts" }, "./logger": { "default": "./src/logger.ts" @@ -22,4 +22,4 @@ "default": "./src/proxy.ts" } } -} \ No newline at end of file +} diff --git a/lib/utils/src/generators.ts b/lib/utils/src/generators.ts new file mode 100644 index 0000000..0be78fb --- /dev/null +++ b/lib/utils/src/generators.ts @@ -0,0 +1,29 @@ +/** + * Get the next value from a generator, optionally skipping a number of values. + * + * @param generator The generator to get the value from. + * @param skip The number of values to skip before getting the next value. Think of it as the generator being turned into an array, what index of the array do you want to return? + * @returns The next value from the generator. + * + * @example + * ```ts + * const generator = function* () { + * yield 1 + * yield 2 + * yield 3 + * } + * + * const arr = [...generator()] // [1, 2, 3] + * + * yielded(generator()) === arr[0] + * yielded(generator(), 1) === arr[1] + * yielded(generator(), 2) === arr[2] + */ +export function yielded(generator: Generator, skip = 0): T { + if (skip) + for (let i = 0; i < skip; i++) + if (generator.next().done) + throw new Error(`Generator has no more values to drop (dropped ${i + 1} out of ${skip})`) + + return generator.next().value +} diff --git a/lib/utils/src/index-required-file.ts b/lib/utils/src/index-required-file.ts deleted file mode 100644 index db570be..0000000 --- a/lib/utils/src/index-required-file.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { _mUninited } from '@revenge-mod/modules/_/metro' - -if (_mUninited.has(0)) throw new Error('Cannot import this file before index (module 0) is required')