This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package io.github.aparx.skywarz.utils.material; | |
import com.google.common.base.Preconditions; | |
import org.apache.commons.lang3.Validate; | |
import org.bukkit.DyeColor; | |
import org.bukkit.Material; | |
import org.checkerframework.checker.nullness.qual.NonNull; | |
import java.util.EnumMap; | |
import java.util.function.Function; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.google.common.base.Preconditions; | |
import com.google.errorprone.annotations.CanIgnoreReturnValue; | |
import com.google.errorprone.annotations.CheckReturnValue; | |
import lombok.Getter; | |
import org.checkerframework.checker.index.qual.NonNegative; | |
import org.checkerframework.checker.nullness.qual.NonNull; | |
import org.checkerframework.checker.nullness.qual.Nullable; | |
import org.checkerframework.dataflow.qual.Pure; | |
import java.util.*; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type _JoinableElement = string | number | null | undefined | boolean; | |
type _JoinableArray = _JoinableElement[]; | |
export type JoinArray< | |
TArray extends _JoinableArray, | |
TDelimiter extends string = " " | |
> = _JoinArray<TArray, TDelimiter>; | |
type _JoinArray< | |
TArray extends _JoinableArray, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export type StringConcat<TArgs extends string[]> = _Flatten<TArgs>; | |
type _Flatten<TArgs extends string[], _TArg extends string = ""> = | |
TArgs extends [infer TCurrent extends string, ...infer TNext extends string[]] | |
? _Flatten<TNext, `${_TArg}${TCurrent}`> | |
: _TArg; | |
export function stringConcat<const TArgs extends string[]>(...args: TArgs): StringConcat<TArgs> { | |
if (args.length === 0) return "" as StringConcat<TArgs>; | |
return "".concat(...args) as StringConcat<TArgs>; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function memoize<TMemoizedFn extends (...args: any[]) => any>( | |
callback: TMemoizedFn, | |
checkArgs: boolean = true | |
): TMemoizedFn { | |
let memoized: true; | |
let memory: ReturnType<TMemoizedFn>; | |
let previousArgs: unknown[]; | |
return function __memoized(...args: unknown[]): ReturnType<TMemoizedFn> { | |
if (!memoized || (checkArgs && !isSameArgs(previousArgs, args))) { | |
memory = callback(...args); |
OlderNewer