@ceale/util 1.14.2 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -43,4 +43,10 @@
43
43
  - tryCatch()
44
44
  - `type.ts`
45
45
  - assert()
46
- - defineEnum()
46
+ - expand()
47
+ - defineEnum()
48
+ - Enum()
49
+ - EnumKeys<>
50
+ - Object.prototype
51
+ - hasKeys()
52
+ - inKeys()
package/dist/cjs/index.js CHANGED
@@ -37,12 +37,14 @@ __export(exports_src, {
37
37
  sleepAsync: () => sleepAsync,
38
38
  sleep: () => sleep,
39
39
  quadraticCurve: () => quadraticCurve,
40
+ expand: () => expand,
40
41
  defineEnum: () => defineEnum,
41
42
  debounce: () => debounce,
42
43
  cubicCurve: () => cubicCurve,
43
44
  css: () => css,
44
45
  assert: () => assert,
45
46
  QuadraticBezier: () => QuadraticBezier,
47
+ Enum: () => Enum,
46
48
  CubicBezier: () => CubicBezier
47
49
  });
48
50
  module.exports = __toCommonJS(exports_src);
@@ -422,23 +424,34 @@ var tryCatch = (parameter) => {
422
424
  throw new TypeError("参数类型错误,应为 Promise 或函数");
423
425
  };
424
426
  // src/type.ts
425
- var assert = (variable) => {};
426
- var defineEnum = (...keys) => {
427
- const obj = keys.reduce((acc, key) => {
428
- acc[key] = key;
429
- return acc;
430
- }, {});
431
- Object.defineProperty(obj, "keys", {
432
- value: () => keys,
433
- writable: false,
434
- enumerable: false,
435
- configurable: false
436
- });
437
- Object.defineProperty(obj, "includes", {
438
- value: (key) => keys.includes(key),
439
- writable: false,
440
- enumerable: false,
441
- configurable: false
442
- });
443
- return obj;
444
- };
427
+ var assert = (variable) => variable;
428
+ var expand = (variable) => variable;
429
+ var defineEnum = (...keys) => keys.reduce((acc, key) => {
430
+ acc[key] = key;
431
+ return acc;
432
+ }, {});
433
+ var Enum = (keys) => ({
434
+ keys: () => Object.keys(keys),
435
+ includes: (key) => Object.keys(keys).includes(key)
436
+ });
437
+ // src/object.ts
438
+ Object.defineProperty(Object.prototype, "hasKeys", {
439
+ value: function(...keys) {
440
+ if (keys.length === 0)
441
+ return false;
442
+ return keys.every((key) => this.hasOwnProperty(key));
443
+ },
444
+ enumerable: false,
445
+ writable: true,
446
+ configurable: true
447
+ });
448
+ Object.defineProperty(Object.prototype, "inKeys", {
449
+ value: function(...keys) {
450
+ if (keys.length === 0)
451
+ return false;
452
+ return keys.every((key) => (key in this));
453
+ },
454
+ enumerable: false,
455
+ writable: true,
456
+ configurable: true
457
+ });
package/dist/esm/index.js CHANGED
@@ -373,26 +373,37 @@ var tryCatch = (parameter) => {
373
373
  throw new TypeError("参数类型错误,应为 Promise 或函数");
374
374
  };
375
375
  // src/type.ts
