@overkill-dev/doubles 0.0.1 → 0.0.2
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/LICENSE +21 -0
- package/assert/assertion-extension.d.ts +65 -0
- package/assert/assertion-extension.d.ts.map +1 -0
- package/assert/assertion-extension.js +250 -0
- package/assert/assertion-extension.js.map +1 -0
- package/assertion-protocol/assertion-evaluation.d.ts +13 -0
- package/assertion-protocol/assertion-evaluation.d.ts.map +1 -0
- package/assertion-protocol/assertion-node-shape.d.ts +71 -0
- package/assertion-protocol/assertion-node-shape.d.ts.map +1 -0
- package/assertion-protocol/assertion-node.d.ts +97 -0
- package/assertion-protocol/assertion-node.d.ts.map +1 -0
- package/assertion-protocol/assertion-reference.d.ts +73 -0
- package/assertion-protocol/assertion-reference.d.ts.map +1 -0
- package/assertion-protocol/assertion-reference.js +49 -0
- package/assertion-protocol/assertion-reference.js.map +1 -0
- package/assertion-protocol/assertions/boolean.d.ts +11 -0
- package/assertion-protocol/assertions/boolean.d.ts.map +1 -0
- package/assertion-protocol/assertions/collection.d.ts +22 -0
- package/assertion-protocol/assertions/collection.d.ts.map +1 -0
- package/assertion-protocol/assertions/equality.d.ts +17 -0
- package/assertion-protocol/assertions/equality.d.ts.map +1 -0
- package/assertion-protocol/assertions/fail.d.ts +13 -0
- package/assertion-protocol/assertions/fail.d.ts.map +1 -0
- package/assertion-protocol/assertions/numeric.d.ts +29 -0
- package/assertion-protocol/assertions/numeric.d.ts.map +1 -0
- package/assertion-protocol/assertions/partial.d.ts +14 -0
- package/assertion-protocol/assertions/partial.d.ts.map +1 -0
- package/assertion-protocol/assertions/presence.d.ts +17 -0
- package/assertion-protocol/assertions/presence.d.ts.map +1 -0
- package/assertion-protocol/assertions/string.d.ts +28 -0
- package/assertion-protocol/assertions/string.d.ts.map +1 -0
- package/assertion-protocol/assertions/type-shape.d.ts +42 -0
- package/assertion-protocol/assertions/type-shape.d.ts.map +1 -0
- package/assertion-protocol/thrown-error-record.d.ts +8 -0
- package/assertion-protocol/thrown-error-record.d.ts.map +1 -0
- package/assertion-protocol/thrown-error-record.js +17 -0
- package/assertion-protocol/thrown-error-record.js.map +1 -0
- package/assertion-protocol/thrown-matcher.d.ts +51 -0
- package/assertion-protocol/thrown-matcher.d.ts.map +1 -0
- package/assertion-protocol/thrown-matcher.js +186 -0
- package/assertion-protocol/thrown-matcher.js.map +1 -0
- package/compare/comparison-result.d.ts +25 -0
- package/compare/comparison-result.d.ts.map +1 -0
- package/compare/comparison-state.d.ts +7 -0
- package/compare/comparison-state.d.ts.map +1 -0
- package/compare/comparison-state.js +20 -0
- package/compare/comparison-state.js.map +1 -0
- package/compare/comparison.d.ts +12 -0
- package/compare/comparison.d.ts.map +1 -0
- package/compare/raw-comparison.d.ts +24 -0
- package/compare/raw-comparison.d.ts.map +1 -0
- package/compare/raw-comparison.js +285 -0
- package/compare/raw-comparison.js.map +1 -0
- package/compare/serialized-value-shape.d.ts +143 -0
- package/compare/serialized-value-shape.d.ts.map +1 -0
- package/compare/serialized-value.d.ts +11 -0
- package/compare/serialized-value.d.ts.map +1 -0
- package/compare/value-classification.d.ts +26 -0
- package/compare/value-classification.d.ts.map +1 -0
- package/compare/value-classification.js +110 -0
- package/compare/value-classification.js.map +1 -0
- package/diff/diff-shape.d.ts +117 -0
- package/diff/diff-shape.d.ts.map +1 -0
- package/doubles/disposal-symbol.d.ts +3 -0
- package/doubles/disposal-symbol.d.ts.map +1 -0
- package/doubles/disposal-symbol.js +10 -0
- package/doubles/disposal-symbol.js.map +1 -0
- package/doubles/double-behavior.d.ts +106 -0
- package/doubles/double-behavior.d.ts.map +1 -0
- package/doubles/double-behavior.js +257 -0
- package/doubles/double-behavior.js.map +1 -0
- package/doubles/double-chronology.d.ts +21 -0
- package/doubles/double-chronology.d.ts.map +1 -0
- package/doubles/double-chronology.js +78 -0
- package/doubles/double-chronology.js.map +1 -0
- package/doubles/double-history-api.d.ts +33 -0
- package/doubles/double-history-api.d.ts.map +1 -0
- package/doubles/double-history-api.js +125 -0
- package/doubles/double-history-api.js.map +1 -0
- package/doubles/double-history-record.d.ts +82 -0
- package/doubles/double-history-record.d.ts.map +1 -0
- package/doubles/double-history-record.js +65 -0
- package/doubles/double-history-record.js.map +1 -0
- package/doubles/double-history-store.d.ts +21 -0
- package/doubles/double-history-store.d.ts.map +1 -0
- package/doubles/double-history-store.js +118 -0
- package/doubles/double-history-store.js.map +1 -0
- package/doubles/double-history.d.ts +141 -0
- package/doubles/double-history.d.ts.map +1 -0
- package/doubles/double-history.js +32 -0
- package/doubles/double-history.js.map +1 -0
- package/doubles/double-iterator-event-types.d.ts +25 -0
- package/doubles/double-iterator-event-types.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.d.ts +12 -0
- package/doubles/double-iterator-tracking.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.js +161 -0
- package/doubles/double-iterator-tracking.js.map +1 -0
- package/doubles/double-rule-arguments.d.ts +18 -0
- package/doubles/double-rule-arguments.d.ts.map +1 -0
- package/doubles/double-rule-callback.d.ts +40 -0
- package/doubles/double-rule-callback.d.ts.map +1 -0
- package/doubles/double-rule-callback.js +84 -0
- package/doubles/double-rule-callback.js.map +1 -0
- package/doubles/double-rule-generator.d.ts +108 -0
- package/doubles/double-rule-generator.d.ts.map +1 -0
- package/doubles/double-rule-generator.js +37 -0
- package/doubles/double-rule-generator.js.map +1 -0
- package/doubles/double-rule-types.d.ts +162 -0
- package/doubles/double-rule-types.d.ts.map +1 -0
- package/doubles/double-rule.d.ts +3 -0
- package/doubles/double-rule.d.ts.map +1 -0
- package/doubles/double-rule.js +113 -0
- package/doubles/double-rule.js.map +1 -0
- package/doubles/double-runtime.d.ts +9 -0
- package/doubles/double-runtime.d.ts.map +1 -0
- package/doubles/double-runtime.js +173 -0
- package/doubles/double-runtime.js.map +1 -0
- package/doubles/double-signature.d.ts +5 -0
- package/doubles/double-signature.d.ts.map +1 -0
- package/doubles/double-usage-argument-assertion.d.ts +27 -0
- package/doubles/double-usage-argument-assertion.d.ts.map +1 -0
- package/doubles/double-usage-argument-assertion.js +202 -0
- package/doubles/double-usage-argument-assertion.js.map +1 -0
- package/doubles/double-usage-contract.d.ts +29 -0
- package/doubles/double-usage-contract.d.ts.map +1 -0
- package/doubles/double-usage-contract.js +11 -0
- package/doubles/double-usage-contract.js.map +1 -0
- package/doubles/double-usage-count-assertion.d.ts +6 -0
- package/doubles/double-usage-count-assertion.d.ts.map +1 -0
- package/doubles/double-usage-count-assertion.js +73 -0
- package/doubles/double-usage-count-assertion.js.map +1 -0
- package/doubles/double-usage-disposal-assertion.d.ts +7 -0
- package/doubles/double-usage-disposal-assertion.d.ts.map +1 -0
- package/doubles/double-usage-disposal-assertion.js +175 -0
- package/doubles/double-usage-disposal-assertion.js.map +1 -0
- package/doubles/double-usage-inspection.d.ts +22 -0
- package/doubles/double-usage-inspection.d.ts.map +1 -0
- package/doubles/double-usage-inspection.js +59 -0
- package/doubles/double-usage-inspection.js.map +1 -0
- package/doubles/double-usage-iterator-assertion.d.ts +7 -0
- package/doubles/double-usage-iterator-assertion.d.ts.map +1 -0
- package/doubles/double-usage-iterator-assertion.js +124 -0
- package/doubles/double-usage-iterator-assertion.js.map +1 -0
- package/doubles/double-usage-order-assertion.d.ts +3 -0
- package/doubles/double-usage-order-assertion.d.ts.map +1 -0
- package/doubles/double-usage-order-assertion.js +91 -0
- package/doubles/double-usage-order-assertion.js.map +1 -0
- package/doubles/double-usage.d.ts +81 -0
- package/doubles/double-usage.d.ts.map +1 -0
- package/doubles/double-usage.js +228 -0
- package/doubles/double-usage.js.map +1 -0
- package/doubles/protocol-disposable-double.d.ts +16 -0
- package/doubles/protocol-disposable-double.d.ts.map +1 -0
- package/doubles/protocol-disposable-double.js +37 -0
- package/doubles/protocol-disposable-double.js.map +1 -0
- package/doubles/protocol-double-metadata.d.ts +15 -0
- package/doubles/protocol-double-metadata.d.ts.map +1 -0
- package/doubles/protocol-double-metadata.js +30 -0
- package/doubles/protocol-double-metadata.js.map +1 -0
- package/doubles/protocol-double.d.ts +50 -0
- package/doubles/protocol-double.d.ts.map +1 -0
- package/doubles/protocol-double.js +76 -0
- package/doubles/protocol-double.js.map +1 -0
- package/doubles/protocol-iterator-double.d.ts +93 -0
- package/doubles/protocol-iterator-double.d.ts.map +1 -0
- package/doubles/protocol-iterator-double.js +512 -0
- package/doubles/protocol-iterator-double.js.map +1 -0
- package/doubles/test-double.d.ts +62 -0
- package/doubles/test-double.d.ts.map +1 -0
- package/doubles/test-double.js +192 -0
- package/doubles/test-double.js.map +1 -0
- package/package.json +36 -6
- package/packages/doubles/doubles.entry-point.d.ts +13 -0
- package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
- package/packages/doubles/doubles.entry-point.js +5 -0
- package/packages/doubles/doubles.entry-point.js.map +1 -0
- package/readme.md +423 -5
- package/sbom.cdx.json +30 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { UnknownFunction } from './double-behavior.ts';
|
|
2
|
+
import { type TestDouble, type TestDoubleConfiguration } from './test-double.ts';
|
|
3
|
+
type SyncNext<YieldValue, ReturnValue> = UnknownFunction<IteratorResult<YieldValue, ReturnValue>>;
|
|
4
|
+
type SyncReturn<YieldValue, ReturnValue> = UnknownFunction<IteratorResult<YieldValue, ReturnValue>>;
|
|
5
|
+
type SyncThrow<YieldValue, ReturnValue> = UnknownFunction<IteratorResult<YieldValue, ReturnValue>>;
|
|
6
|
+
type AsyncNext<YieldValue, ReturnValue> = UnknownFunction<Promise<IteratorResult<YieldValue, ReturnValue>>>;
|
|
7
|
+
type AsyncReturn<YieldValue, ReturnValue> = UnknownFunction<Promise<IteratorResult<YieldValue, ReturnValue>>>;
|
|
8
|
+
type AsyncThrow<YieldValue, ReturnValue> = UnknownFunction<Promise<IteratorResult<YieldValue, ReturnValue>>>;
|
|
9
|
+
export type TestIterator<YieldValue = unknown, ReturnValue = unknown, NextValue = unknown> = IteratorObject<YieldValue, ReturnValue, NextValue> & {
|
|
10
|
+
readonly next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
11
|
+
readonly return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
12
|
+
readonly throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
13
|
+
};
|
|
14
|
+
export type TestAsyncIterator<YieldValue = unknown, ReturnValue = unknown, NextValue = unknown> = AsyncIterable<YieldValue> & AsyncIterator<YieldValue, ReturnValue, NextValue> & {
|
|
15
|
+
readonly next: TestDouble<AsyncNext<YieldValue, ReturnValue>>;
|
|
16
|
+
readonly return: TestDouble<AsyncReturn<YieldValue, ReturnValue>>;
|
|
17
|
+
readonly throw: TestDouble<AsyncThrow<YieldValue, ReturnValue>>;
|
|
18
|
+
};
|
|
19
|
+
export type TestIterable<YieldValue = unknown, ReturnValue = unknown, NextValue = unknown> = Iterable<YieldValue> & {
|
|
20
|
+
readonly [Symbol.iterator]: TestDouble<() => TestIterator<YieldValue, ReturnValue, NextValue>>;
|
|
21
|
+
};
|
|
22
|
+
export type TestAsyncIterable<YieldValue = unknown, ReturnValue = unknown, NextValue = unknown> = AsyncIterable<YieldValue> & {
|
|
23
|
+
readonly [Symbol.asyncIterator]: TestDouble<() => TestAsyncIterator<YieldValue, ReturnValue, NextValue>>;
|
|
24
|
+
};
|
|
25
|
+
export type SyncIteratorConfiguration<YieldValue, ReturnValue> = {
|
|
26
|
+
readonly next: TestDoubleConfiguration<SyncNext<YieldValue, ReturnValue>>;
|
|
27
|
+
readonly return: TestDoubleConfiguration<SyncReturn<YieldValue, ReturnValue>>;
|
|
28
|
+
readonly throw: TestDoubleConfiguration<SyncThrow<YieldValue, ReturnValue>>;
|
|
29
|
+
};
|
|
30
|
+
export type AsyncIteratorConfiguration<YieldValue, ReturnValue> = {
|
|
31
|
+
readonly next: TestDoubleConfiguration<AsyncNext<YieldValue, ReturnValue>>;
|
|
32
|
+
readonly return: TestDoubleConfiguration<AsyncReturn<YieldValue, ReturnValue>>;
|
|
33
|
+
readonly throw: TestDoubleConfiguration<AsyncThrow<YieldValue, ReturnValue>>;
|
|
34
|
+
};
|
|
35
|
+
export type SyncIterableConfiguration<YieldValue, ReturnValue, NextValue> = {
|
|
36
|
+
readonly iterator: TestDoubleConfiguration<() => TestIterator<YieldValue, ReturnValue, NextValue>>;
|
|
37
|
+
};
|
|
38
|
+
export type AsyncIterableConfiguration<YieldValue, ReturnValue, NextValue> = {
|
|
39
|
+
readonly asyncIterator: TestDoubleConfiguration<() => TestAsyncIterator<YieldValue, ReturnValue, NextValue>>;
|
|
40
|
+
};
|
|
41
|
+
export type AsyncIteratorMethods<YieldValue, ReturnValue> = {
|
|
42
|
+
readonly next: TestDouble<AsyncNext<YieldValue, ReturnValue>>;
|
|
43
|
+
readonly return: TestDouble<AsyncReturn<YieldValue, ReturnValue>>;
|
|
44
|
+
readonly throw: TestDouble<AsyncThrow<YieldValue, ReturnValue>>;
|
|
45
|
+
};
|
|
46
|
+
type SyncIteratorSourceVariants<YieldValue, ReturnValue> = {
|
|
47
|
+
readonly iterable: Iterable<YieldValue>;
|
|
48
|
+
readonly iterator: Iterator<YieldValue, ReturnValue, unknown>;
|
|
49
|
+
};
|
|
50
|
+
type AsyncIteratorSourceVariants<YieldValue, ReturnValue> = {
|
|
51
|
+
readonly asyncIterable: AsyncIterable<YieldValue>;
|
|
52
|
+
readonly asyncIterator: AsyncIterator<YieldValue, ReturnValue, unknown>;
|
|
53
|
+
readonly iterable: Iterable<YieldValue>;
|
|
54
|
+
readonly iterator: Iterator<YieldValue, ReturnValue, unknown>;
|
|
55
|
+
};
|
|
56
|
+
export type SyncIteratorSource<YieldValue, ReturnValue> = SyncIteratorSourceVariants<YieldValue, ReturnValue>[keyof SyncIteratorSourceVariants<YieldValue, ReturnValue>];
|
|
57
|
+
export type AsyncIteratorSource<YieldValue, ReturnValue> = AsyncIteratorSourceVariants<YieldValue, ReturnValue>[keyof AsyncIteratorSourceVariants<YieldValue, ReturnValue>];
|
|
58
|
+
export declare function createDefaultSyncMethods<YieldValue, ReturnValue>(): {
|
|
59
|
+
readonly next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
60
|
+
readonly return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
61
|
+
readonly throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
62
|
+
};
|
|
63
|
+
export declare function createDefaultAsyncMethods<YieldValue, ReturnValue>(): AsyncIteratorMethods<YieldValue, ReturnValue>;
|
|
64
|
+
export declare function createConfiguredSyncMethods<YieldValue, ReturnValue>(configuration: SyncIteratorConfiguration<YieldValue, ReturnValue>): {
|
|
65
|
+
next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
66
|
+
return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
67
|
+
throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
68
|
+
};
|
|
69
|
+
export declare function createConfiguredAsyncMethods<YieldValue, ReturnValue>(configuration: AsyncIteratorConfiguration<YieldValue, ReturnValue>): AsyncIteratorMethods<YieldValue, ReturnValue>;
|
|
70
|
+
export declare function createYieldingSyncMethods<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): {
|
|
71
|
+
next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
72
|
+
return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
73
|
+
throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
74
|
+
};
|
|
75
|
+
export declare function createYieldingAsyncMethods<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): AsyncIteratorMethods<YieldValue, ReturnValue>;
|
|
76
|
+
export declare function createDelegatingSyncMethods<YieldValue, ReturnValue>(sourceFactory: () => SyncIteratorSource<YieldValue, ReturnValue>): {
|
|
77
|
+
next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
78
|
+
return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
79
|
+
throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
80
|
+
};
|
|
81
|
+
export declare function createDelegatingAsyncMethods<YieldValue, ReturnValue>(sourceFactory: () => AsyncIteratorSource<YieldValue, ReturnValue>): AsyncIteratorMethods<YieldValue, ReturnValue>;
|
|
82
|
+
export declare function createSyncIteratorFromMethods<YieldValue, ReturnValue, NextValue>(methods: {
|
|
83
|
+
readonly next: TestDouble<SyncNext<YieldValue, ReturnValue>>;
|
|
84
|
+
readonly return: TestDouble<SyncReturn<YieldValue, ReturnValue>>;
|
|
85
|
+
readonly throw: TestDouble<SyncThrow<YieldValue, ReturnValue>>;
|
|
86
|
+
}): TestIterator<YieldValue, ReturnValue, NextValue>;
|
|
87
|
+
export declare function createAsyncIteratorFromMethods<YieldValue, ReturnValue, NextValue>(methods: AsyncIteratorMethods<YieldValue, ReturnValue>): TestAsyncIterator<YieldValue, ReturnValue, NextValue>;
|
|
88
|
+
export declare function createSyncIterableFromFactory<YieldValue, ReturnValue, NextValue>(createIterator: () => TestIterator<YieldValue, ReturnValue, NextValue>): TestIterable<YieldValue, ReturnValue, NextValue>;
|
|
89
|
+
export declare function createSyncIterableFromMethod<YieldValue, ReturnValue, NextValue>(iterator: TestDouble<() => TestIterator<YieldValue, ReturnValue, NextValue>>): TestIterable<YieldValue, ReturnValue, NextValue>;
|
|
90
|
+
export declare function createAsyncIterableFromFactory<YieldValue, ReturnValue, NextValue>(createIterator: () => TestAsyncIterator<YieldValue, ReturnValue, NextValue>): TestAsyncIterable<YieldValue, ReturnValue, NextValue>;
|
|
91
|
+
export declare function createAsyncIterableFromMethod<YieldValue, ReturnValue, NextValue>(asyncIterator: TestDouble<() => TestAsyncIterator<YieldValue, ReturnValue, NextValue>>): TestAsyncIterable<YieldValue, ReturnValue, NextValue>;
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=protocol-iterator-double.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-iterator-double.d.ts","sourceRoot":"","sources":["../../../../source/doubles/protocol-iterator-double.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import { disposeSymbol } from "./disposal-symbol.js";
|
|
2
|
+
import { installProtocolMetadata, protocolIteratorEvents } from "./protocol-double-metadata.js";
|
|
3
|
+
import { testDouble } from "./test-double.js";
|
|
4
|
+
function createIteratorEventRecorder() {
|
|
5
|
+
const events = [];
|
|
6
|
+
return {
|
|
7
|
+
events() {
|
|
8
|
+
return events.map(function copyEvent(event) {
|
|
9
|
+
return {
|
|
10
|
+
...event,
|
|
11
|
+
arguments: Array.from(event.arguments)
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
recordResult(input) {
|
|
16
|
+
events.push({
|
|
17
|
+
arguments: Array.from(input.arguments),
|
|
18
|
+
callIndex: 0,
|
|
19
|
+
index: events.length,
|
|
20
|
+
iteratorIndex: input.iteratorIndex,
|
|
21
|
+
kind: input.result.done === true ? 'return' : 'yield',
|
|
22
|
+
method: input.method,
|
|
23
|
+
protocol: input.protocol,
|
|
24
|
+
value: input.result.value
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
recordThrow(input) {
|
|
28
|
+
events.push({
|
|
29
|
+
arguments: Array.from(input.arguments),
|
|
30
|
+
callIndex: 0,
|
|
31
|
+
index: events.length,
|
|
32
|
+
iteratorIndex: input.iteratorIndex,
|
|
33
|
+
kind: 'throw',
|
|
34
|
+
method: input.method,
|
|
35
|
+
protocol: input.protocol,
|
|
36
|
+
thrown: input.thrown
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function returnedResult(value) {
|
|
42
|
+
return {
|
|
43
|
+
done: true,
|
|
44
|
+
value
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function doneResult() {
|
|
48
|
+
return returnedResult(undefined);
|
|
49
|
+
}
|
|
50
|
+
function syncReturnDefault(value) {
|
|
51
|
+
return returnedResult(value);
|
|
52
|
+
}
|
|
53
|
+
function syncThrowDefault(thrown) {
|
|
54
|
+
throw thrown;
|
|
55
|
+
}
|
|
56
|
+
async function asyncReturnDefault(value) {
|
|
57
|
+
return returnedResult(value);
|
|
58
|
+
}
|
|
59
|
+
async function asyncThrowDefault(thrown) {
|
|
60
|
+
throw thrown;
|
|
61
|
+
}
|
|
62
|
+
function resultValue(value) {
|
|
63
|
+
if (value === null || typeof value !== 'object' || !Object.hasOwn(value, 'done')) {
|
|
64
|
+
return returnedResult(value);
|
|
65
|
+
}
|
|
66
|
+
return Reflect.get(value, 'done') === true
|
|
67
|
+
? returnedResult(Reflect.get(value, 'value'))
|
|
68
|
+
: {
|
|
69
|
+
done: false,
|
|
70
|
+
value: Reflect.get(value, 'value')
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function trackedSyncNext(core, recorder, iteratorIndex) {
|
|
74
|
+
return testDouble({
|
|
75
|
+
answer(invocation) {
|
|
76
|
+
try {
|
|
77
|
+
const result = core(...invocation.arguments);
|
|
78
|
+
recorder.recordResult({
|
|
79
|
+
arguments: invocation.arguments,
|
|
80
|
+
iteratorIndex,
|
|
81
|
+
method: 'next',
|
|
82
|
+
protocol: 'sync',
|
|
83
|
+
result: resultValue(result)
|
|
84
|
+
});
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
recorder.recordThrow({
|
|
89
|
+
arguments: invocation.arguments,
|
|
90
|
+
iteratorIndex,
|
|
91
|
+
method: 'next',
|
|
92
|
+
protocol: 'sync',
|
|
93
|
+
thrown: error
|
|
94
|
+
});
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function trackedSyncReturn(core, recorder, iteratorIndex) {
|
|
101
|
+
return testDouble({
|
|
102
|
+
answer(invocation) {
|
|
103
|
+
try {
|
|
104
|
+
const result = core(...invocation.arguments);
|
|
105
|
+
recorder.recordResult({
|
|
106
|
+
arguments: invocation.arguments,
|
|
107
|
+
iteratorIndex,
|
|
108
|
+
method: 'return',
|
|
109
|
+
protocol: 'sync',
|
|
110
|
+
result: resultValue(result)
|
|
111
|
+
});
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
recorder.recordThrow({
|
|
116
|
+
arguments: invocation.arguments,
|
|
117
|
+
iteratorIndex,
|
|
118
|
+
method: 'return',
|
|
119
|
+
protocol: 'sync',
|
|
120
|
+
thrown: error
|
|
121
|
+
});
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function trackedSyncThrow(core, recorder, iteratorIndex) {
|
|
128
|
+
return testDouble({
|
|
129
|
+
answer(invocation) {
|
|
130
|
+
try {
|
|
131
|
+
const result = core(...invocation.arguments);
|
|
132
|
+
recorder.recordResult({
|
|
133
|
+
arguments: invocation.arguments,
|
|
134
|
+
iteratorIndex,
|
|
135
|
+
method: 'throw',
|
|
136
|
+
protocol: 'sync',
|
|
137
|
+
result: resultValue(result)
|
|
138
|
+
});
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
recorder.recordThrow({
|
|
143
|
+
arguments: invocation.arguments,
|
|
144
|
+
iteratorIndex,
|
|
145
|
+
method: 'throw',
|
|
146
|
+
protocol: 'sync',
|
|
147
|
+
thrown: error
|
|
148
|
+
});
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function trackedAsyncNext(core, recorder, iteratorIndex) {
|
|
155
|
+
return testDouble({
|
|
156
|
+
async answer(invocation) {
|
|
157
|
+
try {
|
|
158
|
+
const result = await core(...invocation.arguments);
|
|
159
|
+
recorder.recordResult({
|
|
160
|
+
arguments: invocation.arguments,
|
|
161
|
+
iteratorIndex,
|
|
162
|
+
method: 'next',
|
|
163
|
+
protocol: 'async',
|
|
164
|
+
result: resultValue(result)
|
|
165
|
+
});
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
recorder.recordThrow({
|
|
170
|
+
arguments: invocation.arguments,
|
|
171
|
+
iteratorIndex,
|
|
172
|
+
method: 'next',
|
|
173
|
+
protocol: 'async',
|
|
174
|
+
thrown: error
|
|
175
|
+
});
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
function trackedAsyncReturn(core, recorder, iteratorIndex) {
|
|
182
|
+
return testDouble({
|
|
183
|
+
async answer(invocation) {
|
|
184
|
+
try {
|
|
185
|
+
const result = await core(...invocation.arguments);
|
|
186
|
+
recorder.recordResult({
|
|
187
|
+
arguments: invocation.arguments,
|
|
188
|
+
iteratorIndex,
|
|
189
|
+
method: 'return',
|
|
190
|
+
protocol: 'async',
|
|
191
|
+
result: resultValue(result)
|
|
192
|
+
});
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
recorder.recordThrow({
|
|
197
|
+
arguments: invocation.arguments,
|
|
198
|
+
iteratorIndex,
|
|
199
|
+
method: 'return',
|
|
200
|
+
protocol: 'async',
|
|
201
|
+
thrown: error
|
|
202
|
+
});
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function trackedAsyncThrow(core, recorder, iteratorIndex) {
|
|
209
|
+
return testDouble({
|
|
210
|
+
async answer(invocation) {
|
|
211
|
+
try {
|
|
212
|
+
const result = await core(...invocation.arguments);
|
|
213
|
+
recorder.recordResult({
|
|
214
|
+
arguments: invocation.arguments,
|
|
215
|
+
iteratorIndex,
|
|
216
|
+
method: 'throw',
|
|
217
|
+
protocol: 'async',
|
|
218
|
+
result: resultValue(result)
|
|
219
|
+
});
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
recorder.recordThrow({
|
|
224
|
+
arguments: invocation.arguments,
|
|
225
|
+
iteratorIndex,
|
|
226
|
+
method: 'throw',
|
|
227
|
+
protocol: 'async',
|
|
228
|
+
thrown: error
|
|
229
|
+
});
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
function trackedSyncMethods(methods, recorder, iteratorIndex) {
|
|
236
|
+
return {
|
|
237
|
+
next: trackedSyncNext(methods.next, recorder, iteratorIndex),
|
|
238
|
+
return: trackedSyncReturn(methods.return, recorder, iteratorIndex),
|
|
239
|
+
throw: trackedSyncThrow(methods.throw, recorder, iteratorIndex)
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function trackedAsyncMethods(methods, recorder, iteratorIndex) {
|
|
243
|
+
return {
|
|
244
|
+
next: trackedAsyncNext(methods.next, recorder, iteratorIndex),
|
|
245
|
+
return: trackedAsyncReturn(methods.return, recorder, iteratorIndex),
|
|
246
|
+
throw: trackedAsyncThrow(methods.throw, recorder, iteratorIndex)
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function createSyncIterator(methods, recorder, iteratorIndex) {
|
|
250
|
+
const tracked = trackedSyncMethods(methods, recorder, iteratorIndex);
|
|
251
|
+
const bareIterator = {
|
|
252
|
+
next() {
|
|
253
|
+
return tracked.next();
|
|
254
|
+
},
|
|
255
|
+
return(value) {
|
|
256
|
+
return tracked.return(value);
|
|
257
|
+
},
|
|
258
|
+
throw(value) {
|
|
259
|
+
return tracked.throw(value);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
const iterator = Object.assign(Iterator.from(bareIterator), tracked);
|
|
263
|
+
installProtocolMetadata(iterator, {
|
|
264
|
+
disposeMethod() {
|
|
265
|
+
const dispose = Reflect.get(iterator, disposeSymbol);
|
|
266
|
+
return typeof dispose === 'function' ? dispose : null;
|
|
267
|
+
},
|
|
268
|
+
iteratorEvents: recorder.events,
|
|
269
|
+
kind: 'iterator'
|
|
270
|
+
});
|
|
271
|
+
return iterator;
|
|
272
|
+
}
|
|
273
|
+
function createAsyncIterator(methods, recorder, iteratorIndex) {
|
|
274
|
+
const tracked = trackedAsyncMethods(methods, recorder, iteratorIndex);
|
|
275
|
+
const iterator = {
|
|
276
|
+
next: tracked.next,
|
|
277
|
+
return: tracked.return,
|
|
278
|
+
throw: tracked.throw,
|
|
279
|
+
[Symbol.asyncIterator]() {
|
|
280
|
+
return iterator;
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
installProtocolMetadata(iterator, {
|
|
284
|
+
disposeMethod() {
|
|
285
|
+
return null;
|
|
286
|
+
},
|
|
287
|
+
iteratorEvents: recorder.events,
|
|
288
|
+
kind: 'async-iterator'
|
|
289
|
+
});
|
|
290
|
+
return iterator;
|
|
291
|
+
}
|
|
292
|
+
export function createDefaultSyncMethods() {
|
|
293
|
+
return {
|
|
294
|
+
next: testDouble({
|
|
295
|
+
answer: doneResult
|
|
296
|
+
}),
|
|
297
|
+
return: testDouble({
|
|
298
|
+
answer(invocation) {
|
|
299
|
+
return syncReturnDefault(invocation.arguments[0]);
|
|
300
|
+
}
|
|
301
|
+
}),
|
|
302
|
+
throw: testDouble({
|
|
303
|
+
answer(invocation) {
|
|
304
|
+
return syncThrowDefault(invocation.arguments[0]);
|
|
305
|
+
}
|
|
306
|
+
})
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
export function createDefaultAsyncMethods() {
|
|
310
|
+
return {
|
|
311
|
+
next: testDouble({
|
|
312
|
+
async answer() {
|
|
313
|
+
return doneResult();
|
|
314
|
+
}
|
|
315
|
+
}),
|
|
316
|
+
return: testDouble({
|
|
317
|
+
async answer(invocation) {
|
|
318
|
+
return asyncReturnDefault(invocation.arguments[0]);
|
|
319
|
+
}
|
|
320
|
+
}),
|
|
321
|
+
throw: testDouble({
|
|
322
|
+
async answer(invocation) {
|
|
323
|
+
return asyncThrowDefault(invocation.arguments[0]);
|
|
324
|
+
}
|
|
325
|
+
})
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
export function createConfiguredSyncMethods(configuration) {
|
|
329
|
+
return {
|
|
330
|
+
next: testDouble(configuration.next),
|
|
331
|
+
return: testDouble(configuration.return),
|
|
332
|
+
throw: testDouble(configuration.throw)
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
export function createConfiguredAsyncMethods(configuration) {
|
|
336
|
+
return {
|
|
337
|
+
next: testDouble(configuration.next),
|
|
338
|
+
return: testDouble(configuration.return),
|
|
339
|
+
throw: testDouble(configuration.throw)
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
export function createYieldingSyncMethods(values, returnValue) {
|
|
343
|
+
const iterator = values[Symbol.iterator]();
|
|
344
|
+
return createDelegatingSyncMethods(function source() {
|
|
345
|
+
return {
|
|
346
|
+
next() {
|
|
347
|
+
const next = iterator.next();
|
|
348
|
+
return next.done === true ? returnedResult(returnValue) : next;
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
export function createYieldingAsyncMethods(values, returnValue) {
|
|
354
|
+
const iterator = values[Symbol.iterator]();
|
|
355
|
+
return createDelegatingAsyncMethods(function source() {
|
|
356
|
+
return {
|
|
357
|
+
async next() {
|
|
358
|
+
const next = iterator.next();
|
|
359
|
+
return next.done === true ? returnedResult(returnValue) : next;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function isSyncIterable(value) {
|
|
365
|
+
return value !== null && typeof value === 'object' &&
|
|
366
|
+
typeof Reflect.get(value, Symbol.iterator) === 'function';
|
|
367
|
+
}
|
|
368
|
+
function isAsyncIterable(value) {
|
|
369
|
+
return value !== null && typeof value === 'object' &&
|
|
370
|
+
typeof Reflect.get(value, Symbol.asyncIterator) === 'function';
|
|
371
|
+
}
|
|
372
|
+
function syncIteratorFrom(value) {
|
|
373
|
+
if (isSyncIterable(value)) {
|
|
374
|
+
return value[Symbol.iterator]();
|
|
375
|
+
}
|
|
376
|
+
return value;
|
|
377
|
+
}
|
|
378
|
+
function asyncIteratorFrom(value) {
|
|
379
|
+
if (isAsyncIterable(value)) {
|
|
380
|
+
return value[Symbol.asyncIterator]();
|
|
381
|
+
}
|
|
382
|
+
return isSyncIterable(value) ? value[Symbol.iterator]() : value;
|
|
383
|
+
}
|
|
384
|
+
function cachedSource(source) {
|
|
385
|
+
let cached = null;
|
|
386
|
+
return function currentSource() {
|
|
387
|
+
if (cached === null) {
|
|
388
|
+
cached = source();
|
|
389
|
+
}
|
|
390
|
+
return cached;
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
export function createDelegatingSyncMethods(sourceFactory) {
|
|
394
|
+
const current = cachedSource(function createSource() {
|
|
395
|
+
return syncIteratorFrom(sourceFactory());
|
|
396
|
+
});
|
|
397
|
+
return {
|
|
398
|
+
next: testDouble({
|
|
399
|
+
answer(invocation) {
|
|
400
|
+
return current().next(invocation.arguments[0]);
|
|
401
|
+
}
|
|
402
|
+
}),
|
|
403
|
+
return: testDouble({
|
|
404
|
+
answer(invocation) {
|
|
405
|
+
const iterator = current();
|
|
406
|
+
const returnMethod = iterator.return;
|
|
407
|
+
return typeof returnMethod === 'function'
|
|
408
|
+
? returnMethod.call(iterator, invocation.arguments[0])
|
|
409
|
+
: syncReturnDefault(invocation.arguments[0]);
|
|
410
|
+
}
|
|
411
|
+
}),
|
|
412
|
+
throw: testDouble({
|
|
413
|
+
answer(invocation) {
|
|
414
|
+
const iterator = current();
|
|
415
|
+
const throwMethod = iterator.throw;
|
|
416
|
+
return typeof throwMethod === 'function'
|
|
417
|
+
? throwMethod.call(iterator, invocation.arguments[0])
|
|
418
|
+
: syncThrowDefault(invocation.arguments[0]);
|
|
419
|
+
}
|
|
420
|
+
})
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
export function createDelegatingAsyncMethods(sourceFactory) {
|
|
424
|
+
const current = cachedSource(function createSource() {
|
|
425
|
+
return asyncIteratorFrom(sourceFactory());
|
|
426
|
+
});
|
|
427
|
+
return {
|
|
428
|
+
next: testDouble({
|
|
429
|
+
async answer(invocation) {
|
|
430
|
+
return current().next(invocation.arguments[0]);
|
|
431
|
+
}
|
|
432
|
+
}),
|
|
433
|
+
return: testDouble({
|
|
434
|
+
async answer(invocation) {
|
|
435
|
+
const iterator = current();
|
|
436
|
+
const returnMethod = iterator.return;
|
|
437
|
+
if (typeof returnMethod !== 'function') {
|
|
438
|
+
return asyncReturnDefault(invocation.arguments[0]);
|
|
439
|
+
}
|
|
440
|
+
return await Reflect.apply(returnMethod, iterator, [
|
|
441
|
+
invocation.arguments[0]
|
|
442
|
+
]);
|
|
443
|
+
}
|
|
444
|
+
}),
|
|
445
|
+
throw: testDouble({
|
|
446
|
+
async answer(invocation) {
|
|
447
|
+
const iterator = current();
|
|
448
|
+
const throwMethod = iterator.throw;
|
|
449
|
+
if (typeof throwMethod !== 'function') {
|
|
450
|
+
return asyncThrowDefault(invocation.arguments[0]);
|
|
451
|
+
}
|
|
452
|
+
return await Reflect.apply(throwMethod, iterator, [
|
|
453
|
+
invocation.arguments[0]
|
|
454
|
+
]);
|
|
455
|
+
}
|
|
456
|
+
})
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
function iteratorEventsFor(call) {
|
|
460
|
+
return call.result.status === 'returned'
|
|
461
|
+
? protocolIteratorEvents(call.result.value) ?? []
|
|
462
|
+
: [];
|
|
463
|
+
}
|
|
464
|
+
export function createSyncIteratorFromMethods(methods) {
|
|
465
|
+
return createSyncIterator(methods, createIteratorEventRecorder(), 0);
|
|
466
|
+
}
|
|
467
|
+
export function createAsyncIteratorFromMethods(methods) {
|
|
468
|
+
return createAsyncIterator(methods, createIteratorEventRecorder(), 0);
|
|
469
|
+
}
|
|
470
|
+
export function createSyncIterableFromFactory(createIterator) {
|
|
471
|
+
const iterator = testDouble({
|
|
472
|
+
answer: createIterator
|
|
473
|
+
});
|
|
474
|
+
return createSyncIterableFromMethod(iterator);
|
|
475
|
+
}
|
|
476
|
+
export function createSyncIterableFromMethod(iterator) {
|
|
477
|
+
const iterable = {
|
|
478
|
+
[Symbol.iterator]: iterator
|
|
479
|
+
};
|
|
480
|
+
installProtocolMetadata(iterable, {
|
|
481
|
+
disposeMethod() {
|
|
482
|
+
return null;
|
|
483
|
+
},
|
|
484
|
+
iteratorEvents() {
|
|
485
|
+
return iterator.calls.flatMap(iteratorEventsFor);
|
|
486
|
+
},
|
|
487
|
+
kind: 'iterable'
|
|
488
|
+
});
|
|
489
|
+
return iterable;
|
|
490
|
+
}
|
|
491
|
+
export function createAsyncIterableFromFactory(createIterator) {
|
|
492
|
+
const asyncIterator = testDouble({
|
|
493
|
+
answer: createIterator
|
|
494
|
+
});
|
|
495
|
+
return createAsyncIterableFromMethod(asyncIterator);
|
|
496
|
+
}
|
|
497
|
+
export function createAsyncIterableFromMethod(asyncIterator) {
|
|
498
|
+
const iterable = {
|
|
499
|
+
[Symbol.asyncIterator]: asyncIterator
|
|
500
|
+
};
|
|
501
|
+
installProtocolMetadata(iterable, {
|
|
502
|
+
disposeMethod() {
|
|
503
|
+
return null;
|
|
504
|
+
},
|
|
505
|
+
iteratorEvents() {
|
|
506
|
+
return asyncIterator.calls.flatMap(iteratorEventsFor);
|
|
507
|
+
},
|
|
508
|
+
kind: 'async-iterable'
|
|
509
|
+
});
|
|
510
|
+
return iterable;
|
|
511
|
+
}
|
|
512
|
+
//# sourceMappingURL=protocol-iterator-double.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-iterator-double.js","sourceRoot":"","sources":["../../../../source/doubles/protocol-iterator-double.ts"],"names":[],"mappings":"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"}
|