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,289 @@
1
+ 'use strict';
2
+
3
+ class BaseGate {
4
+ filterResults(results, status) {
5
+ if (status === 'fulfilled') {
6
+ return results
7
+ .filter((result) => result.status === 'fulfilled')
8
+ .map(result => result.value);
9
+ }
10
+ else {
11
+ return results
12
+ .filter((result) => result.status === 'rejected')
13
+ .map(result => result.reason);
14
+ }
15
+ }
16
+ countFulfilled(results) {
17
+ return results.filter(result => result.status === 'fulfilled').length;
18
+ }
19
+ }
20
+
21
+ class OrGate extends BaseGate {
22
+ async execute(iterable) {
23
+ return Promise.any(iterable);
24
+ }
25
+ }
26
+
27
+ class AndGate extends BaseGate {
28
+ async execute(iterable) {
29
+ try {
30
+ return Promise.all(iterable);
31
+ }
32
+ catch (error) {
33
+ throw new PromiseLogicError('AND_ERROR', 'AND gate failed', [error]);
34
+ }
35
+ }
36
+ }
37
+
38
+ let PromiseLogicError$1 = class PromiseLogicError extends Error {
39
+ constructor(type, message, results) {
40
+ super(message);
41
+ this.type = type;
42
+ this.results = results;
43
+ this.name = 'PromiseLogicError';
44
+ }
45
+ };
46
+ // Error factory function
47
+ function createLogicError(type, fulfilledCount, total, results) {
48
+ const messages = {
49
+ XOR_ERROR: `XOR condition failed: expected exactly 1 promise to fulfill, but ${fulfilledCount} fulfilled.`,
50
+ NAND_ERROR: `NAND condition failed: all ${total} promises fulfilled (expected at least one rejection).`,
51
+ NOR_ERROR: `NOR condition failed: ${fulfilledCount} promises fulfilled (expected all rejected).`,
52
+ XNOR_ERROR: `XNOR condition failed: ${fulfilledCount}/${total} promises fulfilled (expected all or none).`,
53
+ MAJORITY_ERROR: `Majority condition failed: ${fulfilledCount}/${total} fulfilled (need majority).`,
54
+ ALL_SUCCESSFUL_ERROR: `All successful condition failed: ${fulfilledCount}/${total} promises fulfilled (expected all to succeed).`,
55
+ ALL_FAILED_ERROR: `All failed condition failed: ${total - fulfilledCount}/${total} promises rejected (expected all to fail).`
56
+ };
57
+ return new PromiseLogicError$1(type, messages[type] || 'Logic condition failed', results);
58
+ }
59
+
60
+ class MajorityGate extends BaseGate {
61
+ async execute(iterable) {
62
+ const results = await Promise.allSettled(iterable);
63
+ const fulfilled = this.filterResults(results, 'fulfilled');
64
+ const fulfilledCount = fulfilled.length;
65
+ const total = results.length;
66
+ // Majority logic: success count > failure count
67
+ if (fulfilledCount > total - fulfilledCount) {
68
+ return fulfilled;
69
+ }
70
+ else {
71
+ throw createLogicError('MAJORITY_ERROR', fulfilledCount, total, results);
72
+ }
73
+ }
74
+ }
75
+
76
+ class NandGate extends BaseGate {
77
+ async execute(iterable) {
78
+ const results = await Promise.allSettled(iterable);
79
+ const fulfilled = this.filterResults(results, 'fulfilled');
80
+ const fulfilledCount = fulfilled.length;
81
+ const total = results.length;
82
+ if (fulfilledCount === total) {
83
+ // 全部成功,抛出NAND_ERROR
84
+ throw createLogicError('NAND_ERROR', fulfilledCount, total, results);
85
+ }
86
+ else {
87
+ // 不是所有都成功,返回成功的值数组
88
+ return fulfilled;
89
+ }
90
+ }
91
+ }
92
+
93
+ class NorGate extends BaseGate {
94
+ async execute(iterable) {
95
+ const results = await Promise.allSettled(iterable);
96
+ const fulfilled = this.filterResults(results, 'fulfilled');
97
+ const fulfilledCount = fulfilled.length;
98
+ const total = results.length;
99
+ if (fulfilledCount === 0) {
100
+ // 全部失败,返回空数组表示成功
101
+ return [];
102
+ }
103
+ else {
104
+ // 任意成功,抛出NOR_ERROR
105
+ throw createLogicError('NOR_ERROR', fulfilledCount, total, results);
106
+ }
107
+ }
108
+ }
109
+
110
+ class XnorGate extends BaseGate {
111
+ async execute(iterable) {
112
+ const results = await Promise.allSettled(iterable);
113
+ const fulfilled = this.filterResults(results, 'fulfilled');
114
+ const fulfilledCount = fulfilled.length;
115
+ const total = results.length;
116
+ if (fulfilledCount === 0 || fulfilledCount === total) {
117
+ // 全部成功或全部失败,返回成功的值数组
118
+ return fulfilled;
119
+ }
120
+ else {
121
+ // 部分成功部分失败,抛出XNOR_ERROR
122
+ throw createLogicError('XNOR_ERROR', fulfilledCount, total, results);
123
+ }
124
+ }
125
+ }
126
+
127
+ class XorGate extends BaseGate {
128
+ async execute(iterable) {
129
+ const results = await Promise.allSettled(iterable);
130
+ const fulfilled = results.filter(result => result.status === 'fulfilled');
131
+ const fulfilledCount = fulfilled.length;
132
+ const total = results.length;
133
+ if (fulfilledCount === 1) {
134
+ return fulfilled[0].value;
135
+ }
136
+ else {
137
+ throw createLogicError('XOR_ERROR', fulfilledCount, total, results);
138
+ }
139
+ }
140
+ }
141
+
142
+ class PromiseLogicError extends Error {
143
+ constructor(type, message, results) {
144
+ super(message);
145
+ this.type = type;
146
+ this.results = results;
147
+ this.name = 'PromiseLogicError';
148
+ }
149
+ }
150
+ class PromiseLogic {
151
+ static get gates() {
152
+ return {
153
+ and: new AndGate(),
154
+ or: new OrGate(),
155
+ xor: new XorGate(),
156
+ nand: new NandGate(),
157
+ nor: new NorGate(),
158
+ xnor: new XnorGate(),
159
+ majority: new MajorityGate()
160
+ };
161
+ }
162
+ // Core Logic Gates
163
+ static and(iterable) {
164
+ return this.gates.and.execute(iterable);
165
+ }
166
+ static or(iterable) {
167
+ return this.gates.or.execute(iterable);
168
+ }
169
+ static xor(iterable) {
170
+ return this.gates.xor.execute(iterable);
171
+ }
172
+ static nand(iterable) {
173
+ return this.gates.nand.execute(iterable);
174
+ }
175
+ static nor(iterable) {
176
+ return this.gates.nor.execute(iterable);
177
+ }
178
+ static xnor(iterable) {
179
+ return this.gates.xnor.execute(iterable);
180
+ }
181
+ static majority(iterable) {
182
+ return this.gates.majority.execute(iterable);
183
+ }
184
+ // Extended Operations
185
+ static allFulfilled(iterable) {
186
+ return Promise.allSettled(iterable).then((results) => {
187
+ const fulfilled = results.filter(result => result.status === 'fulfilled');
188
+ return fulfilled.map(result => result.value);
189
+ });
190
+ }
191
+ static allRejected(iterable) {
192
+ return Promise.allSettled(iterable).then((results) => {
193
+ return results
194
+ .filter((result) => result.status === 'rejected')
195
+ .map(result => result.reason);
196
+ });
197
+ }
198
+ // NOT logic - Inverts promise resolution
199
+ static not(promise) {
200
+ return Promise.resolve(promise).then((value) => Promise.reject(value), (reason) => Promise.resolve(reason));
201
+ }
202
+ // Utility Methods
203
+ static race(iterable) {
204
+ return Promise.race(iterable);
205
+ }
206
+ static allSettled(iterable) {
207
+ return Promise.allSettled(iterable);
208
+ }
209
+ static createFlipFlop(initialState = false) {
210
+ let state = initialState;
211
+ let resolveCurrent = null;
212
+ let currentPromise = Promise.resolve(state);
213
+ const waitForChange = () => {
214
+ if (!resolveCurrent) {
215
+ currentPromise = new Promise((resolve) => {
216
+ resolveCurrent = resolve;
217
+ });
218
+ }
219
+ return currentPromise;
220
+ };
221
+ return {
222
+ getState() {
223
+ return state;
224
+ },
225
+ async set(newState) {
226
+ state = newState;
227
+ if (resolveCurrent) {
228
+ resolveCurrent(state);
229
+ resolveCurrent = null;
230
+ }
231
+ currentPromise = Promise.resolve(state);
232
+ return state;
233
+ },
234
+ async toggle() {
235
+ return this.set(!state);
236
+ },
237
+ waitForChange,
238
+ waitFor(targetState) {
239
+ if (state === targetState) {
240
+ return Promise.resolve(state);
241
+ }
242
+ return new Promise((resolve) => {
243
+ const checkState = () => {
244
+ if (state === targetState) {
245
+ resolve(state);
246
+ }
247
+ else {
248
+ waitForChange().then(checkState);
249
+ }
250
+ };
251
+ checkState();
252
+ });
253
+ }
254
+ };
255
+ }
256
+ }
257
+
258
+ function createPromiseLogic(options = {}) {
259
+ const { prefix = '', suffix = '', rename = {} } = options;
260
+ // 基础方法映射
261
+ const methods = {
262
+ and: PromiseLogic.and,
263
+ or: PromiseLogic.or,
264
+ not: PromiseLogic.not,
265
+ race: PromiseLogic.race,
266
+ allSettled: PromiseLogic.allSettled,
267
+ xor: PromiseLogic.xor,
268
+ nand: PromiseLogic.nand,
269
+ nor: PromiseLogic.nor,
270
+ xnor: PromiseLogic.xnor,
271
+ majority: PromiseLogic.majority,
272
+ allFulfilled: PromiseLogic.allFulfilled,
273
+ allRejected: PromiseLogic.allRejected
274
+ };
275
+ // 应用命名转换
276
+ const result = {};
277
+ Object.entries(methods).forEach(([key, fn]) => {
278
+ // 优先使用rename映射,然后应用prefix和suffix
279
+ const baseName = rename[key] || key;
280
+ const finalName = `${prefix}${baseName}${suffix}`;
281
+ result[finalName] = fn;
282
+ });
283
+ return result;
284
+ }
285
+
286
+ exports.PromiseLogic = PromiseLogic;
287
+ exports.PromiseLogicError = PromiseLogicError;
288
+ exports.createPromiseLogic = createPromiseLogic;
289
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/gates/BaseGate.ts","../../../src/gates/or.ts","../../../src/gates/and.ts","../../../src/utils/v2/errors.ts","../../../src/gates/majority.ts","../../../src/gates/nand.ts","../../../src/gates/nor.ts","../../../src/gates/xnor.ts","../../../src/gates/xor.ts","../../../src/v2/PromiseLogic.ts","../../../src/v2/factory.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PromiseLogicError"],"mappings":"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"}
@@ -0,0 +1,285 @@
1
+ class BaseGate {
2
+ filterResults(results, status) {
3
+ if (status === 'fulfilled') {
4
+ return results
5
+ .filter((result) => result.status === 'fulfilled')
6
+ .map(result => result.value);
7
+ }
8
+ else {
9
+ return results
10
+ .filter((result) => result.status === 'rejected')
11
+ .map(result => result.reason);
12
+ }
13
+ }
14
+ countFulfilled(results) {
15
+ return results.filter(result => result.status === 'fulfilled').length;
16
+ }
17
+ }
18
+
19
+ class OrGate extends BaseGate {
20
+ async execute(iterable) {
21
+ return Promise.any(iterable);
22
+ }
23
+ }
24
+
25
+ class AndGate extends BaseGate {
26
+ async execute(iterable) {
27
+ try {
28
+ return Promise.all(iterable);
29
+ }
30
+ catch (error) {
31
+ throw new PromiseLogicError('AND_ERROR', 'AND gate failed', [error]);
32
+ }
33
+ }
34
+ }
35
+
36
+ let PromiseLogicError$1 = class PromiseLogicError extends Error {
37
+ constructor(type, message, results) {
38
+ super(message);
39
+ this.type = type;
40
+ this.results = results;
41
+ this.name = 'PromiseLogicError';
42
+ }
43
+ };
44
+ // Error factory function
45
+ function createLogicError(type, fulfilledCount, total, results) {
46
+ const messages = {
47
+ XOR_ERROR: `XOR condition failed: expected exactly 1 promise to fulfill, but ${fulfilledCount} fulfilled.`,
48
+ NAND_ERROR: `NAND condition failed: all ${total} promises fulfilled (expected at least one rejection).`,
49
+ NOR_ERROR: `NOR condition failed: ${fulfilledCount} promises fulfilled (expected all rejected).`,
50
+ XNOR_ERROR: `XNOR condition failed: ${fulfilledCount}/${total} promises fulfilled (expected all or none).`,
51
+ MAJORITY_ERROR: `Majority condition failed: ${fulfilledCount}/${total} fulfilled (need majority).`,
52
+ ALL_SUCCESSFUL_ERROR: `All successful condition failed: ${fulfilledCount}/${total} promises fulfilled (expected all to succeed).`,
53
+ ALL_FAILED_ERROR: `All failed condition failed: ${total - fulfilledCount}/${total} promises rejected (expected all to fail).`
54
+ };
55
+ return new PromiseLogicError$1(type, messages[type] || 'Logic condition failed', results);
56
+ }
57
+
58
+ class MajorityGate extends BaseGate {
59
+ async execute(iterable) {
60
+ const results = await Promise.allSettled(iterable);
61
+ const fulfilled = this.filterResults(results, 'fulfilled');
62
+ const fulfilledCount = fulfilled.length;
63
+ const total = results.length;
64
+ // Majority logic: success count > failure count
65
+ if (fulfilledCount > total - fulfilledCount) {
66
+ return fulfilled;
67
+ }
68
+ else {
69
+ throw createLogicError('MAJORITY_ERROR', fulfilledCount, total, results);
70
+ }
71
+ }
72
+ }
73
+
74
+ class NandGate extends BaseGate {
75
+ async execute(iterable) {
76
+ const results = await Promise.allSettled(iterable);
77
+ const fulfilled = this.filterResults(results, 'fulfilled');
78
+ const fulfilledCount = fulfilled.length;
79
+ const total = results.length;
80
+ if (fulfilledCount === total) {
81
+ // 全部成功,抛出NAND_ERROR
82
+ throw createLogicError('NAND_ERROR', fulfilledCount, total, results);
83
+ }
84
+ else {
85
+ // 不是所有都成功,返回成功的值数组
86
+ return fulfilled;
87
+ }
88
+ }
89
+ }
90
+
91
+ class NorGate extends BaseGate {
92
+ async execute(iterable) {
93
+ const results = await Promise.allSettled(iterable);
94
+ const fulfilled = this.filterResults(results, 'fulfilled');
95
+ const fulfilledCount = fulfilled.length;
96
+ const total = results.length;
97
+ if (fulfilledCount === 0) {
98
+ // 全部失败,返回空数组表示成功
99
+ return [];
100
+ }
101
+ else {
102
+ // 任意成功,抛出NOR_ERROR
103
+ throw createLogicError('NOR_ERROR', fulfilledCount, total, results);
104
+ }
105
+ }
106
+ }
107
+
108
+ class XnorGate extends BaseGate {
109
+ async execute(iterable) {
110
+ const results = await Promise.allSettled(iterable);
111
+ const fulfilled = this.filterResults(results, 'fulfilled');
112
+ const fulfilledCount = fulfilled.length;
113
+ const total = results.length;
114
+ if (fulfilledCount === 0 || fulfilledCount === total) {
115
+ // 全部成功或全部失败,返回成功的值数组
116
+ return fulfilled;
117
+ }
118
+ else {
119
+ // 部分成功部分失败,抛出XNOR_ERROR
120
+ throw createLogicError('XNOR_ERROR', fulfilledCount, total, results);
121
+ }
122
+ }
123
+ }
124
+
125
+ class XorGate extends BaseGate {
126
+ async execute(iterable) {
127
+ const results = await Promise.allSettled(iterable);
128
+ const fulfilled = results.filter(result => result.status === 'fulfilled');
129
+ const fulfilledCount = fulfilled.length;
130
+ const total = results.length;
131
+ if (fulfilledCount === 1) {
132
+ return fulfilled[0].value;
133
+ }
134
+ else {
135
+ throw createLogicError('XOR_ERROR', fulfilledCount, total, results);
136
+ }
137
+ }
138
+ }
139
+
140
+ class PromiseLogicError extends Error {
141
+ constructor(type, message, results) {
142
+ super(message);
143
+ this.type = type;
144
+ this.results = results;
145
+ this.name = 'PromiseLogicError';
146
+ }
147
+ }
148
+ class PromiseLogic {
149
+ static get gates() {
150
+ return {
151
+ and: new AndGate(),
152
+ or: new OrGate(),
153
+ xor: new XorGate(),
154
+ nand: new NandGate(),
155
+ nor: new NorGate(),
156
+ xnor: new XnorGate(),
157
+ majority: new MajorityGate()
158
+ };
159
+ }
160
+ // Core Logic Gates
161
+ static and(iterable) {
162
+ return this.gates.and.execute(iterable);
163
+ }
164
+ static or(iterable) {
165
+ return this.gates.or.execute(iterable);
166
+ }
167
+ static xor(iterable) {
168
+ return this.gates.xor.execute(iterable);
169
+ }
170
+ static nand(iterable) {
171
+ return this.gates.nand.execute(iterable);
172
+ }
173
+ static nor(iterable) {
174
+ return this.gates.nor.execute(iterable);
175
+ }
176
+ static xnor(iterable) {
177
+ return this.gates.xnor.execute(iterable);
178
+ }
179
+ static majority(iterable) {
180
+ return this.gates.majority.execute(iterable);
181
+ }
182
+ // Extended Operations
183
+ static allFulfilled(iterable) {
184
+ return Promise.allSettled(iterable).then((results) => {
185
+ const fulfilled = results.filter(result => result.status === 'fulfilled');
186
+ return fulfilled.map(result => result.value);
187
+ });
188
+ }
189
+ static allRejected(iterable) {
190
+ return Promise.allSettled(iterable).then((results) => {
191
+ return results
192
+ .filter((result) => result.status === 'rejected')
193
+ .map(result => result.reason);
194
+ });
195
+ }
196
+ // NOT logic - Inverts promise resolution
197
+ static not(promise) {
198
+ return Promise.resolve(promise).then((value) => Promise.reject(value), (reason) => Promise.resolve(reason));
199
+ }
200
+ // Utility Methods
201
+ static race(iterable) {
202
+ return Promise.race(iterable);
203
+ }
204
+ static allSettled(iterable) {
205
+ return Promise.allSettled(iterable);
206
+ }
207
+ static createFlipFlop(initialState = false) {
208
+ let state = initialState;
209
+ let resolveCurrent = null;
210
+ let currentPromise = Promise.resolve(state);
211
+ const waitForChange = () => {
212
+ if (!resolveCurrent) {
213
+ currentPromise = new Promise((resolve) => {
214
+ resolveCurrent = resolve;
215
+ });
216
+ }
217
+ return currentPromise;
218
+ };
219
+ return {
220
+ getState() {
221
+ return state;
222
+ },
223
+ async set(newState) {
224
+ state = newState;
225
+ if (resolveCurrent) {
226
+ resolveCurrent(state);
227
+ resolveCurrent = null;
228
+ }
229
+ currentPromise = Promise.resolve(state);
230
+ return state;
231
+ },
232
+ async toggle() {
233
+ return this.set(!state);
234
+ },
235
+ waitForChange,
236
+ waitFor(targetState) {
237
+ if (state === targetState) {
238
+ return Promise.resolve(state);
239
+ }
240
+ return new Promise((resolve) => {
241
+ const checkState = () => {
242
+ if (state === targetState) {
243
+ resolve(state);
244
+ }
245
+ else {
246
+ waitForChange().then(checkState);
247
+ }
248
+ };
249
+ checkState();
250
+ });
251
+ }
252
+ };
253
+ }
254
+ }
255
+
256
+ function createPromiseLogic(options = {}) {
257
+ const { prefix = '', suffix = '', rename = {} } = options;
258
+ // 基础方法映射
259
+ const methods = {
260
+ and: PromiseLogic.and,
261
+ or: PromiseLogic.or,
262
+ not: PromiseLogic.not,
263
+ race: PromiseLogic.race,
264
+ allSettled: PromiseLogic.allSettled,
265
+ xor: PromiseLogic.xor,
266
+ nand: PromiseLogic.nand,
267
+ nor: PromiseLogic.nor,
268
+ xnor: PromiseLogic.xnor,
269
+ majority: PromiseLogic.majority,
270
+ allFulfilled: PromiseLogic.allFulfilled,
271
+ allRejected: PromiseLogic.allRejected
272
+ };
273
+ // 应用命名转换
274
+ const result = {};
275
+ Object.entries(methods).forEach(([key, fn]) => {
276
+ // 优先使用rename映射,然后应用prefix和suffix
277
+ const baseName = rename[key] || key;
278
+ const finalName = `${prefix}${baseName}${suffix}`;
279
+ result[finalName] = fn;
280
+ });
281
+ return result;
282
+ }
283
+
284
+ export { PromiseLogic, PromiseLogicError, createPromiseLogic };
285
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/gates/BaseGate.ts","../../../src/gates/or.ts","../../../src/gates/and.ts","../../../src/utils/v2/errors.ts","../../../src/gates/majority.ts","../../../src/gates/nand.ts","../../../src/gates/nor.ts","../../../src/gates/xnor.ts","../../../src/gates/xor.ts","../../../src/v2/PromiseLogic.ts","../../../src/v2/factory.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PromiseLogicError"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare abstract class BaseGate {
2
+ abstract execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T | T[]>;
3
+ protected filterResults<T>(results: PromiseSettledResult<T>[], status: 'fulfilled' | 'rejected'): (T)[];
4
+ protected countFulfilled<T>(results: PromiseSettledResult<T>[]): number;
5
+ }
6
+ //# sourceMappingURL=BaseGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseGate.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/BaseGate.ts"],"names":[],"mappings":"AAAA,8BAAsB,QAAQ;IAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAE7E,SAAS,CAAC,aAAa,CAAC,CAAC,EACvB,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAClC,MAAM,EAAE,WAAW,GAAG,UAAU,GAC/B,CAAC,CAAC,CAAC,EAAE;IAYR,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM;CAGxE"}
@@ -0,0 +1,5 @@
1
+ import { BaseGate } from './BaseGate';
2
+ export declare class AndGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
4
+ }
5
+ //# sourceMappingURL=and.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/and.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,OAAQ,SAAQ,QAAQ;IAC7B,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAUvE"}
@@ -0,0 +1,5 @@
1
+ import { BaseGate } from './BaseGate';
2
+ export declare class MajorityGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
4
+ }
5
+ //# sourceMappingURL=majority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"majority.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/majority.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,YAAa,SAAQ,QAAQ;IAClC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAavE"}
@@ -0,0 +1,5 @@
1
+ import { BaseGate } from './BaseGate';
2
+ export declare class NandGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
4
+ }
5
+ //# sourceMappingURL=nand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nand.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/nand.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 NorGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T[]>;
4
+ }
5
+ //# sourceMappingURL=nor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nor.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/nor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,OAAQ,SAAQ,QAAQ;IAC7B,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 OrGate extends BaseGate {
3
+ execute<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
4
+ }
5
+ //# sourceMappingURL=or.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../../../src/ts/gates/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,MAAO,SAAQ,QAAQ;IAC5B,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGrE"}