🎩 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.3.0
to
0.3.1
+19
-11
dist/index.cjs

@@ -21,7 +21,7 @@ "use strict";

// src/index.ts
var src_exports = {};
__export(src_exports, {
var index_exports = {};
__export(index_exports, {
defineEnum: () => defineEnum
});
module.exports = __toCommonJS(src_exports);
module.exports = __toCommonJS(index_exports);

@@ -52,12 +52,6 @@ // src/impl.ts

};
res.in = (value, ...items) => {
if (typeof value === "number") {
return items.some((item) => res[item].value === value);
} else {
return items.some((item) => res[item].name === value);
}
};
Object.defineProperty(res, "in", {
Object.defineProperty(res, "$in", {
enumerable: false,
value: (value, ...items) => {
items = items.length === 0 ? Object.keys(res) : items;
if (typeof value === "number") {

@@ -71,2 +65,16 @@ return items.some((item) => res[item].value === value);

});
Object.defineProperty(res, "$pick", {
enumerable: false,
value: (...items) => {
return defineEnum(Object.fromEntries(items.map((item) => [item, res[item]])));
},
writable: false
});
Object.defineProperty(res, "$omit", {
enumerable: false,
value: (...items) => {
return defineEnum(Object.fromEntries(Object.keys(res).filter((key) => !items.includes(key)).map((key) => [key, res[key]])));
},
writable: false
});
return res;

@@ -73,0 +81,0 @@ }

@@ -51,3 +51,18 @@ type Definite<T> = {

type EnumMethods<D extends EnumOption> = {
in(value: number | string, ...items: (keyof D)[]): boolean;
/**
* 判断一个值是否在指定的一个或多个枚举项中
* @param value 值,可以是枚举值或枚举名称
* @param items 枚举项名称,如果不传则默认所有枚举项
*/
$in(value: number | string, ...items: (keyof D)[]): boolean;
/**
* 排除指定的枚举项,返回一个新的枚举
* @param items 枚举项名称
*/
$omit<T extends (keyof D)[]>(...items: T): EnumDefine<Omit<D, T[number]>>;
/**
* 选择指定的枚举项,返回一个新的枚举
* @param items 枚举项名称
*/
$pick<T extends (keyof D)[]>(...items: T): EnumDefine<Pick<D, T[number]>>;
};

@@ -65,3 +80,3 @@ type EnumDefine<D extends EnumOption> = DefiniteEnumDefine<D> & UnknownEnumDefine<D> & EnumMethods<D>;

*/
type EnumNames<T extends UnknownEnumDefine> = keyof Definite<T> & string;
type EnumNames<T extends UnknownEnumDefine> = Exclude<keyof Definite<T>, keyof EnumMethods<any>> & string;
/**

@@ -164,2 +179,11 @@ * 获取枚举项值联合类型

type UnWrapEnumValue<T> = T extends ValueMeta<EnumValueSymbol, infer V> ? V : T extends number ? T : never;
/**
* 获取枚举项值解构联合类型
* @example
* ```ts
* const arrow = defineEnum({ up: { title: '上', value: 1 }, down: { title: '下', value:2 } })
* type ArrowValues = EnumValues<typeof arrow> // 1 | 2
* ```
*/
type UnWrapEnumValues<T extends UnknownEnumDefine> = T extends UnknownEnumDefine<infer D> ? D[keyof D]['value'] : never;

@@ -175,2 +199,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 RequestStrictEnumValue, 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 UnWrapEnumValues, type UnknownEnumDefine, type UnknownEnumType, defineEnum };

@@ -51,3 +51,18 @@ type Definite<T> = {

type EnumMethods<D extends EnumOption> = {
in(value: number | string, ...items: (keyof D)[]): boolean;
/**
* 判断一个值是否在指定的一个或多个枚举项中
* @param value 值,可以是枚举值或枚举名称
* @param items 枚举项名称,如果不传则默认所有枚举项
*/
$in(value: number | string, ...items: (keyof D)[]): boolean;
/**
* 排除指定的枚举项,返回一个新的枚举
* @param items 枚举项名称
*/
$omit<T extends (keyof D)[]>(...items: T): EnumDefine<Omit<D, T[number]>>;
/**
* 选择指定的枚举项,返回一个新的枚举
* @param items 枚举项名称
*/
$pick<T extends (keyof D)[]>(...items: T): EnumDefine<Pick<D, T[number]>>;
};

@@ -65,3 +80,3 @@ type EnumDefine<D extends EnumOption> = DefiniteEnumDefine<D> & UnknownEnumDefine<D> & EnumMethods<D>;

*/
type EnumNames<T extends UnknownEnumDefine> = keyof Definite<T> & string;
type EnumNames<T extends UnknownEnumDefine> = Exclude<keyof Definite<T>, keyof EnumMethods<any>> & string;
/**

@@ -164,2 +179,11 @@ * 获取枚举项值联合类型

type UnWrapEnumValue<T> = T extends ValueMeta<EnumValueSymbol, infer V> ? V : T extends number ? T : never;
/**
* 获取枚举项值解构联合类型
* @example
* ```ts
* const arrow = defineEnum({ up: { title: '上', value: 1 }, down: { title: '下', value:2 } })
* type ArrowValues = EnumValues<typeof arrow> // 1 | 2
* ```
*/
type UnWrapEnumValues<T extends UnknownEnumDefine> = T extends UnknownEnumDefine<infer D> ? D[keyof D]['value'] : never;

@@ -175,2 +199,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 RequestStrictEnumValue, 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 UnWrapEnumValues, type UnknownEnumDefine, type UnknownEnumType, defineEnum };

@@ -25,12 +25,6 @@ // src/impl.ts

};
res.in = (value, ...items) => {
if (typeof value === "number") {
return items.some((item) => res[item].value === value);
} else {
return items.some((item) => res[item].name === value);
}
};
Object.defineProperty(res, "in", {
Object.defineProperty(res, "$in", {
enumerable: false,
value: (value, ...items) => {
items = items.length === 0 ? Object.keys(res) : items;
if (typeof value === "number") {

@@ -44,2 +38,16 @@ return items.some((item) => res[item].value === value);

});
Object.defineProperty(res, "$pick", {
enumerable: false,
value: (...items) => {
return defineEnum(Object.fromEntries(items.map((item) => [item, res[item]])));
},
writable: false
});
Object.defineProperty(res, "$omit", {
enumerable: false,
value: (...items) => {
return defineEnum(Object.fromEntries(Object.keys(res).filter((key) => !items.includes(key)).map((key) => [key, res[key]])));
},
writable: false
});
return res;

@@ -46,0 +54,0 @@ }

{
"name": "@yafh/enum-def",
"version": "0.3.0",
"version": "0.3.1",
"type": "module",

@@ -13,5 +13,5 @@ "scripts": {

"@types/bun": "latest",
"bumpp": "^9.5.2",
"tsup": "^8.2.4",
"vitest": "^2.0.5"
"bumpp": "^10.1.0",
"tsup": "^8.4.0",
"vitest": "^3.1.1"
},

@@ -18,0 +18,0 @@ "peerDependencies": {