🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@yafh/enum-def

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@yafh/enum-def - npm Package Compare versions

Comparing version
0.2.4
to
0.2.5
+32
-5
dist/index.d.cts
type Definite<T> = {
[K in keyof T as K extends `${infer _}` ? K : never]: T[K];
};
declare const enumOptSymbol: unique symbol;
declare const enumValueSymbol: unique symbol;
type EnumOptSymbol = typeof enumOptSymbol;
type EnumValueSymbol = typeof enumValueSymbol;
type EnumItemOption = {

@@ -15,4 +19,4 @@ /**

type EnumOption = Record<string, EnumItemOption>;
type ValueMeta<S extends string, V> = Partial<Record<`__enum_${S}`, V>>;
type EnumItemValue<D extends EnumOption, V extends number> = ValueMeta<'opt', D> & ValueMeta<'value', V> & V;
type ValueMeta<S extends EnumOptSymbol | EnumValueSymbol, V> = Partial<Record<S, V>>;
type EnumItemValue<D extends EnumOption, V extends number> = ValueMeta<EnumOptSymbol, D> & ValueMeta<EnumValueSymbol, V> & V;
type EnumItem<T extends string, N extends string, V extends number, D extends EnumOption> = {

@@ -124,4 +128,27 @@ /**

*/
type RequestEnumValue<T> = T extends UnknownEnumDefine<infer D> ? Partial<ValueMeta<'opt', D>> & number : never;
type RequestEnumValue<T> = T extends UnknownEnumDefine<infer D> ? Partial<ValueMeta<EnumOptSymbol, D>> & number : never;
/**
* 请求严格枚举值类型,通常用于函数形参的定义
* 可以通过的类型有:
* - 枚举值 `arrow.up.value`
* - 未知的枚举值 `arrow[n]!` 或 `arrow.foo!.value`
* - 数字
* @example
* ```ts
* const arrow = defineEnum({ up: { title: '上', value: 1 }, down: { title: '下', value:2 } })
*
* function handleMove(arrow: RequestEnumValue<typeof arrow>) {
* //...
* }
*
* handleMove(arrow.up.value) // ok
* handleMove(1) // error
* handleMove(arrow[n]!) // error
* handleMove(arrow.foo!.value) // error
* handleMove(animals.brid.value) // error
* handleMove(9999) // error
* ```
*/
type RequestStrictEnumValue<T> = T extends UnknownEnumDefine<infer D> ? EnumItemValue<D, EnumValues<T>> : never;
/**
* 解构枚举类型

@@ -136,3 +163,3 @@ * @example

*/
type UnWrapEnumValue<T> = T extends ValueMeta<'value', infer V> ? V : T extends number ? T : never;
type UnWrapEnumValue<T> = T extends ValueMeta<EnumValueSymbol, infer V> ? V : T extends number ? T : never;

@@ -148,2 +175,2 @@ /**

export { type DefiniteEnumDefine, type EnumDefine, type EnumItem, type EnumItemOption, type EnumItemValue, type EnumIterate, type EnumNames, type EnumOption, type EnumTitles, type EnumValues, type EunmItemsDefine, type RequestEnumItem, type RequestEnumValue, type UnWrapEnumValue, type UnknownEnumDefine, type UnknownEnumType, defineEnum };
export { type DefiniteEnumDefine, type EnumDefine, type EnumItem, type EnumItemOption, type EnumItemValue, type EnumIterate, type EnumNames, type EnumOption, type EnumTitles, type EnumValues, type EunmItemsDefine, type RequestEnumItem, type RequestEnumValue, type RequestStrictEnumValue, type UnWrapEnumValue, type UnknownEnumDefine, type UnknownEnumType, defineEnum };
type Definite<T> = {
[K in keyof T as K extends `${infer _}` ? K : never]: T[K];
};
declare const enumOptSymbol: unique symbol;
declare const enumValueSymbol: unique symbol;
type EnumOptSymbol = typeof enumOptSymbol;
type EnumValueSymbol = typeof enumValueSymbol;
type EnumItemOption = {

@@ -15,4 +19,4 @@ /**

type EnumOption = Record<string, EnumItemOption>;
type ValueMeta<S extends string, V> = Partial<Record<`__enum_${S}`, V>>;
type EnumItemValue<D extends EnumOption, V extends number> = ValueMeta<'opt', D> & ValueMeta<'value', V> & V;
type ValueMeta<S extends EnumOptSymbol | EnumValueSymbol, V> = Partial<Record<S, V>>;
type EnumItemValue<D extends EnumOption, V extends number> = ValueMeta<EnumOptSymbol, D> & ValueMeta<EnumValueSymbol, V> & V;
type EnumItem<T extends string, N extends string, V extends number, D extends EnumOption> = {

@@ -124,4 +128,27 @@ /**

*/
type RequestEnumValue<T> = T extends UnknownEnumDefine<infer D> ? Partial<ValueMeta<'opt', D>> & number : never;
type RequestEnumValue<T> = T extends UnknownEnumDefine<infer D> ? Partial<ValueMeta<EnumOptSymbol, D>> & number : never;
/**
* 请求严格枚举值类型,通常用于函数形参的定义
* 可以通过的类型有:
* - 枚举值 `arrow.up.value`
* - 未知的枚举值 `arrow[n]!` 或 `arrow.foo!.value`
* - 数字
* @example
* ```ts
* const arrow = defineEnum({ up: { title: '上', value: 1 }, down: { title: '下', value:2 } })
*
* function handleMove(arrow: RequestEnumValue<typeof arrow>) {
* //...
* }
*
* handleMove(arrow.up.value) // ok
* handleMove(1) // error
* handleMove(arrow[n]!) // error
* handleMove(arrow.foo!.value) // error
* handleMove(animals.brid.value) // error
* handleMove(9999) // error
* ```
*/
type RequestStrictEnumValue<T> = T extends UnknownEnumDefine<infer D> ? EnumItemValue<D, EnumValues<T>> : never;
/**
* 解构枚举类型

@@ -136,3 +163,3 @@ * @example

*/
type UnWrapEnumValue<T> = T extends ValueMeta<'value', infer V> ? V : T extends number ? T : never;
type UnWrapEnumValue<T> = T extends ValueMeta<EnumValueSymbol, infer V> ? V : T extends number ? T : never;

@@ -148,2 +175,2 @@ /**

export { type DefiniteEnumDefine, type EnumDefine, type EnumItem, type EnumItemOption, type EnumItemValue, type EnumIterate, type EnumNames, type EnumOption, type EnumTitles, type EnumValues, type EunmItemsDefine, type RequestEnumItem, type RequestEnumValue, type UnWrapEnumValue, type UnknownEnumDefine, type UnknownEnumType, defineEnum };
export { type DefiniteEnumDefine, type EnumDefine, type EnumItem, type EnumItemOption, type EnumItemValue, type EnumIterate, type EnumNames, type EnumOption, type EnumTitles, type EnumValues, type EunmItemsDefine, type RequestEnumItem, type RequestEnumValue, type RequestStrictEnumValue, type UnWrapEnumValue, type UnknownEnumDefine, type UnknownEnumType, defineEnum };
+1
-2
{
"name": "@yafh/enum-def",
"version": "0.2.4",
"module": "index.ts",
"version": "0.2.5",
"type": "module",

@@ -6,0 +5,0 @@ "scripts": {