@overkill-dev/doubles 0.0.1 → 0.0.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 (98) 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/doubles/disposal-symbol.js +10 -0
  7. package/doubles/disposal-symbol.js.map +1 -0
  8. package/doubles/double-behavior.d.ts +106 -0
  9. package/doubles/double-behavior.d.ts.map +1 -0
  10. package/doubles/double-behavior.js +257 -0
  11. package/doubles/double-behavior.js.map +1 -0
  12. package/doubles/double-chronology.js +78 -0
  13. package/doubles/double-chronology.js.map +1 -0
  14. package/doubles/double-history-api.js +125 -0
  15. package/doubles/double-history-api.js.map +1 -0
  16. package/doubles/double-history-record.d.ts +82 -0
  17. package/doubles/double-history-record.d.ts.map +1 -0
  18. package/doubles/double-history-record.js +65 -0
  19. package/doubles/double-history-record.js.map +1 -0
  20. package/doubles/double-history-store.d.ts +21 -0
  21. package/doubles/double-history-store.d.ts.map +1 -0
  22. package/doubles/double-history-store.js +118 -0
  23. package/doubles/double-history-store.js.map +1 -0
  24. package/doubles/double-history.d.ts +141 -0
  25. package/doubles/double-history.d.ts.map +1 -0
  26. package/doubles/double-history.js +32 -0
  27. package/doubles/double-history.js.map +1 -0
  28. package/doubles/double-iterator-event-types.d.ts +25 -0
  29. package/doubles/double-iterator-event-types.d.ts.map +1 -0
  30. package/doubles/double-iterator-tracking.d.ts +12 -0
  31. package/doubles/double-iterator-tracking.d.ts.map +1 -0
  32. package/doubles/double-iterator-tracking.js +161 -0
  33. package/doubles/double-iterator-tracking.js.map +1 -0
  34. package/doubles/double-rule-arguments.d.ts +18 -0
  35. package/doubles/double-rule-arguments.d.ts.map +1 -0
  36. package/doubles/double-rule-callback.d.ts +40 -0
  37. package/doubles/double-rule-callback.d.ts.map +1 -0
  38. package/doubles/double-rule-callback.js +84 -0
  39. package/doubles/double-rule-callback.js.map +1 -0
  40. package/doubles/double-rule-generator.d.ts +108 -0
  41. package/doubles/double-rule-generator.d.ts.map +1 -0
  42. package/doubles/double-rule-generator.js +37 -0
  43. package/doubles/double-rule-generator.js.map +1 -0
  44. package/doubles/double-rule-types.d.ts +162 -0
  45. package/doubles/double-rule-types.d.ts.map +1 -0
  46. package/doubles/double-rule.d.ts +3 -0
  47. package/doubles/double-rule.d.ts.map +1 -0
  48. package/doubles/double-rule.js +113 -0
  49. package/doubles/double-rule.js.map +1 -0
  50. package/doubles/double-runtime.js +173 -0
  51. package/doubles/double-runtime.js.map +1 -0
  52. package/doubles/double-signature.d.ts +5 -0
  53. package/doubles/double-signature.d.ts.map +1 -0
  54. package/doubles/double-usage-argument-assertion.js +202 -0
  55. package/doubles/double-usage-argument-assertion.js.map +1 -0
  56. package/doubles/double-usage-contract.d.ts +29 -0
  57. package/doubles/double-usage-contract.d.ts.map +1 -0
  58. package/doubles/double-usage-contract.js +11 -0
  59. package/doubles/double-usage-contract.js.map +1 -0
  60. package/doubles/double-usage-count-assertion.js +73 -0
  61. package/doubles/double-usage-count-assertion.js.map +1 -0
  62. package/doubles/double-usage-disposal-assertion.js +175 -0
  63. package/doubles/double-usage-disposal-assertion.js.map +1 -0
  64. package/doubles/double-usage-inspection.js +59 -0
  65. package/doubles/double-usage-inspection.js.map +1 -0
  66. package/doubles/double-usage-iterator-assertion.js +124 -0
  67. package/doubles/double-usage-iterator-assertion.js.map +1 -0
  68. package/doubles/double-usage-order-assertion.js +91 -0
  69. package/doubles/double-usage-order-assertion.js.map +1 -0
  70. package/doubles/double-usage.d.ts +81 -0
  71. package/doubles/double-usage.d.ts.map +1 -0
  72. package/doubles/double-usage.js +228 -0
  73. package/doubles/double-usage.js.map +1 -0
  74. package/doubles/protocol-disposable-double.d.ts +16 -0
  75. package/doubles/protocol-disposable-double.d.ts.map +1 -0
  76. package/doubles/protocol-disposable-double.js +37 -0
  77. package/doubles/protocol-disposable-double.js.map +1 -0
  78. package/doubles/protocol-double-metadata.js +30 -0
  79. package/doubles/protocol-double-metadata.js.map +1 -0
  80. package/doubles/protocol-double.d.ts +50 -0
  81. package/doubles/protocol-double.d.ts.map +1 -0
  82. package/doubles/protocol-double.js +76 -0
  83. package/doubles/protocol-double.js.map +1 -0
  84. package/doubles/protocol-iterator-double.d.ts +93 -0
  85. package/doubles/protocol-iterator-double.d.ts.map +1 -0
  86. package/doubles/protocol-iterator-double.js +512 -0
  87. package/doubles/protocol-iterator-double.js.map +1 -0
  88. package/doubles/test-double.d.ts +62 -0
  89. package/doubles/test-double.d.ts.map +1 -0
  90. package/doubles/test-double.js +192 -0
  91. package/doubles/test-double.js.map +1 -0
  92. package/package.json +38 -6
  93. package/packages/doubles/doubles.entry-point.d.ts +13 -0
  94. package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
  95. package/packages/doubles/doubles.entry-point.js +5 -0
  96. package/packages/doubles/doubles.entry-point.js.map +1 -0
  97. package/readme.md +423 -5
  98. package/sbom.cdx.json +50 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Overkill contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,65 @@
