@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.
Files changed (178) hide show
  1. package/LICENSE +21 -0
  2. package/assert/assertion-extension.d.ts +65 -0
  3. package/assert/assertion-extension.d.ts.map +1 -0
  4. package/assert/assertion-extension.js +250 -0
  5. package/assert/assertion-extension.js.map +1 -0
  6. package/assertion-protocol/assertion-evaluation.d.ts +13 -0
  7. package/assertion-protocol/assertion-evaluation.d.ts.map +1 -0
  8. package/assertion-protocol/assertion-node-shape.d.ts +71 -0
  9. package/assertion-protocol/assertion-node-shape.d.ts.map +1 -0
  10. package/assertion-protocol/assertion-node.d.ts +97 -0
  11. package/assertion-protocol/assertion-node.d.ts.map +1 -0
  12. package/assertion-protocol/assertion-reference.d.ts +73 -0
  13. package/assertion-protocol/assertion-reference.d.ts.map +1 -0
  14. package/assertion-protocol/assertion-reference.js +49 -0
  15. package/assertion-protocol/assertion-reference.js.map +1 -0
  16. package/assertion-protocol/assertions/boolean.d.ts +11 -0
  17. package/assertion-protocol/assertions/boolean.d.ts.map +1 -0
  18. package/assertion-protocol/assertions/collection.d.ts +22 -0
  19. package/assertion-protocol/assertions/collection.d.ts.map +1 -0
  20. package/assertion-protocol/assertions/equality.d.ts +17 -0
  21. package/assertion-protocol/assertions/equality.d.ts.map +1 -0
  22. package/assertion-protocol/assertions/fail.d.ts +13 -0
  23. package/assertion-protocol/assertions/fail.d.ts.map +1 -0
  24. package/assertion-protocol/assertions/numeric.d.ts +29 -0
  25. package/assertion-protocol/assertions/numeric.d.ts.map +1 -0
  26. package/assertion-protocol/assertions/partial.d.ts +14 -0
  27. package/assertion-protocol/assertions/partial.d.ts.map +1 -0
  28. package/assertion-protocol/assertions/presence.d.ts +17 -0
  29. package/assertion-protocol/assertions/presence.d.ts.map +1 -0
  30. package/assertion-protocol/assertions/string.d.ts +28 -0
  31. package/assertion-protocol/assertions/string.d.ts.map +1 -0
  32. package/assertion-protocol/assertions/type-shape.d.ts +42 -0
  33. package/assertion-protocol/assertions/type-shape.d.ts.map +1 -0
  34. package/assertion-protocol/thrown-error-record.d.ts +8 -0
  35. package/assertion-protocol/thrown-error-record.d.ts.map +1 -0
  36. package/assertion-protocol/thrown-error-record.js +17 -0
  37. package/assertion-protocol/thrown-error-record.js.map +1 -0
  38. package/assertion-protocol/thrown-matcher.d.ts +51 -0
  39. package/assertion-protocol/thrown-matcher.d.ts.map +1 -0
  40. package/assertion-protocol/thrown-matcher.js +186 -0
  41. package/assertion-protocol/thrown-matcher.js.map +1 -0
  42. package/compare/comparison-result.d.ts +25 -0
  43. package/compare/comparison-result.d.ts.map +1 -0
  44. package/compare/comparison-state.d.ts +7 -0
  45. package/compare/comparison-state.d.ts.map +1 -0
  46. package/compare/comparison-state.js +20 -0
  47. package/compare/comparison-state.js.map +1 -0
  48. package/compare/comparison.d.ts +12 -0
  49. package/compare/comparison.d.ts.map +1 -0
  50. package/compare/raw-comparison.d.ts +24 -0
  51. package/compare/raw-comparison.d.ts.map +1 -0
  52. package/compare/raw-comparison.js +285 -0
  53. package/compare/raw-comparison.js.map +1 -0
  54. package/compare/serialized-value-shape.d.ts +143 -0
  55. package/compare/serialized-value-shape.d.ts.map +1 -0
  56. package/compare/serialized-value.d.ts +11 -0
  57. package/compare/serialized-value.d.ts.map +1 -0
  58. package/compare/value-classification.d.ts +26 -0
  59. package/compare/value-classification.d.ts.map +1 -0
  60. package/compare/value-classification.js +110 -0
  61. package/compare/value-classification.js.map +1 -0
  62. package/diff/diff-shape.d.ts +117 -0
  63. package/diff/diff-shape.d.ts.map +1 -0
  64. package/doubles/disposal-symbol.d.ts +3 -0
  65. package/doubles/disposal-symbol.d.ts.map +1 -0
  66. package/doubles/disposal-symbol.js +10 -0
  67. package/doubles/disposal-symbol.js.map +1 -0
  68. package/doubles/double-behavior.d.ts +106 -0
  69. package/doubles/double-behavior.d.ts.map +1 -0
  70. package/doubles/double-behavior.js +257 -0
  71. package/doubles/double-behavior.js.map +1 -0
  72. package/doubles/double-chronology.d.ts +21 -0
  73. package/doubles/double-chronology.d.ts.map +1 -0
  74. package/doubles/double-chronology.js +78 -0
  75. package/doubles/double-chronology.js.map +1 -0
  76. package/doubles/double-history-api.d.ts +33 -0
  77. package/doubles/double-history-api.d.ts.map +1 -0
  78. package/doubles/double-history-api.js +125 -0
  79. package/doubles/double-history-api.js.map +1 -0
  80. package/doubles/double-history-record.d.ts +82 -0
  81. package/doubles/double-history-record.d.ts.map +1 -0
  82. package/doubles/double-history-record.js +65 -0
  83. package/doubles/double-history-record.js.map +1 -0
  84. package/doubles/double-history-store.d.ts +21 -0
  85. package/doubles/double-history-store.d.ts.map +1 -0
  86. package/doubles/double-history-store.js +118 -0
  87. package/doubles/double-history-store.js.map +1 -0
  88. package/doubles/double-history.d.ts +141 -0
  89. package/doubles/double-history.d.ts.map +1 -0
  90. package/doubles/double-history.js +32 -0
  91. package/doubles/double-history.js.map +1 -0
  92. package/doubles/double-iterator-event-types.d.ts +25 -0
  93. package/doubles/double-iterator-event-types.d.ts.map +1 -0
  94. package/doubles/double-iterator-tracking.d.ts +12 -0
  95. package/doubles/double-iterator-tracking.d.ts.map +1 -0
  96. package/doubles/double-iterator-tracking.js +161 -0
  97. package/doubles/double-iterator-tracking.js.map +1 -0
  98. package/doubles/double-rule-arguments.d.ts +18 -0
  99. package/doubles/double-rule-arguments.d.ts.map +1 -0
  100. package/doubles/double-rule-callback.d.ts +40 -0
  101. package/doubles/double-rule-callback.d.ts.map +1 -0
  102. package/doubles/double-rule-callback.js +84 -0
  103. package/doubles/double-rule-callback.js.map +1 -0
  104. package/doubles/double-rule-generator.d.ts +108 -0
  105. package/doubles/double-rule-generator.d.ts.map +1 -0
  106. package/doubles/double-rule-generator.js +37 -0
  107. package/doubles/double-rule-generator.js.map +1 -0
  108. package/doubles/double-rule-types.d.ts +162 -0
  109. package/doubles/double-rule-types.d.ts.map +1 -0
  110. package/doubles/double-rule.d.ts +3 -0
  111. package/doubles/double-rule.d.ts.map +1 -0
  112. package/doubles/double-rule.js +113 -0
  113. package/doubles/double-rule.js.map +1 -0
  114. package/doubles/double-runtime.d.ts +9 -0
  115. package/doubles/double-runtime.d.ts.map +1 -0
  116. package/doubles/double-runtime.js +173 -0
  117. package/doubles/double-runtime.js.map +1 -0
  118. package/doubles/double-signature.d.ts +5 -0
  119. package/doubles/double-signature.d.ts.map +1 -0
  120. package/doubles/double-usage-argument-assertion.d.ts +27 -0
  121. package/doubles/double-usage-argument-assertion.d.ts.map +1 -0
  122. package/doubles/double-usage-argument-assertion.js +202 -0
  123. package/doubles/double-usage-argument-assertion.js.map +1 -0
  124. package/doubles/double-usage-contract.d.ts +29 -0
  125. package/doubles/double-usage-contract.d.ts.map +1 -0
  126. package/doubles/double-usage-contract.js +11 -0
  127. package/doubles/double-usage-contract.js.map +1 -0
  128. package/doubles/double-usage-count-assertion.d.ts +6 -0
  129. package/doubles/double-usage-count-assertion.d.ts.map +1 -0
  130. package/doubles/double-usage-count-assertion.js +73 -0
  131. package/doubles/double-usage-count-assertion.js.map +1 -0
  132. package/doubles/double-usage-disposal-assertion.d.ts +7 -0
  133. package/doubles/double-usage-disposal-assertion.d.ts.map +1 -0
  134. package/doubles/double-usage-disposal-assertion.js +175 -0
  135. package/doubles/double-usage-disposal-assertion.js.map +1 -0
  136. package/doubles/double-usage-inspection.d.ts +22 -0
  137. package/doubles/double-usage-inspection.d.ts.map +1 -0
  138. package/doubles/double-usage-inspection.js +59 -0
  139. package/doubles/double-usage-inspection.js.map +1 -0
  140. package/doubles/double-usage-iterator-assertion.d.ts +7 -0
  141. package/doubles/double-usage-iterator-assertion.d.ts.map +1 -0
  142. package/doubles/double-usage-iterator-assertion.js +124 -0
  143. package/doubles/double-usage-iterator-assertion.js.map +1 -0
  144. package/doubles/double-usage-order-assertion.d.ts +3 -0
  145. package/doubles/double-usage-order-assertion.d.ts.map +1 -0
  146. package/doubles/double-usage-order-assertion.js +91 -0
  147. package/doubles/double-usage-order-assertion.js.map +1 -0
  148. package/doubles/double-usage.d.ts +81 -0
  149. package/doubles/double-usage.d.ts.map +1 -0
  150. package/doubles/double-usage.js +228 -0
  151. package/doubles/double-usage.js.map +1 -0
  152. package/doubles/protocol-disposable-double.d.ts +16 -0
  153. package/doubles/protocol-disposable-double.d.ts.map +1 -0
  154. package/doubles/protocol-disposable-double.js +37 -0
  155. package/doubles/protocol-disposable-double.js.map +1 -0
  156. package/doubles/protocol-double-metadata.d.ts +15 -0
  157. package/doubles/protocol-double-metadata.d.ts.map +1 -0
  158. package/doubles/protocol-double-metadata.js +30 -0
  159. package/doubles/protocol-double-metadata.js.map +1 -0
  160. package/doubles/protocol-double.d.ts +50 -0
  161. package/doubles/protocol-double.d.ts.map +1 -0
  162. package/doubles/protocol-double.js +76 -0
  163. package/doubles/protocol-double.js.map +1 -0
  164. package/doubles/protocol-iterator-double.d.ts +93 -0
  165. package/doubles/protocol-iterator-double.d.ts.map +1 -0
  166. package/doubles/protocol-iterator-double.js +512 -0
  167. package/doubles/protocol-iterator-double.js.map +1 -0
  168. package/doubles/test-double.d.ts +62 -0
  169. package/doubles/test-double.d.ts.map +1 -0
  170. package/doubles/test-double.js +192 -0
  171. package/doubles/test-double.js.map +1 -0
  172. package/package.json +36 -6
  173. package/packages/doubles/doubles.entry-point.d.ts +13 -0
  174. package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
  175. package/packages/doubles/doubles.entry-point.js +5 -0
  176. package/packages/doubles/doubles.entry-point.js.map +1 -0
  177. package/readme.md +423 -5
  178. 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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"}