376
- var assert = (variable) => {};
377
- var defineEnum = (...keys) => {
378
- const obj = keys.reduce((acc, key) => {
379
- acc[key] = key;
380
- return acc;
381
- }, {});
382
- Object.defineProperty(obj, "keys", {
383
- value: () => keys,
384
- writable: false,
385
- enumerable: false,
386
- configurable: false
387
- });
388
- Object.defineProperty(obj, "includes", {
389
- value: (key) => keys.includes(key),
390
- writable: false,
391
- enumerable: false,
392
- configurable: false
393
- });
394
- return obj;
395
- };
376
+ var assert = (variable) => variable;
377
+ var expand = (variable) => variable;
378
+ var defineEnum = (...keys) => keys.reduce((acc, key) => {
379
+ acc[key] = key;
380
+ return acc;
381
+ }, {});
382
+ var Enum = (keys) => ({
383
+ keys: () => Object.keys(keys),
384
+ includes: (key) => Object.keys(keys).includes(key)
385
+ });
386
+ // src/object.ts
387
+ Object.defineProperty(Object.prototype, "hasKeys", {
388
+ value: function(...keys) {
389
+ if (keys.length === 0)
390
+ return false;
391
+ return keys.every((key) => this.hasOwnProperty(key));
392
+ },
393
+ enumerable: false,
394
+ writable: true,
395
+ configurable: true
396
+ });
397
+ Object.defineProperty(Object.prototype, "inKeys", {
398
+ value: function(...keys) {
399
+ if (keys.length === 0)
400
+ return false;
401
+ return keys.every((key) => (key in this));
402
+ },
403
+ enumerable: false,
404
+ writable: true,
405
+ configurable: true
406
+ });
396
407
  export {
397
408
  waitSync,
398
409
  wait,
@@ -402,11 +413,13 @@ export {
402
413
  sleepAsync,
403
414
  sleep,
404
415
  quadraticCurve,
416
+ expand,
405
417
  defineEnum,
406
418
  debounce,
407
419
  cubicCurve,
408
420
  css,
409
421
  assert,
410
422
  QuadraticBezier,
423
+ Enum,
411
424
  CubicBezier
412
425
  };
@@ -1,5 +1,7 @@
1
- import type { CSSProperties } from "vue";
2
- import type { AtRules } from "csstype";
1
+ import type { AtRules, Properties, PropertiesHyphen } from "csstype";
2
+ export interface CSSProperties extends PropertiesHyphen<string | number>, Properties<string | number> {
3
+ [v: `--${string}`]: string | number | undefined;
4
+ }
3
5
  export declare namespace css {
4
6
  type RuleValue = string & {
5
7
  RuleValue: never;
@@ -7,3 +7,4 @@ export * from "./task";
7
7
  export * from "./bezier";
8
8
  export * from "./error";
9
9
  export * from "./type";
10
+ export * from "./object";
@@ -1,34 +1,15 @@
1
1
  declare global {
2
2
  interface Object {
3
- deepAssign<T, U>(target: T, source: U, options?: DeepAssignOptions): T & U;
4
- deepAssign<T, U, V>(target: T, source1: U, source2: V, options?: DeepAssignOptions): T & U & V;
5
- deepAssign<T, U, V, W>(target: T, source1: U, source2: V, source3: W, options?: DeepAssignOptions): T & U & V & W;
6
- deepAssign(target: any, ...sources: any[]): any;
3
+ /**
4
+ * 复数版本的`hasOwnProperty`
5
+ * @param keys 要检查的属性名
6
+ */
7
+ hasKeys(...keys: string[]): boolean;
8
+ /**
9
+ * 复数版本的`in`
10
+ * @param keys 要检查的属性名
11
+ */
12
+ inKeys(...keys: string[]): boolean;
7
13
  }
8
14
  }
9
- interface DeepAssignOptions {
10
- /**
11
- * 合并深度:
12
- * - true: 无限深度
13
- * - false: 浅层合并 (等同于 Object.assign)
14
- * - number: 指定最大深度
15
- * @default true
16
- */
17
- deep?: boolean | number;
18
- /**
19
- * 是否覆盖目标对象属性:
20
- * - true: 源对象属性覆盖目标对象
21
- * - false: 只合并目标对象没有的属性
22
- * @default true
23
- */
24
- overwrite?: boolean;
25
- /**
26
- * 数组合并策略:
27
- * - 'merge': (默认)合并数组项 (递归合并数组元素)
28
- * - 'concat': 连接数组
29
- * - 'replace': 替换整个数组
30
- * @default 'replace'
31
- */
32
- arrayStrategy?: 'replace' | 'merge' | 'concat';
33
- }
34
15
  export {};
@@ -2,8 +2,16 @@
2
2
  * 就地断言一个变量为指定类型
3
3
  * @template Type 断言的类型,默认为`any`
4
4
  * @param variable 待断言的变量
5
+ * @returns 传入的变量,且类型已经被断言为指定类型
5
6
  */
6
7
  export declare const assert: <Type = any>(variable: any) => asserts variable is Type;
8
+ /**
9
+ * 拓展一个变量的类型
10
+ * @param variable 待拓展的变量
11
+ * @param Type 拓展的类型
12
+ * @returns 传入的变量,且类型被拓展为指定类型
13
+ */
14
+ export declare const expand: <Type>(variable: any) => asserts variable is (typeof variable & Type);
7
15
  /**
8
16
  * 定义一个枚举类型。
9
17
  * 返回一个枚举对象,其中每个键名与值相同。
@@ -17,7 +25,33 @@ export declare const assert: <Type = any>(variable: any) => asserts variable is
17
25
  * C: "C"
18
26
  * }
19
27
  */
20
- export declare const defineEnum: <T extends string>(...keys: T[]) => { [K in T]: K; } & {
21
- keys(): T[];
22
- includes(key: any): boolean;
28
+ export declare const defineEnum: <T extends string>(...keys: T[]) => { [K in T]: K; };
29
+ /**
30
+ * 枚举工具函数,为枚举对象提供工具方法
31
+ * @param keys 由 defineEnum 创建的枚举对象
32
+ * @returns 返回一个包含`keys`、`includes`方法的对象
33
+ *
34
+ * @example
35
+ * const 对吗 = defineEnum("对", "不对")
36
+ *
37
+ * // 获取所有枚举键
38
+ * Enum(对吗).keys() // ["对", "不对"]
39
+ *
40
+ * // 检查值是否为有效枚举值
41
+ * Enum(对吗).includes("对") // true
42
+ * Enum(对吗).includes("错") // false
43
+ */
44
+ export declare const Enum: (keys: Record<string, string>) => {
45
+ keys: () => (keyof typeof keys)[];
46
+ includes: (key: any) => boolean;
23
47
  };
48
+ /**
49
+ * 提取枚举的所有键组成联合类型
50
+ * @template E 由 defineEnum 创建的枚举对象
51
+ * @returns 枚举键的联合类型
52
+ *
53
+ * @example
54
+ * const 对吗 = defineEnum("对", "不对")
55
+ * Enum<typeof 对吗> // "对" | "不对"
56
+ */
57
+ export type EnumKeys<E> = E[keyof E];
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@ceale/util",
3
+ "version": "1.16.0",
4
+
3
5
  "author": "Ceale",
4
- "version": "1.14.2",
5
- "module": "index.ts",
6
+ "description": "小工具集",
7
+ "repository": {
8
+ "url": "git+https://github.com/Ceale/ts-util.git"
9
+ },
10
+
11
+ "license": "Unlicense or CC0 or WTFPL",
12
+ "keywords": [ "util" ],
13
+
6
14
  "type": "module",
15
+ "module": "index.ts",
7
16
  "main": "dist/esm/index.js",
8
17
  "types": "dist/types/index.d.ts",
9
18
  "files": ["dist"],
10
- "repository": {
11
- "url": "git+https://github.com/Ceale/ts-util.git"
12
- },
13
- "scripts": {
14
- "build": "bun run build:esm && bun run build:cjs && bun run build:ts",
15
- "build:esm": "bun build --outdir=dist/esm/ --format=esm --target=node src/index.ts",
16
- "build:cjs": "bun build --outdir=dist/cjs/ --format=cjs --target=node src/index.ts",
17
- "build:ts": "tsc --project tsconfig.build.json"
18
- },
19
19
  "exports": {
20
20
  ".": {
21
21
  "import": "./dist/esm/index.js",
@@ -24,14 +24,18 @@
24
24
  },
25
25
  "./package.json": "./package.json"
26
26
  },
27
+
28
+ "scripts": {
29
+ "build": "bun run build:esm && bun run build:cjs && bun run build:ts",
30
+ "build:esm": "bun build --outdir=dist/esm/ --format=esm --target=node src/index.ts",
31
+ "build:cjs": "bun build --outdir=dist/cjs/ --format=cjs --target=node src/index.ts",
32
+ "build:ts": "tsc --project tsconfig.build.json"
33
+ },
27
34
  "devDependencies": {
35
+ "typescript": "^5",
28
36
  "@types/bun": "latest"
29
37
  },
30
- "peerDependencies": {
31
- "typescript": "^5"
32
- },
33
38
  "dependencies": {
34
- "csstype": "^3.1.3",
35
- "vue": "^3.5.21"
39
+ "csstype": "^3.1.3"
36
40
  }
37
41
  }