1
+ import { type CompositeAssertionGroup, type CompositeAssertionReference, type CompositeAssertionSummaryContext, type AssertCompositeAssertionReturn, type NarrowingCompositeAssertionReference } from '@overkill-dev/engine/packages/engine/assertion-protocol.entry-point.js';
2
+ import type { BuiltInAssertAssertionNode, CompositeAssertionChildNode, ForeignAssertionNode } from '@overkill-dev/engine/assertion-protocol/assertion-node.js';
3
+ import type { AssertionSource, DeepComparable, InstanceConstructor, NonEmptyReadonlyArray, ResolvableSourceLocation } from '@overkill-dev/engine/assertion-protocol/assertion-node-shape.d.ts';
4
+ import { type SynchronousCallback, type ThrownMatcher } from '@overkill-dev/engine/packages/engine/assertion-protocol.entry-point.js';
5
+ type GroupItem<Source extends AssertionSource> = CompositeAssertionChildNode<Source> | CompositeAssertionGroup<Source>;
6
+ type CompositeAssertionSummaryFormatter<Arguments extends readonly unknown[]> = (context: CompositeAssertionSummaryContext, ...parameters: Arguments) => string;
7
+ type NarrowingCompositeAssertionSummaryFormatter<Actual, Arguments extends readonly unknown[]> = (context: CompositeAssertionSummaryContext, actual: Actual, ...parameters: Arguments) => string;
8
+ export type CompositeCheckBuilder<Source extends AssertionSource = AssertionSource> = {
9
+ readonly annotated: (message: string) => CompositeCheckBuilder<Source>;
10
+ readonly array: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
11
+ readonly arrayContainsPartial: <Actual, Expected>(actual: readonly DeepComparable<Actual>[], expectedSubset: DeepComparable<Expected>) => BuiltInAssertAssertionNode<Source>;
12
+ readonly between: (actual: number, minimum: number, maximum: number) => BuiltInAssertAssertionNode<Source>;
13
+ readonly boolean: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
14
+ readonly deepEqual: <Actual, Expected>(actual: DeepComparable<Actual>, expected: DeepComparable<Expected>) => BuiltInAssertAssertionNode<Source>;
15
+ readonly defined: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
16
+ readonly empty: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
17
+ readonly endsWith: (actual: string, expected: string) => BuiltInAssertAssertionNode<Source>;
18
+ readonly equal: (actual: unknown, expected: unknown) => BuiltInAssertAssertionNode<Source>;
19
+ readonly fail: () => BuiltInAssertAssertionNode<Source>;
20
+ readonly false: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
21
+ readonly fromRejectable: (label: string, body: () => Promise<void>) => Promise<ForeignAssertionNode<Source>>;
22
+ readonly fromThrowable: (label: string, body: () => void) => ForeignAssertionNode<Source>;
23
+ readonly function: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
24
+ readonly greaterThan: (actual: number, expected: number) => BuiltInAssertAssertionNode<Source>;
25
+ readonly greaterThanOrEqual: (actual: number, expected: number) => BuiltInAssertAssertionNode<Source>;
26
+ readonly group: (children: NonEmptyReadonlyArray<GroupItem<Source>>) => CompositeAssertionGroup<Source>;
27
+ readonly hasProperty: (actual: unknown, key: PropertyKey) => BuiltInAssertAssertionNode<Source>;
28
+ readonly includes: (actual: string, expected: string) => BuiltInAssertAssertionNode<Source>;
29
+ readonly instanceOf: (actual: unknown, expected: InstanceConstructor) => BuiltInAssertAssertionNode<Source>;
30
+ readonly length: (actual: unknown, expectedLength: number) => BuiltInAssertAssertionNode<Source>;
31
+ readonly lessThan: (actual: number, expected: number) => BuiltInAssertAssertionNode<Source>;
32
+ readonly lessThanOrEqual: (actual: number, expected: number) => BuiltInAssertAssertionNode<Source>;
33
+ readonly match: (actual: string, pattern: RegExp) => BuiltInAssertAssertionNode<Source>;
34
+ readonly membersPartialDeepEqual: <Actual, Expected>(actual: readonly DeepComparable<Actual>[], expectedMembers: readonly DeepComparable<Expected>[]) => BuiltInAssertAssertionNode<Source>;
35
+ readonly notDeepEqual: <Actual, Expected>(actual: DeepComparable<Actual>, expected: DeepComparable<Expected>) => BuiltInAssertAssertionNode<Source>;
36
+ readonly notEmpty: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
37
+ readonly notEqual: (actual: unknown, expected: unknown) => BuiltInAssertAssertionNode<Source>;
38
+ readonly notMatch: (actual: string, pattern: RegExp) => BuiltInAssertAssertionNode<Source>;
39
+ readonly notNull: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
40
+ readonly null: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
41
+ readonly number: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
42
+ readonly object: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
43
+ readonly partialDeepEqual: <Actual, Expected>(actual: DeepComparable<Actual>, expectedSubset: DeepComparable<Expected>) => BuiltInAssertAssertionNode<Source>;
44
+ readonly rejects: (thunk: () => PromiseLike<unknown>, matcher: ThrownMatcher) => Promise<CompositeAssertionGroup<Source>>;
45
+ readonly startsWith: (actual: string, expected: string) => BuiltInAssertAssertionNode<Source>;
46
+ readonly string: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
47
+ readonly throws: <Body extends () => unknown>(body: SynchronousCallback<Body>, matcher: ThrownMatcher) => CompositeAssertionGroup<Source>;
48
+ readonly true: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
49
+ readonly undefined: (actual: unknown) => BuiltInAssertAssertionNode<Source>;
50
+ };
51
+ export type CompositeAssertionDefinition<Arguments extends readonly unknown[], Result extends AssertCompositeAssertionReturn> = {
52
+ readonly assert: (check: CompositeCheckBuilder<'assert'>, ...parameters: Arguments) => Result;
53
+ readonly formatSummary?: CompositeAssertionSummaryFormatter<Arguments>;
54
+ readonly name: string;
55
+ };
56
+ export type NarrowingCompositeAssertionDefinition<Actual, Narrowed extends Actual, Arguments extends readonly unknown[]> = {
57
+ readonly formatSummary?: NarrowingCompositeAssertionSummaryFormatter<Actual, Arguments>;
58
+ readonly name: string;
59
+ readonly narrows: (actual: Actual, ...parameters: Arguments) => actual is Narrowed;
60
+ };
61
+ export declare function createCompositeCheckBuilder<Source extends AssertionSource>(source: Source, message: string | null, location: ResolvableSourceLocation): CompositeCheckBuilder<Source>;
62
+ export declare function defineCompositeAssertion<Arguments extends readonly unknown[], Result extends AssertCompositeAssertionReturn>(definition: CompositeAssertionDefinition<Arguments, Result>): CompositeAssertionReference<Arguments, Result>;
63
+ export declare function defineNarrowingCompositeAssertion<Actual, Narrowed extends Actual, Arguments extends readonly unknown[]>(definition: NarrowingCompositeAssertionDefinition<Actual, Narrowed, Arguments>): NarrowingCompositeAssertionReference<Actual, Narrowed, Arguments>;
64
+ export {};
65
+ //# sourceMappingURL=assertion-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-extension.d.ts","sourceRoot":"","sources":["../../../../source/assert/assertion-extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ import { createAssertionReferenceRecord, createCompositeAssertionGroup, isCompositeAssertionGroup } from "@overkill-dev/engine/packages/engine/assertion-protocol.entry-point.js";
2
+ import { createThrownErrorRecord } from "@overkill-dev/engine/packages/engine/assertion-protocol.entry-point.js";
3
+ import { thrownMatcherChildren } from "@overkill-dev/engine/packages/engine/assertion-protocol.entry-point.js";
4
+ function createForeignAssertionNode(input) {
5
+ return {
6
+ check: 'foreign',
7
+ label: input.label,
8
+ location: input.location,
9
+ message: input.message,
10
+ result: input.result,
11
+ source: input.source,
12
+ summary: input.result.passed
13
+ ? `Expected foreign assertion ${input.label} to pass.`
14
+ : `${input.label}: ${input.result.error.message}`
15
+ };
16
+ }
17
+ function assertNonEmptyItems(items, message) {
18
+ if (items.length === 0) {
19
+ throw new TypeError(message);
20
+ }
21
+ }
22
+ function flattenCompositeGroupItems(items) {
23
+ const children = items.flatMap(function toChildren(item) {
24
+ return isCompositeAssertionGroup(item) ? item.children : [item];
25
+ });
26
+ assertNonEmptyItems(children, 'Expected composite assertion group to contain children.');
27
+ return children;
28
+ }
29
+ export function createCompositeCheckBuilder(source, message, location) {
30
+ return {
31
+ annotated(childMessage) {
32
+ return createCompositeCheckBuilder(source, childMessage, location);
33
+ },
34
+ array(actual) {
35
+ return { actual, check: 'array', location, message, source };
36
+ },
37
+ arrayContainsPartial(actual, expected) {
38
+ return { actual, check: 'array-contains-partial', expected, location, message, source };
39
+ },
40
+ between(actual, minimum, maximum) {
41
+ return { actual, check: 'between', location, maximum, message, minimum, source };
42
+ },
43
+ boolean(actual) {
44
+ return { actual, check: 'boolean', location, message, source };
45
+ },
46
+ deepEqual(actual, expected) {
47
+ return { actual, check: 'deep-equal', expected, location, message, source };
48
+ },
49
+ defined(actual) {
50
+ return { actual, check: 'defined', location, message, source };
51
+ },
52
+ empty(actual) {
53
+ return { actual, check: 'empty', location, message, source };
54
+ },
55
+ endsWith(actual, expected) {
56
+ return { actual, check: 'ends-with', expected, location, message, source };
57
+ },
58
+ equal(actual, expected) {
59
+ return { actual, check: 'equal', expected, location, message, source };
60
+ },
61
+ fail() {
62
+ return { check: 'fail', location, message, source };
63
+ },
64
+ false(actual) {
65
+ return { actual, check: 'false', location, message, source };
66
+ },
67
+ async fromRejectable(label, body) {
68
+ try {
69
+ await body();
70
+ return createForeignAssertionNode({
71
+ label,
72
+ location,
73
+ message,
74
+ result: { passed: true },
75
+ source
76
+ });
77
+ }
78
+ catch (error) {
79
+ return createForeignAssertionNode({
80
+ label,
81
+ location,
82
+ message,
83
+ result: {
84
+ error: createThrownErrorRecord(error),
85
+ passed: false
86
+ },
87
+ source
88
+ });
89
+ }
90
+ },
91
+ fromThrowable(label, body) {
92
+ try {
93
+ body();
94
+ return createForeignAssertionNode({
95
+ label,
96
+ location,
97
+ message,
98
+ result: { passed: true },
99
+ source
100
+ });
101
+ }
102
+ catch (error) {
103
+ return createForeignAssertionNode({
104
+ label,
105
+ location,
106
+ message,
107
+ result: {
108
+ error: createThrownErrorRecord(error),
109
+ passed: false
110
+ },
111
+ source
112
+ });
113
+ }
114
+ },
115
+ function(actual) {
116
+ return { actual, check: 'function', location, message, source };
117
+ },
118
+ greaterThan(actual, expected) {
119
+ return { actual, check: 'greater-than', expected, location, message, source };
120
+ },
121
+ greaterThanOrEqual(actual, expected) {
122
+ return { actual, check: 'greater-than-or-equal', expected, location, message, source };
123
+ },
124
+ group(children) {
125
+ return createCompositeAssertionGroup(flattenCompositeGroupItems(children));
126
+ },
127
+ hasProperty(actual, key) {
128
+ return { actual, check: 'has-property', key, location, message, source };
129
+ },
130
+ includes(actual, expected) {
131
+ return { actual, check: 'includes', expected, location, message, source };
132
+ },
133
+ instanceOf(actual, expected) {
134
+ return { actual, check: 'instance-of', expected, location, message, source };
135
+ },
136
+ length(actual, expectedLength) {
137
+ return { actual, check: 'length', expectedLength, location, message, source };
138
+ },
139
+ lessThan(actual, expected) {
140
+ return { actual, check: 'less-than', expected, location, message, source };
141
+ },
142
+ lessThanOrEqual(actual, expected) {
143
+ return { actual, check: 'less-than-or-equal', expected, location, message, source };
144
+ },
145
+ match(actual, pattern) {
146
+ return { actual, check: 'match', location, message, pattern, source };
147
+ },
148
+ membersPartialDeepEqual(actual, expected) {
149
+ return { actual, check: 'members-partial-deep-equal', expected, location, message, source };
150
+ },
151
+ notDeepEqual(actual, expected) {
152
+ return { actual, check: 'not-deep-equal', expected, location, message, source };
153
+ },
154
+ notEmpty(actual) {
155
+ return { actual, check: 'not-empty', location, message, source };
156
+ },
157
+ notEqual(actual, expected) {
158
+ return { actual, check: 'not-equal', expected, location, message, source };
159
+ },
160
+ notMatch(actual, pattern) {
161
+ return { actual, check: 'not-match', location, message, pattern, source };
162
+ },
163
+ notNull(actual) {
164
+ return { actual, check: 'not-null', location, message, source };
165
+ },
166
+ null(actual) {
167
+ return { actual, check: 'null', location, message, source };
168
+ },
169
+ number(actual) {
170
+ return { actual, check: 'number', location, message, source };
171
+ },
172
+ object(actual) {
173
+ return { actual, check: 'object', location, message, source };
174
+ },
175
+ partialDeepEqual(actual, expected) {
176
+ return { actual, check: 'partial-deep-equal', expected, location, message, source };
177
+ },
178
+ async rejects(thunk, matcher) {
179
+ const promise = thunk();
180
+ try {
181
+ const value = await promise;
182
+ return createCompositeAssertionGroup(thrownMatcherChildren({
183
+ kind: 'rejects',
184
+ location,
185
+ matcher,
186
+ message,
187
+ observation: { status: 'resolved', value },
188
+ source
189
+ }));
190
+ }
191
+ catch (error) {
192
+ return createCompositeAssertionGroup(thrownMatcherChildren({
193
+ kind: 'rejects',
194
+ location,
195
+ matcher,
196
+ message,
197
+ observation: { status: 'rejected', value: error },
198
+ source
199
+ }));
200
+ }
201
+ },
202
+ startsWith(actual, expected) {
203
+ return { actual, check: 'starts-with', expected, location, message, source };
204
+ },
205
+ string(actual) {
206
+ return { actual, check: 'string', location, message, source };
207
+ },
208
+ throws(body, matcher) {
209
+ try {
210
+ const value = body();
211
+ return createCompositeAssertionGroup(thrownMatcherChildren({
212
+ kind: 'throws',
213
+ location,
214
+ matcher,
215
+ message,
216
+ observation: { status: 'returned', value },
217
+ source
218
+ }));
219
+ }
220
+ catch (error) {
221
+ return createCompositeAssertionGroup(thrownMatcherChildren({
222
+ kind: 'throws',
223
+ location,
224
+ matcher,
225
+ message,
226
+ observation: { status: 'threw', value: error },
227
+ source
228
+ }));
229
+ }
230
+ },
231
+ true(actual) {
232
+ return { actual, check: 'true', location, message, source };
233
+ },
234
+ undefined(actual) {
235
+ return { actual, check: 'undefined', location, message, source };
236
+ }
237
+ };
238
+ }
239
+ export function defineCompositeAssertion(definition) {
240
+ return createAssertionReferenceRecord({
241
+ formatSummary: definition.formatSummary ?? null,
242
+ kind: 'composite',
243
+ name: definition.name,
244
+ run(input) {
245
+ return definition.assert(createCompositeCheckBuilder(input.source, input.message, input.location), ...input.parameters);
246
+ }
247
+ });
248
+ }
249
+
250
+ //# sourceMappingURL=assertion-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-extension.js","sourceRoot":"","sources":["../../../../source/assert/assertion-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,EAM5B,MAAM,8CAA8C,CAAC;AAatD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAGH,qBAAqB,EACxB,MAAM,yCAAyC,CAAC;AA6GjD,SAAS,0BAA0B,CAC/B,KAAwC;IAExC,OAAO;QACH,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YACxB,CAAC,CAAC,8BAA8B,KAAK,CAAC,KAAK,WAAW;YACtD,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;KACxD,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CACxB,KAAsB,EACtB,OAAe;IAEf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAC/B,KAA+C;IAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,UAAU,CAAC,IAAI;QACnD,OAAO,yBAAyB,CAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,IAAI,CAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,EAAE,yDAAyD,CAAC,CAAC;IAEzF,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACvC,MAAc,EACd,OAAsB,EACtB,QAAkC;IAElC,OAAO;QACH,SAAS,CAAC,YAAY;YAClB,OAAO,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,CAAC,MAAM;YACR,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjE,CAAC;QAED,oBAAoB,CAAC,MAAM,EAAE,QAAQ;YACjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC5F,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO;YAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACrF,CAAC;QAED,OAAO,CAAC,MAAM;YACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnE,CAAC;QAED,SAAS,CAAC,MAAM,EAAE,QAAQ;YACtB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAChF,CAAC;QAED,OAAO,CAAC,MAAM;YACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnE,CAAC;QAED,KAAK,CAAC,MAAM;YACR,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjE,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,QAAQ;YACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC/E,CAAC;QAED,KAAK,CAAC,MAAM,EAAE,QAAQ;YAClB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3E,CAAC;QAED,IAAI;YACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,MAAM;YACR,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjE,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI;YAC5B,IAAI,CAAC;gBACD,MAAM,IAAI,EAAE,CAAC;gBAEb,OAAO,0BAA0B,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,OAAO;oBACP,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBACxB,MAAM;iBACT,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,OAAO,0BAA0B,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,OAAO;oBACP,MAAM,EAAE;wBACJ,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC;wBACrC,MAAM,EAAE,KAAK;qBAChB;oBACD,MAAM;iBACT,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,IAAI;YACrB,IAAI,CAAC;gBACD,IAAI,EAAE,CAAC;gBAEP,OAAO,0BAA0B,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,OAAO;oBACP,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBACxB,MAAM;iBACT,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,OAAO,0BAA0B,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,OAAO;oBACP,MAAM,EAAE;wBACJ,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC;wBACrC,MAAM,EAAE,KAAK;qBAChB;oBACD,MAAM;iBACT,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,MAAM;YACX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACpE,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,QAAQ;YACxB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAClF,CAAC;QAED,kBAAkB,CAAC,MAAM,EAAE,QAAQ;YAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3F,CAAC;QAED,KAAK,CAAC,QAAQ;YACV,OAAO,6BAA6B,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,GAAG;YACnB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7E,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,QAAQ;YACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9E,CAAC;QAED,UAAU,CAAC,MAAM,EAAE,QAAQ;YACvB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjF,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,cAAc;YACzB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAClF,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,QAAQ;YACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC/E,CAAC;QAED,eAAe,CAAC,MAAM,EAAE,QAAQ;YAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACxF,CAAC;QAED,KAAK,CAAC,MAAM,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1E,CAAC;QAED,uBAAuB,CAAC,MAAM,EAAE,QAAQ;YACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,4BAA4B,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAChG,CAAC;QAED,YAAY,CAAC,MAAM,EAAE,QAAQ;YACzB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACpF,CAAC;QAED,QAAQ,CAAC,MAAM;YACX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACrE,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,QAAQ;YACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC/E,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,OAAO;YACpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,MAAM;YACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,MAAM;YACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,MAAM;YACT,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,MAAM;YACT,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAClE,CAAC;QAED,gBAAgB,CAAC,MAAM,EAAE,QAAQ;YAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACxF,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;YACxB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;YAExB,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;gBAE5B,OAAO,6BAA6B,CAAC,qBAAqB,CAAC;oBACvD,IAAI,EAAE,SAAS;oBACf,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;oBAC1C,MAAM;iBACT,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,OAAO,6BAA6B,CAAC,qBAAqB,CAAC;oBACvD,IAAI,EAAE,SAAS;oBACf,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;oBACjD,MAAM;iBACT,CAAC,CAAC,CAAC;YACR,CAAC;QACL,CAAC;QAED,UAAU,CAAC,MAAM,EAAE,QAAQ;YACvB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACjF,CAAC;QAED,MAAM,CAAC,MAAM;YACT,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,OAAO;YAChB,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;gBAErB,OAAO,6BAA6B,CAAC,qBAAqB,CAAC;oBACvD,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;oBAC1C,MAAM;iBACT,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,OAAO,6BAA6B,CAAC,qBAAqB,CAAC;oBACvD,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC9C,MAAM;iBACT,CAAC,CAAC,CAAC;YACR,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM;YACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAChE,CAAC;QAED,SAAS,CAAC,MAAM;YACZ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACrE,CAAC;KACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,wBAAwB,CAGtC,UAA2D;IACzD,OAAO,8BAA8B,CAAC;QAClC,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,IAAI;QAC/C,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,CAAC,KAAK;YACL,OAAO,UAAU,CAAC,MAAM,CACpB,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EACxE,GAAG,KAAK,CAAC,UAAU,CACtB,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ function requiredWellKnownSymbol(name) {
2
+ const value = Reflect.get(Symbol, name);
3
+ if (typeof value !== 'symbol') {
4
+ throw new TypeError(`Runtime does not provide Symbol.${name}.`);
5
+ }
6
+ return value;
7
+ }
8
+ export const asyncDisposeSymbol = requiredWellKnownSymbol('asyncDispose');
9
+ export const disposeSymbol = requiredWellKnownSymbol('dispose');
10
+ //# sourceMappingURL=disposal-symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposal-symbol.js","sourceRoot":"","sources":["../../../../source/doubles/disposal-symbol.ts"],"names":[],"mappings":"AAAA,SAAS,uBAAuB,CAAC,IAAgC;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,mCAAmC,IAAI,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,106 @@
1
+ export type CallableSignature = (...arguments_: readonly never[]) => unknown;
2
+ export type ConstructorSignature = new (...arguments_: readonly never[]) => unknown;
3
+ export type UnknownFunction<Result> = (...arguments_: readonly unknown[]) => Result;
4
+ export type UnknownConstructor<Instance> = new (...arguments_: readonly unknown[]) => Instance;
5
+ export type InvocationKind = 'call' | 'construction';
6
+ export type BehaviorMode = InvocationKind | 'both';
7
+ type RuleMatchKind = 'arguments' | 'index';
8
+ export type DoubleInvocation<Arguments extends readonly unknown[]> = {
9
+ readonly arguments: Arguments;
10
+ readonly index: number;
11
+ readonly kind: InvocationKind;
12
+ };
13
+ export type Invocation<Arguments extends readonly unknown[] = readonly unknown[]> = DoubleInvocation<Arguments>;
14
+ type CallInvocation = DoubleInvocation<readonly unknown[]> & {
15
+ readonly kind: 'call';
16
+ };
17
+ export type BehaviorAnswer = {
18
+ readonly answered: false;
19
+ } | {
20
+ readonly answered: true;
21
+ readonly value: unknown;
22
+ };
23
+ type FixedBehaviorKindByName = {
24
+ readonly calls: 'calls';
25
+ readonly callsCallback: 'calls-callback';
26
+ readonly callsCallbackAsync: 'calls-callback-async';
27
+ readonly constructs: 'constructs';
28
+ readonly rejects: 'rejects';
29
+ readonly resolves: 'resolves';
30
+ readonly returns: 'returns';
31
+ readonly throws: 'throws';
32
+ readonly yields: 'yields';
33
+ readonly yieldsAsync: 'yields-async';
34
+ readonly yieldsAsyncFrom: 'yields-async-from';
35
+ readonly yieldsFrom: 'yields-from';
36
+ };
37
+ export type FixedBehaviorKind = FixedBehaviorKindByName[keyof FixedBehaviorKindByName];
38
+ export type CallbackBehaviorKind = 'calls-callback' | 'calls-callback-async';
39
+ export type RuntimeFixedBehavior<Mode extends BehaviorMode, Result, Kind extends FixedBehaviorKind = FixedBehaviorKind> = {
40
+ readonly behaviorKind: Kind;
41
+ readonly mode: Mode;
42
+ produce: (invocation: Invocation, runtime: BehaviorRuntime) => unknown;
43
+ result: () => Result;
44
+ };
45
+ export type RuntimeSequenceBehavior<Mode extends BehaviorMode, Result, Entries extends readonly unknown[] = readonly unknown[]> = {
46
+ readonly behaviorKind: 'sequence';
47
+ readonly entries: Entries;
48
+ readonly mode: Mode;
49
+ result: () => Result;
50
+ };
51
+ type RuntimeBehaviorVariants<Mode extends BehaviorMode, Result, Kind extends FixedBehaviorKind, Entries extends readonly unknown[]> = {
52
+ readonly fixed: RuntimeFixedBehavior<Mode, Result, Kind>;
53
+ readonly sequence: RuntimeSequenceBehavior<Mode, Result, Entries>;
54
+ };
55
+ export type RuntimeBehavior<Mode extends BehaviorMode = BehaviorMode, Result = unknown, Kind extends FixedBehaviorKind = FixedBehaviorKind, Entries extends readonly unknown[] = readonly unknown[]> = RuntimeBehaviorVariants<Mode, Result, Kind, Entries>[keyof RuntimeBehaviorVariants<Mode, Result, Kind, Entries>];
56
+ type ArgumentCriterion<Kind extends InvocationKind, ArgumentPattern extends readonly unknown[]> = {
57
+ readonly expectedArguments: ArgumentPattern;
58
+ readonly invocationKind: Kind;
59
+ readonly kind: 'arguments';
60
+ };
61
+ type IndexCriterion<Kind extends InvocationKind> = {
62
+ readonly index: number;
63
+ readonly invocationKind: Kind;
64
+ readonly kind: 'index';
65
+ };
66
+ type RuleCriterion<Kind extends InvocationKind, ArgumentPattern extends readonly unknown[], MatchKind extends RuleMatchKind> = MatchKind extends 'arguments' ? ArgumentCriterion<Kind, ArgumentPattern> : IndexCriterion<Kind>;
67
+ export type RuntimeRule<Kind extends InvocationKind = InvocationKind, ArgumentPattern extends readonly unknown[] = readonly unknown[], Result = unknown, MatchKind extends RuleMatchKind = RuleMatchKind, Behavior extends RuntimeBehavior<BehaviorMode, Result> = RuntimeBehavior<BehaviorMode, Result>> = {
68
+ readonly behavior: Behavior;
69
+ readonly criterion: RuleCriterion<Kind, ArgumentPattern, MatchKind>;
70
+ };
71
+ export type RuntimeFallback = RuntimeBehavior | {
72
+ readonly call?: RuntimeBehavior;
73
+ readonly construction?: RuntimeBehavior;
74
+ };
75
+ export type RuntimeConfiguration = {
76
+ readonly answer: UnknownFunction<unknown> | null;
77
+ readonly fallback: RuntimeFallback | null;
78
+ readonly rules: readonly RuntimeRule[];
79
+ };
80
+ export type ConstructorReturnValue = CallableSignature | Readonly<Record<PropertyKey, unknown>>;
81
+ export type BehaviorRuntime = {
82
+ readonly nextSequenceEntry: (behavior: RuntimeBehavior) => unknown;
83
+ readonly trackAsyncIterator: (invocation: CallInvocation, source: () => AsyncIterator<unknown, unknown, unknown> | Iterator<unknown, unknown, unknown>) => AsyncIterableIterator<unknown>;
84
+ readonly trackSyncIterator: (invocation: CallInvocation, source: () => Iterator<unknown, unknown, unknown>) => IterableIterator<unknown>;
85
+ };
86
+ export declare function isUnknownFunction(value: unknown): value is UnknownFunction<unknown>;
87
+ export declare function isConstructorInstance(value: unknown): value is ConstructorReturnValue;
88
+ export declare function ensureConstructorInstance(instance: unknown, source: string): void;
89
+ export declare function returnsBehavior<Value>(value: Value): RuntimeFixedBehavior<'call', Value, 'returns'>;
90
+ export declare function resolvesBehavior<Value>(value: Value): RuntimeFixedBehavior<'call', Promise<Value>, 'resolves'>;
91
+ export declare function rejectsBehavior(reason: unknown): RuntimeFixedBehavior<'call', Promise<never>, 'rejects'>;
92
+ export declare function throwsBehavior(thrown: unknown): RuntimeFixedBehavior<'both', never, 'throws'>;
93
+ export declare function constructsBehavior<Instance>(instance: Instance): RuntimeFixedBehavior<'construction', Instance, 'constructs'>;
94
+ export declare function callsBehavior<Answer extends UnknownFunction<unknown>>(answer: Answer): RuntimeFixedBehavior<'both', ReturnType<Answer>, 'calls'>;
95
+ export declare function yieldsBehavior<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): RuntimeFixedBehavior<'call', Generator<YieldValue, ReturnValue, unknown>, 'yields'>;
96
+ export declare function yieldsFromBehavior<SourceFactory extends (...arguments_: readonly unknown[]) => Iterable<unknown>>(sourceFactory: SourceFactory): RuntimeFixedBehavior<'call', ReturnType<SourceFactory>, 'yields-from'>;
97
+ export declare function yieldsAsyncBehavior<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): RuntimeFixedBehavior<'call', AsyncGenerator<YieldValue, ReturnValue, unknown>, 'yields-async'>;
98
+ export declare function yieldsAsyncFromBehavior<SourceFactory extends (...arguments_: readonly unknown[]) => AsyncIterable<unknown> | Iterable<unknown>>(sourceFactory: SourceFactory): RuntimeFixedBehavior<'call', ReturnType<SourceFactory>, 'yields-async-from'>;
99
+ export declare function sequenceBehavior<Entries extends readonly [unknown, unknown, ...unknown[]], Result = unknown>(entries: Entries): RuntimeSequenceBehavior<'both', Result, Entries>;
100
+ export declare function isRuntimeBehavior(value: unknown): value is RuntimeBehavior;
101
+ export declare function isRuntimeRule(value: unknown): value is RuntimeRule;
102
+ export declare function answerFromBehavior(behavior: RuntimeBehavior, invocation: Invocation, runtime: BehaviorRuntime): BehaviorAnswer;
103
+ export declare function ruleMatches(configuredRule: RuntimeRule, invocation: Invocation): boolean;
104
+ export declare function fallbackForInvocation(fallback: RuntimeFallback, invocation: Invocation): RuntimeBehavior | null;
105
+ export {};
106
+ //# sourceMappingURL=double-behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"double-behavior.d.ts","sourceRoot":"","sources":["../../../../source/doubles/double-behavior.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,UAAU,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC;AACpF,MAAM,MAAM,eAAe,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,EAAE,SAAS,OAAO,EAAE,KAAK,MAAM,CAAC;AACpF,MAAM,MAAM,kBAAkB,CAAC,QAAQ,IAAI,KAAK,GAAG,UAAU,EAAE,SAAS,OAAO,EAAE,KAAK,QAAQ,CAAC;AAE/F,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,cAAc,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC;AACnD,KAAK,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI;IACjE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAChH,KAAK,cAAc,GAAG,gBAAgB,CAAC,SAAS,OAAO,EAAE,CAAC,GAAG;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;CAC5B,GAAG;IACA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,uBAAuB,CAAC,CAAC;AACvF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAE7E,MAAM,MAAM,oBAAoB,CAC5B,IAAI,SAAS,YAAY,EACzB,MAAM,EACN,IAAI,SAAS,iBAAiB,GAAG,iBAAiB,IAClD;IACA,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;IACvE,MAAM,EAAE,MAAM,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAC/B,IAAI,SAAS,YAAY,EACzB,MAAM,EACN,OAAO,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACvD;IACA,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,uBAAuB,CACxB,IAAI,SAAS,YAAY,EACzB,MAAM,EACN,IAAI,SAAS,iBAAiB,EAC9B,OAAO,SAAS,SAAS,OAAO,EAAE,IAClC;IACA,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,eAAe,CACvB,IAAI,SAAS,YAAY,GAAG,YAAY,EACxC,MAAM,GAAG,OAAO,EAChB,IAAI,SAAS,iBAAiB,GAAG,iBAAiB,EAClD,OAAO,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACvD,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CACpD,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAC7D,CAAC;AAEF,KAAK,iBAAiB,CAAC,IAAI,SAAS,cAAc,EAAE,eAAe,SAAS,SAAS,OAAO,EAAE,IAAI;IAC9F,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC9B,CAAC;AAEF,KAAK,cAAc,CAAC,IAAI,SAAS,cAAc,IAAI;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,CACd,IAAI,SAAS,cAAc,EAC3B,eAAe,SAAS,SAAS,OAAO,EAAE,EAC1C,SAAS,SAAS,aAAa,IAC/B,SAAS,SAAS,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAEpG,MAAM,MAAM,WAAW,CACnB,IAAI,SAAS,cAAc,GAAG,cAAc,EAC5C,eAAe,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAC/D,MAAM,GAAG,OAAO,EAChB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,QAAQ,SAAS,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,IAC9F;IACA,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhG,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;IACnE,QAAQ,CAAC,kBAAkB,EAAE,CACzB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAC3F,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,CACxB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAChD,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAIF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,CAEnF;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAErF;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIjF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAWnG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAW9G;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAWxG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAW7F;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EACvC,QAAQ,EAAE,QAAQ,GACnB,oBAAoB,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,CAa9D;AAED,wBAAgB,aAAa,CAAC,MAAM,SAAS,eAAe,CAAC,OAAO,CAAC,EACjE,MAAM,EAAE,MAAM,GACf,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAW3D;AAkDD,wBAAgB,cAAc,CAAC,UAAU,EAAE,WAAW,EAClD,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,WAAW,EAAE,WAAW,GACzB,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAoBrF;AAED,wBAAgB,kBAAkB,CAAC,aAAa,SAAS,CAAC,GAAG,UAAU,EAAE,SAAS,OAAO,EAAE,KAAK,QAAQ,CAAC,OAAO,CAAC,EAC7G,aAAa,EAAE,aAAa,GAC7B,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAoBxE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,EACvD,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,WAAW,EAAE,WAAW,GACzB,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAoBhG;AAED,wBAAgB,uBAAuB,CACnC,aAAa,SAAS,CAAC,GAAG,UAAU,EAAE,SAAS,OAAO,EAAE,KAAK,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EACzG,aAAa,EAAE,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,CAoB5G;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,EACxG,OAAO,EAAE,OAAO,GACjB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CASlD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAIlE;AAkCD,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,GACzB,cAAc,CAehB;AASD,wBAAgB,WAAW,CAAC,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAQxF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAM/G"}