promise-logic 1.3.2 → 2.3.3

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.
Files changed (60) hide show
  1. package/README.md +213 -227
  2. package/dist/factory.cjs.js +15 -1
  3. package/dist/factory.cjs.js.map +1 -1
  4. package/dist/factory.esm.js +15 -1
  5. package/dist/factory.esm.js.map +1 -1
  6. package/dist/index.cjs.js +15 -1
  7. package/dist/index.cjs.js.map +1 -1
  8. package/dist/index.esm.js +15 -1
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/v2/factory.cjs.js +287 -0
  11. package/dist/v2/factory.cjs.js.map +1 -0
  12. package/dist/v2/factory.esm.js +285 -0
  13. package/dist/v2/factory.esm.js.map +1 -0
  14. package/dist/v2/gates/BaseGate.d.ts +6 -0
  15. package/dist/v2/gates/BaseGate.d.ts.map +1 -0
  16. package/dist/v2/gates/and.d.ts +5 -0
  17. package/dist/v2/gates/and.d.ts.map +1 -0
  18. package/dist/v2/gates/majority.d.ts +5 -0
  19. package/dist/v2/gates/majority.d.ts.map +1 -0
  20. package/dist/v2/gates/nand.d.ts +5 -0
  21. package/dist/v2/gates/nand.d.ts.map +1 -0
  22. package/dist/v2/gates/nor.d.ts +5 -0
  23. package/dist/v2/gates/nor.d.ts.map +1 -0
  24. package/dist/v2/gates/or.d.ts +5 -0
  25. package/dist/v2/gates/or.d.ts.map +1 -0
  26. package/dist/v2/gates/xnor.d.ts +5 -0
  27. package/dist/v2/gates/xnor.d.ts.map +1 -0
  28. package/dist/v2/gates/xor.d.ts +5 -0
  29. package/dist/v2/gates/xor.d.ts.map +1 -0
  30. package/dist/v2/index.cjs.js +289 -0
  31. package/dist/v2/index.cjs.js.map +1 -0
  32. package/dist/v2/index.esm.js +285 -0
  33. package/dist/v2/index.esm.js.map +1 -0
  34. package/dist/v2/ts/gates/BaseGate.d.ts +6 -0
  35. package/dist/v2/ts/gates/BaseGate.d.ts.map +1 -0
  36. package/dist/v2/ts/gates/and.d.ts +5 -0
  37. package/dist/v2/ts/gates/and.d.ts.map +1 -0
  38. package/dist/v2/ts/gates/majority.d.ts +5 -0
  39. package/dist/v2/ts/gates/majority.d.ts.map +1 -0
  40. package/dist/v2/ts/gates/nand.d.ts +5 -0
  41. package/dist/v2/ts/gates/nand.d.ts.map +1 -0
  42. package/dist/v2/ts/gates/nor.d.ts +5 -0
  43. package/dist/v2/ts/gates/nor.d.ts.map +1 -0
  44. package/dist/v2/ts/gates/or.d.ts +5 -0
  45. package/dist/v2/ts/gates/or.d.ts.map +1 -0
  46. package/dist/v2/ts/gates/xnor.d.ts +5 -0
  47. package/dist/v2/ts/gates/xnor.d.ts.map +1 -0
  48. package/dist/v2/ts/gates/xor.d.ts +5 -0
  49. package/dist/v2/ts/gates/xor.d.ts.map +1 -0
  50. package/dist/v2/types/factory.d.ts +10 -0
  51. package/dist/v2/types/index.d.ts +85 -0
  52. package/dist/v2/utils/v2/errors.d.ts +7 -0
  53. package/dist/v2/utils/v2/errors.d.ts.map +1 -0
  54. package/dist/v2/v2/PromiseLogic.d.ts +29 -0
  55. package/dist/v2/v2/PromiseLogic.d.ts.map +1 -0
  56. package/dist/v2/v2/factory.d.ts +7 -0
  57. package/dist/v2/v2/factory.d.ts.map +1 -0
  58. package/dist/v2/v2/index.d.ts +6 -0
  59. package/dist/v2/v2/index.d.ts.map +1 -0
  60. package/package.json +14 -10
