Добавлена ДБ
This commit is contained in:
127
node_modules/effect/src/Unify.ts
generated
vendored
Normal file
127
node_modules/effect/src/Unify.ts
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
import { identity } from "./Function.js"
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export declare const unifySymbol: unique symbol
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export type unifySymbol = typeof unifySymbol
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export declare const typeSymbol: unique symbol
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export type typeSymbol = typeof typeSymbol
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export declare const ignoreSymbol: unique symbol
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export type ignoreSymbol = typeof ignoreSymbol
|
||||
|
||||
type MaybeReturn<F> = F extends () => infer R ? R : NonNullable<F>
|
||||
|
||||
type Values<X extends [any, any]> = X extends [infer A, infer Ignore]
|
||||
? Exclude<keyof A, Ignore> extends infer k ? k extends keyof A ? MaybeReturn<A[k]> : never : never
|
||||
: never
|
||||
|
||||
type Ignore<X> = X extends { [ignoreSymbol]?: infer Obj } ? keyof NonNullable<Obj>
|
||||
: never
|
||||
|
||||
type ExtractTypes<
|
||||
X
|
||||
> = X extends {
|
||||
[typeSymbol]?: infer _Type
|
||||
[unifySymbol]?: infer _Unify
|
||||
} ? [NonNullable<_Unify>, Ignore<X>]
|
||||
: never
|
||||
|
||||
type FilterIn<A> = A extends any ? typeSymbol extends keyof A ? A : never : never
|
||||
|
||||
type FilterOut<A> = A extends any ? typeSymbol extends keyof A ? never : A : never
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export type Unify<A> = Values<
|
||||
ExtractTypes<
|
||||
(
|
||||
& FilterIn<A>
|
||||
& { [typeSymbol]: A }
|
||||
)
|
||||
>
|
||||
> extends infer Z ? Z | Exclude<A, Z> | FilterOut<A> : never
|
||||
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
export const unify: {
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<
|
||||
Args extends Array<any>,
|
||||
Args2 extends Array<any>,
|
||||
Args3 extends Array<any>,
|
||||
Args4 extends Array<any>,
|
||||
Args5 extends Array<any>,
|
||||
T
|
||||
>(
|
||||
x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => T
|
||||
): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => (...args: Args5) => Unify<T>
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<
|
||||
Args extends Array<any>,
|
||||
Args2 extends Array<any>,
|
||||
Args3 extends Array<any>,
|
||||
Args4 extends Array<any>,
|
||||
T
|
||||
>(
|
||||
x: (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => T
|
||||
): (...args: Args) => (...args: Args2) => (...args: Args3) => (...args: Args4) => Unify<T>
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<
|
||||
Args extends Array<any>,
|
||||
Args2 extends Array<any>,
|
||||
Args3 extends Array<any>,
|
||||
T
|
||||
>(x: (...args: Args) => (...args: Args2) => (...args: Args3) => T): (...args: Args) => (...args: Args2) => (...args: Args3) => Unify<T>
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<
|
||||
Args extends Array<any>,
|
||||
Args2 extends Array<any>,
|
||||
T
|
||||
>(x: (...args: Args) => (...args: Args2) => T): (...args: Args) => (...args: Args2) => Unify<T>
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<
|
||||
Args extends Array<any>,
|
||||
T
|
||||
>(x: (...args: Args) => T): (...args: Args) => Unify<T>
|
||||
/**
|
||||
* @since 2.0.0
|
||||
*/
|
||||
<T>(x: T): Unify<T>
|
||||
} = identity as any
|
||||
Reference in New Issue
Block a user