@@ -0,0 +1,5 @@
1
+ import { BaseGate } from './BaseGate';
2
+ export declare class XnorGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
4
+ }
5
+ //# sourceMappingURL=xnor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xnor.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/xnor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,QAAS,SAAQ,QAAQ;IAC9B,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAcvE"}
@@ -0,0 +1,5 @@
1
+ import { BaseGate } from './BaseGate';
2
+ export declare class XorGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
4
+ }
5
+ //# sourceMappingURL=xor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/xor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,qBAAa,OAAQ,SAAQ,QAAQ;IAC7B,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAYrE"}
@@ -0,0 +1,10 @@
1
+ interface CreatePromiseLogicOptions {
2
+ prefix?: string;
3
+ suffix?: string;
4
+ rename?: Record<string, string>;
5
+ }
6
+
7
+ declare function createPromiseLogic(options?: CreatePromiseLogicOptions): Record<string, Function>;
8
+
9
+ export { createPromiseLogic };
10
+ export type { CreatePromiseLogicOptions };
@@ -0,0 +1,85 @@
1
+ // v2版本类型定义 (TypeScript版本 - 现代化设计)
2
+
3
+ /**
4
+ * Promise逻辑错误类
5
+ * @deprecated 在v2版本中建议使用更具体的错误类型
6
+ */
7
+ declare class PromiseLogicError extends Error {
8
+ readonly type: 'XOR_ERROR' | 'NAND_ERROR' | 'NOR_ERROR' | 'XNOR_ERROR' | 'MAJORITY_ERROR' | 'ALL_SUCCESSFUL_ERROR' | 'ALL_FAILED_ERROR';
9
+ readonly results: PromiseSettledResult<unknown>[];
10
+
11
+ constructor(type: string, message: string, results: PromiseSettledResult<unknown>[]);
12
+ }
13
+
14
+ /**
15
+ * 触发器接口 - 用于状态管理
16
+ */
17
+ interface FlipFlop {
18
+ /** 获取当前状态 */
19
+ getState(): boolean;
20
+
21
+ /** 设置新状态 */
22
+ set(newState: boolean): Promise<boolean>;
23
+
24
+ /** 切换状态 */
25
+ toggle(): Promise<boolean>;
26
+
27
+ /** 等待状态变化 */
28
+ waitForChange(): Promise<boolean>;
29
+
30
+ /** 等待特定状态 */
31
+ waitFor(targetState: boolean): Promise<boolean>;
32
+ }
33
+
34
+ /**
35
+ * Promise逻辑门主类
36
+ */
37
+ declare class PromiseLogic {
38
+ // 基础逻辑门
39
+ static and<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
40
+ static or<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
41
+ static race<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
42
+ static allSettled<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<T>[]>;
43
+
44
+ // 扩展逻辑门
45
+ static xor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
46
+ static nand<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
47
+ static nor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
48
+ static xnor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
49
+ static majority<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
50
+
51
+ // 实用方法
52
+ static allFulfilled(iterable: Iterable<PromiseLike<unknown>>): Promise<unknown[]>;
53
+ static allRejected<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<unknown[]>;
54
+
55
+ // 状态管理
56
+ static createFlipFlop(initialState?: boolean): FlipFlop;
57
+
58
+ }
59
+
60
+ /**
61
+ * 工厂函数配置选项
62
+ */
63
+ interface CreatePromiseLogicOptions {
64
+ prefix?: string;
65
+ suffix?: string;
66
+ rename?: Record<string, string>;
67
+
68
+ // v2新增选项
69
+ enableStrictMode?: boolean;
70
+ timeout?: number;
71
+ }
72
+
73
+ /**
74
+ * 创建自定义Promise逻辑函数
75
+ */
76
+ declare function createPromiseLogic(options?: CreatePromiseLogicOptions): Record<string, Function>;
77
+
78
+ /**
79
+ * 创建逻辑错误
80
+ * @deprecated 在v2版本中建议使用更具体的错误构造器
81
+ */
82
+ declare function createLogicError(type: string, fulfilledCount: number, total: number, results: PromiseSettledResult<unknown>[]): PromiseLogicError;
83
+
84
+ export { PromiseLogic, PromiseLogicError, createLogicError, createPromiseLogic };
85
+ export type { CreatePromiseLogicOptions, FlipFlop };
@@ -0,0 +1,7 @@
1
+ export declare class PromiseLogicError extends Error {
2
+ type: string;
3
+ results: PromiseSettledResult<unknown>[];
4
+ constructor(type: string, message: string, results: PromiseSettledResult<unknown>[]);
5
+ }
6
+ export declare function createLogicError(type: string, fulfilledCount: number, total: number, results: PromiseSettledResult<string | number | Error | unknown>[]): PromiseLogicError;
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/utils/v2/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;IAEjC,IAAI,EAAE,MAAM;IAEZ,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBAFxC,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE;CAKlD;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,MAAM,GAAC,MAAM,GAAC,KAAK,GAAC,OAAO,CAAC,EAAE,GAAG,iBAAiB,CAYrK"}
@@ -0,0 +1,29 @@
1
+ export declare class PromiseLogicError extends Error {
2
+ type: string;
3
+ results: PromiseSettledResult<unknown>[];
4
+ constructor(type: string, message: string, results: PromiseSettledResult<unknown>[]);
5
+ }
6
+ export interface FlipFlop {
7
+ getState(): boolean;
8
+ set(newState: boolean): Promise<boolean>;
9
+ toggle(): Promise<boolean>;
10
+ waitForChange(): Promise<boolean>;
11
+ waitFor(targetState: boolean): Promise<boolean>;
12
+ }
13
+ export declare class PromiseLogic {
14
+ private static get gates();
15
+ static and<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
16
+ static or<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
17
+ static xor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
18
+ static nand<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
19
+ static nor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
20
+ static xnor<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
21
+ static majority<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
22
+ static allFulfilled(iterable: Iterable<PromiseLike<unknown>>): Promise<unknown[]>;
23
+ static allRejected<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<unknown[]>;
24
+ static not<T>(promise: PromiseLike<T>): Promise<unknown>;
25
+ static race<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
26
+ static allSettled<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<T>[]>;
27
+ static createFlipFlop(initialState?: boolean): FlipFlop;
28
+ }
29
+ //# sourceMappingURL=PromiseLogic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromiseLogic.d.ts","sourceRoot":"","sources":["../../../src/v2/PromiseLogic.ts"],"names":[],"mappings":"AASA,qBAAa,iBAAkB,SAAQ,KAAK;IAE7B,IAAI,EAAE,MAAM;IAEZ,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBAFxC,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE;CAKtD;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,IAAI,OAAO,CAAC;IACpB,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,KAAK,KAAK,GAUvB;IAGD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAInE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAInE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIpE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAKxE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOjF,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASrF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAIhG,MAAM,CAAC,cAAc,CAAC,YAAY,GAAE,OAAe,GAAG,QAAQ;CAoDjE"}
@@ -0,0 +1,7 @@
1
+ export interface CreatePromiseLogicOptions {
2
+ prefix?: string;
3
+ suffix?: string;
4
+ rename?: Record<string, string>;
5
+ }
6
+ export declare function createPromiseLogic(options?: CreatePromiseLogicOptions): Record<string, Function>;
7
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/v2/factory.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6BpG"}
@@ -0,0 +1,6 @@
1
+ export { PromiseLogic } from './PromiseLogic';
2
+ export { createPromiseLogic } from './factory';
3
+ export { PromiseLogicError } from './PromiseLogic';
4
+ export type { FlipFlop } from './PromiseLogic';
5
+ export type { CreatePromiseLogicOptions } from './factory';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "promise-logic",
3
- "version": "1.3.2",
3
+ "version": "2.3.3",
4
4
  "description": "Compose promises with logic gate semantics (AND, OR, XOR, NAND, NOR, XNOR, Majority). Forget APIs, remember logic.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
@@ -9,13 +9,18 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "import": "./dist/index.esm.js",
12
- "require": "./dist/index.cjs.js",
13
- "types": "./dist/types/index.d.ts"
12
+ "require": "./dist/v1/index.cjs.js",
13
+ "types": "./dist/types/v1/index.d.ts"
14
14
  },
15
15
  "./factory": {
16
16
  "import": "./dist/factory.esm.js",
17
17
  "require": "./dist/factory.cjs.js",
18
18
  "types": "./dist/types/factory.d.ts"
19
+ },
20
+ "./typescript": {
21
+ "import": "./dist/index.esm.js",
22
+ "require": "./dist/index.cjs.js",
23
+ "types": "./dist/types/v2/index.d.ts"
19
24
  }
20
25
  },
21
26
  "files": [
@@ -69,19 +74,18 @@
69
74
  "@babel/preset-env": "^7.28.6",
70
75
  "@rollup/plugin-commonjs": "^25.0.0",
71
76
  "@rollup/plugin-node-resolve": "^15.0.0",
77
+ "@rollup/plugin-typescript": "^12.3.0",
72
78
  "@types/jest": "^30.0.0",
73
79
  "babel-jest": "^30.2.0",
74
80
  "eslint": "^8.0.0",
75
81
  "jest": "^29.0.0",
76
82
  "jest-environment-jsdom": "^30.2.0",
77
83
  "prettier": "^3.0.0",
78
- "rollup": "^4.0.0",
84
+ "rollup": "^4.56.0",
79
85
  "rollup-plugin-copy": "^3.5.0",
80
- "rollup-plugin-dts": "^6.3.0"
81
- },
82
- "dependencies": {
83
- "@monaco-editor/react": "^4.7.0",
84
- "clsx": "^2.1.1",
85
- "tailwind-merge": "^3.4.0"
86
+ "rollup-plugin-dts": "^6.3.0",
87
+ "ts-jest": "^29.4.6",
88
+ "tslib": "^2.8.1",
89
+ "typescript": "^5.9.3"
86
90
  }
87
91
  }