@overkill-dev/run 0.0.3 → 0.0.5

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 (103) hide show
  1. package/assertion-protocol/assertion-evaluation.js +6 -0
  2. package/assertion-protocol/assertion-evaluation.js.map +1 -0
  3. package/assertion-protocol/assertion-node.js +33 -0
  4. package/assertion-protocol/assertion-node.js.map +1 -0
  5. package/assertion-protocol/assertion-reference.js +49 -0
  6. package/assertion-protocol/assertion-reference.js.map +1 -0
  7. package/assertion-protocol/assertions/boolean.js +12 -0
  8. package/assertion-protocol/assertions/boolean.js.map +1 -0
  9. package/assertion-protocol/assertions/collection.js +21 -0
  10. package/assertion-protocol/assertions/collection.js.map +1 -0
  11. package/assertion-protocol/assertions/dispatch.js +47 -0
  12. package/assertion-protocol/assertions/dispatch.js.map +1 -0
  13. package/assertion-protocol/assertions/equality.js +24 -0
  14. package/assertion-protocol/assertions/equality.js.map +1 -0
  15. package/assertion-protocol/assertions/fail.js +8 -0
  16. package/assertion-protocol/assertions/fail.js.map +1 -0
  17. package/assertion-protocol/assertions/numeric.js +43 -0
  18. package/assertion-protocol/assertions/numeric.js.map +1 -0
  19. package/assertion-protocol/assertions/partial.js +17 -0
  20. package/assertion-protocol/assertions/partial.js.map +1 -0
  21. package/assertion-protocol/assertions/presence.js +20 -0
  22. package/assertion-protocol/assertions/presence.js.map +1 -0
  23. package/assertion-protocol/assertions/string.js +33 -0
  24. package/assertion-protocol/assertions/string.js.map +1 -0
  25. package/assertion-protocol/assertions/type-shape.js +43 -0
  26. package/assertion-protocol/assertions/type-shape.js.map +1 -0
  27. package/assertion-protocol/collection-count.js +42 -0
  28. package/assertion-protocol/collection-count.js.map +1 -0
  29. package/assertion-protocol/evaluation.js +170 -0
  30. package/assertion-protocol/evaluation.js.map +1 -0
  31. package/assertion-protocol/partial-matching.js +13 -0
  32. package/assertion-protocol/partial-matching.js.map +1 -0
  33. package/assertion-protocol/source-location.js +76 -0
  34. package/assertion-protocol/source-location.js.map +1 -0
  35. package/assertion-protocol/thrown-error-record.js +17 -0
  36. package/assertion-protocol/thrown-error-record.js.map +1 -0
  37. package/assertion-protocol/thrown-matcher.js +201 -0
  38. package/assertion-protocol/thrown-matcher.js.map +1 -0
  39. package/compare/comparison-result.js +47 -0
  40. package/compare/comparison-result.js.map +1 -0
  41. package/compare/comparison-state.js +20 -0
  42. package/compare/comparison-state.js.map +1 -0
  43. package/compare/comparison.js +78 -0
  44. package/compare/comparison.js.map +1 -0
  45. package/compare/diff-path.js +37 -0
  46. package/compare/diff-path.js.map +1 -0
  47. package/compare/raw-comparison.js +285 -0
  48. package/compare/raw-comparison.js.map +1 -0
  49. package/compare/serialized-value-classification.js +99 -0
  50. package/compare/serialized-value-classification.js.map +1 -0
  51. package/compare/serialized-value-shape.js +12 -0
  52. package/compare/serialized-value-shape.js.map +1 -0
  53. package/compare/serialized-value-state.js +55 -0
  54. package/compare/serialized-value-state.js.map +1 -0
  55. package/compare/serialized-value.js +387 -0
  56. package/compare/serialized-value.js.map +1 -0
  57. package/compare/structured-diff.js +382 -0
  58. package/compare/structured-diff.js.map +1 -0
  59. package/compare/value-classification.js +112 -0
  60. package/compare/value-classification.js.map +1 -0
  61. package/diff/binary-diff.js +49 -0
  62. package/diff/binary-diff.js.map +1 -0
  63. package/diff/string-diff.js +22 -0
  64. package/diff/string-diff.js.map +1 -0
  65. package/engine/assertion-facade.js +361 -0
  66. package/engine/assertion-facade.js.map +1 -0
  67. package/engine/case-execution.js +408 -0
  68. package/engine/case-execution.js.map +1 -0
  69. package/engine/custom-assertion-recording.js +175 -0
  70. package/engine/custom-assertion-recording.js.map +1 -0
  71. package/engine/execution.d.ts +20 -0
  72. package/engine/execution.d.ts.map +1 -0
  73. package/engine/execution.js +323 -0
  74. package/engine/execution.js.map +1 -0
  75. package/engine/identity.js +5 -0
  76. package/engine/identity.js.map +1 -0
  77. package/engine/reporter-event-queue.js +23 -0
  78. package/engine/reporter-event-queue.js.map +1 -0
  79. package/engine/reporter.d.ts +5 -0
  80. package/engine/reporter.d.ts.map +1 -1
  81. package/engine/reporter.js +177 -0
  82. package/engine/reporter.js.map +1 -0
  83. package/engine/require-assertion-facade.js +127 -0
  84. package/engine/require-assertion-facade.js.map +1 -0
  85. package/engine/run-result.js +13 -0
  86. package/engine/run-result.js.map +1 -0
  87. package/engine/test-node.d.ts +17 -1
  88. package/engine/test-node.d.ts.map +1 -1
  89. package/engine/test-plan.d.ts +8 -2
  90. package/engine/test-plan.d.ts.map +1 -1
  91. package/package.json +8 -3
  92. package/packages/engine/assertion-protocol.entry-point.js +4 -0
  93. package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
  94. package/packages/run/run.entry-point.d.ts +2 -1
  95. package/packages/run/run.entry-point.d.ts.map +1 -1
  96. package/packages/run/run.entry-point.js +1 -0
  97. package/packages/run/run.entry-point.js.map +1 -1
  98. package/readme.md +7 -2
  99. package/run/run.d.ts +87 -36
  100. package/run/run.d.ts.map +1 -1
  101. package/run/run.js +182 -8
  102. package/run/run.js.map +1 -1
  103. package/sbom.cdx.json +22 -5
@@ -0,0 +1,387 @@
1
+ import { defaultSerializationBudget as serializedValueBudget } from "./serialized-value-shape.js";
2
+ import { constructorName, isArrayBufferValue, isArrayBufferView, isBufferValue, isDateValue, isErrorValue, isPromiseValue, isRegExpValue, isWeakMapValue, isWeakSetValue, prototypeIs } from "./serialized-value-classification.js";
3
+ import { accountValue, createState, nextReferenceId, referenceFor, truncation } from "./serialized-value-state.js";
4
+ export const defaultSerializationBudget = serializedValueBudget;
5
+ function symbolText(value) {
6
+ const globalKey = Symbol.keyFor(value);
7
+ if (globalKey !== undefined) {
8
+ return `Symbol.for(${globalKey})`;
9
+ }
10
+ return value.toString();
11
+ }
12
+ function serializePropertyKey(key) {
13
+ return typeof key === 'symbol'
14
+ ? { kind: 'symbol', value: symbolText(key) }
15
+ : { kind: 'string', value: String(key) };
16
+ }
17
+ function propertyKeySortText(key) {
18
+ return `${key.kind}:${key.value}`;
19
+ }
20
+ function sortProperties(entries) {
21
+ return entries.toSorted(function compareEntries(first, second) {
22
+ return propertyKeySortText(first.key).localeCompare(propertyKeySortText(second.key));
23
+ });
24
+ }
25
+ function objectDescriptors(value) {
26
+ try {
27
+ return {
28
+ descriptors: Object.getOwnPropertyDescriptors(value),
29
+ kind: 'available'
30
+ };
31
+ }
32
+ catch (error) {
33
+ return {
34
+ kind: 'unavailable',
35
+ reason: error instanceof Error ? error.message : 'object introspection failed'
36
+ };
37
+ }
38
+ }
39
+ function truncateString(value, state) {
40
+ if (Buffer.byteLength(value, 'utf8') <= state.budget.stringBytes) {
41
+ return { kind: 'string', truncation: null, value };
42
+ }
43
+ let output = '';
44
+ for (const character of value) {
45
+ const nextOutput = `${output}${character}`;
46
+ if (Buffer.byteLength(nextOutput, 'utf8') > state.budget.stringBytes) {
47
+ break;
48
+ }
49
+ output = nextOutput;
50
+ }
51
+ return {
52
+ kind: 'string',
53
+ truncation: truncation('string-bytes', state.budget.stringBytes),
54
+ value: output
55
+ };
56
+ }
57
+ function serializeNumber(value) {
58
+ if (Object.is(value, -0)) {
59
+ return { kind: 'number', value: '-0' };
60
+ }
61
+ if (Number.isNaN(value)) {
62
+ return { kind: 'number', value: 'NaN' };
63
+ }
64
+ if (value === Number.POSITIVE_INFINITY) {
65
+ return { kind: 'number', value: 'Infinity' };
66
+ }
67
+ if (value === Number.NEGATIVE_INFINITY) {
68
+ return { kind: 'number', value: '-Infinity' };
69
+ }
70
+ return { kind: 'number', value };
71
+ }
72
+ function serializeEmptyPrimitive(value) {
73
+ if (value === null) {
74
+ return { kind: 'null' };
75
+ }
76
+ if (value === undefined) {
77
+ return { kind: 'undefined' };
78
+ }
79
+ return null;
80
+ }
81
+ function serializeScalarPrimitive(value) {
82
+ if (typeof value === 'boolean') {
83
+ return { kind: 'boolean', value };
84
+ }
85
+ if (typeof value === 'number') {
86
+ return serializeNumber(value);
87
+ }
88
+ if (typeof value === 'bigint') {
89
+ return { kind: 'bigint', value: value.toString() };
90
+ }
91
+ return null;
92
+ }
93
+ function serializeTextPrimitive(value, state) {
94
+ if (typeof value === 'string') {
95
+ return truncateString(value, state);
96
+ }
97
+ if (typeof value === 'symbol') {
98
+ return { kind: 'symbol', value: symbolText(value) };
99
+ }
100
+ return null;
101
+ }
102
+ function serializePrimitive(value, state) {
103
+ return serializeEmptyPrimitive(value) ?? serializeScalarPrimitive(value) ?? serializeTextPrimitive(value, state);
104
+ }
105
+ function isSerializableObject(value) {
106
+ return value !== null && typeof value === 'object';
107
+ }
108
+ function objectPropertyEntries(value, state, depth, serialize) {
109
+ const descriptorResult = objectDescriptors(value);
110
+ if (descriptorResult.kind === 'unavailable') {
111
+ return [
112
+ {
113
+ key: { kind: 'string', value: '<introspection>' },
114
+ value: { kind: 'unavailable', reason: descriptorResult.reason }
115
+ }
116
+ ];
117
+ }
118
+ const { descriptors } = descriptorResult;
119
+ const keys = Reflect.ownKeys(descriptors).filter(function isEnumerableDataKey(key) {
120
+ const descriptor = descriptors[key];
121
+ return descriptor?.enumerable === true;
122
+ });
123
+ const visibleKeys = keys.slice(0, state.budget.objectEntries);
124
+ return sortProperties(visibleKeys.map(function serializeEntry(key) {
125
+ const descriptor = descriptors[key];
126
+ const keyValue = serializePropertyKey(key);
127
+ if (descriptor === undefined || !Object.hasOwn(descriptor, 'value')) {
128
+ return {
129
+ key: keyValue,
130
+ value: { kind: 'unavailable', reason: 'accessor property was not invoked' }
131
+ };
132
+ }
133
+ return {
134
+ key: keyValue,
135
+ value: serialize(descriptor.value, state, depth + 1)
136
+ };
137
+ }));
138
+ }
139
+ function propertyTruncation(value, state) {
140
+ const descriptorResult = objectDescriptors(value);
141
+ if (descriptorResult.kind === 'unavailable') {
142
+ return null;
143
+ }
144
+ const keys = Reflect.ownKeys(descriptorResult.descriptors);
145
+ const enumerableKeys = keys.filter(function isEnumerableKey(key) {
146
+ return descriptorResult.descriptors[key]?.enumerable === true;
147
+ });
148
+ return enumerableKeys.length > state.budget.objectEntries
149
+ ? truncation('object-entries', state.budget.objectEntries)
150
+ : null;
151
+ }
152
+ function bytesFrom(value) {
153
+ if (value instanceof ArrayBuffer) {
154
+ return new Uint8Array(value);
155
+ }
156
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
157
+ }
158
+ function serializedBytes(value, state) {
159
+ const bytes = bytesFrom(value);
160
+ const visibleBytes = Array.from(bytes.slice(0, state.budget.arrayEntries));
161
+ return {
162
+ byteLength: bytes.byteLength,
163
+ bytes: visibleBytes,
164
+ truncation: bytes.byteLength > visibleBytes.length
165
+ ? truncation('array-entries', state.budget.arrayEntries)
166
+ : null
167
+ };
168
+ }
169
+ function serializeArray(value, state, depth, serialize) {
170
+ const visibleLength = Math.min(value.length, state.budget.arrayEntries);
171
+ const entries = [];
172
+ for (let index = 0; index < visibleLength; index += 1) {
173
+ if (Object.hasOwn(value, index)) {
174
+ entries.push({
175
+ key: { kind: 'string', value: String(index) },
176
+ value: serialize(value[index], state, depth + 1)
177
+ });
178
+ }
179
+ else {
180
+ entries.push({
181
+ key: { kind: 'string', value: String(index) },
182
+ value: { kind: 'unavailable', reason: 'array hole' }
183
+ });
184
+ }
185
+ }
186
+ return {
187
+ entries,
188
+ kind: 'array',
189
+ length: value.length,
190
+ truncation: value.length > visibleLength ? truncation('array-entries', state.budget.arrayEntries) : null
191
+ };
192
+ }
193
+ function mapEntries(value, state) {
194
+ try {
195
+ const entries = Array.from(value);
196
+ return entries.slice(0, state.budget.objectEntries);
197
+ }
198
+ catch {
199
+ return null;
200
+ }
201
+ }
202
+ function serializeMap(value, state, depth, serialize) {
203
+ const entries = mapEntries(value, state);
204
+ if (entries === null) {
205
+ return { kind: 'unavailable', reason: 'map introspection failed' };
206
+ }
207
+ return {
208
+ entries: entries.map(function serializeEntry([key, entryValue]) {
209
+ return {
210
+ key: serialize(key, state, depth + 1),
211
+ value: serialize(entryValue, state, depth + 1)
212
+ };
213
+ }),
214
+ kind: 'map',
215
+ size: value.size,
216
+ truncation: value.size > entries.length ? truncation('object-entries', state.budget.objectEntries) : null
217
+ };
218
+ }
219
+ function setValues(value, state) {
220
+ try {
221
+ return Array.from(value).slice(0, state.budget.objectEntries);
222
+ }
223
+ catch {
224
+ return null;
225
+ }
226
+ }
227
+ function serializeSet(value, state, depth, serialize) {
228
+ const values = setValues(value, state);
229
+ if (values === null) {
230
+ return { kind: 'unavailable', reason: 'set introspection failed' };
231
+ }
232
+ return {
233
+ kind: 'set',
234
+ size: value.size,
235
+ truncation: value.size > values.length ? truncation('object-entries', state.budget.objectEntries) : null,
236
+ values: values.map(function serializeSetValue(valueEntry) {
237
+ return serialize(valueEntry, state, depth + 1);
238
+ })
239
+ };
240
+ }
241
+ function serializeFunction(value, state) {
242
+ const reference = referenceFor(state, value);
243
+ if (reference !== null) {
244
+ return { kind: 'circular', reference };
245
+ }
246
+ return {
247
+ id: nextReferenceId(state) - 1,
248
+ kind: 'function',
249
+ name: value.name === undefined || value.name.length === 0 ? null : value.name
250
+ };
251
+ }
252
+ function isMapValue(value) {
253
+ return prototypeIs(value, Map.prototype);
254
+ }
255
+ function isSetValue(value) {
256
+ return prototypeIs(value, Set.prototype);
257
+ }
258
+ function typedArrayLength(value) {
259
+ const lengthValue = Reflect.get(value, 'length');
260
+ return typeof lengthValue === 'number' ? lengthValue : value.byteLength;
261
+ }
262
+ function serializeArrayObject(value, context) {
263
+ return Array.isArray(value) ? serializeArray(value, context.state, context.depth, context.serialize) : null;
264
+ }
265
+ function serializeBufferObject(value, context) {
266
+ return isBufferValue(value)
267
+ ? {
268
+ constructorName: 'Buffer',
269
+ kind: 'typed-array',
270
+ length: value.length,
271
+ ...serializedBytes(value, context.state)
272
+ }
273
+ : null;
274
+ }
275
+ function serializeArrayBufferViewObject(value, context) {
276
+ if (!isArrayBufferView(value)) {
277
+ return null;
278
+ }
279
+ return value instanceof DataView
280
+ ? { kind: 'data-view', ...serializedBytes(value, context.state) }
281
+ : {
282
+ constructorName: constructorName(value),
283
+ kind: 'typed-array',
284
+ length: typedArrayLength(value),
285
+ ...serializedBytes(value, context.state)
286
+ };
287
+ }
288
+ function serializeArrayBufferObject(value, context) {
289
+ return isArrayBufferValue(value) ? { kind: 'array-buffer', ...serializedBytes(value, context.state) } : null;
290
+ }
291
+ function serializeMapObject(value, context) {
292
+ return isMapValue(value) ? serializeMap(value, context.state, context.depth, context.serialize) : null;
293
+ }
294
+ function serializeSetObject(value, context) {
295
+ return isSetValue(value) ? serializeSet(value, context.state, context.depth, context.serialize) : null;
296
+ }
297
+ function serializeDateObject(value) {
298
+ if (!isDateValue(value)) {
299
+ return null;
300
+ }
301
+ const time = value.getTime();
302
+ return { kind: 'date', value: Number.isNaN(time) ? null : value.toISOString() };
303
+ }
304
+ function serializeRegExpObject(value) {
305
+ return isRegExpValue(value) ? { flags: value.flags, kind: 'regexp', source: value.source } : null;
306
+ }
307
+ function serializeErrorObject(value, context) {
308
+ return isErrorValue(value)
309
+ ? {
310
+ entries: objectPropertyEntries(value, context.state, context.depth, context.serialize),
311
+ kind: 'error',
312
+ message: value.message,
313
+ name: value.name,
314
+ truncation: propertyTruncation(value, context.state)
315
+ }
316
+ : null;
317
+ }
318
+ function serializeOpaqueObject(value) {
319
+ if (isPromiseValue(value)) {
320
+ return { kind: 'opaque', type: 'promise' };
321
+ }
322
+ if (isWeakMapValue(value)) {
323
+ return { kind: 'opaque', type: 'weak-map' };
324
+ }
325
+ return isWeakSetValue(value) ? { kind: 'opaque', type: 'weak-set' } : null;
326
+ }
327
+ const objectSerializers = [
328
+ serializeArrayObject,
329
+ serializeBufferObject,
330
+ serializeArrayBufferViewObject,
331
+ serializeArrayBufferObject,
332
+ serializeMapObject,
333
+ serializeSetObject,
334
+ serializeDateObject,
335
+ serializeRegExpObject,
336
+ serializeErrorObject,
337
+ serializeOpaqueObject
338
+ ];
339
+ function specializedObject(value, context) {
340
+ for (const serializer of objectSerializers) {
341
+ const serialized = serializer(value, context);
342
+ if (serialized !== null) {
343
+ return serialized;
344
+ }
345
+ }
346
+ return null;
347
+ }
348
+ function plainObject(value, context) {
349
+ return {
350
+ constructorName: constructorName(value),
351
+ entries: objectPropertyEntries(value, context.state, context.depth, context.serialize),
352
+ kind: 'object',
353
+ truncation: propertyTruncation(value, context.state)
354
+ };
355
+ }
356
+ function serializeObject(value, state, depth, serialize) {
357
+ if (depth > state.budget.depth) {
358
+ return {
359
+ kind: 'unavailable',
360
+ reason: `depth budget reached: ${state.budget.depth}`
361
+ };
362
+ }
363
+ const reference = referenceFor(state, value);
364
+ if (reference !== null) {
365
+ return { kind: 'circular', reference };
366
+ }
367
+ const context = { depth, serialize, state };
368
+ return specializedObject(value, context) ?? plainObject(value, context);
369
+ }
370
+ function serializeAny(value, state, depth) {
371
+ const primitive = serializePrimitive(value, state);
372
+ if (primitive !== null) {
373
+ return accountValue(state, primitive);
374
+ }
375
+ if (typeof value === 'function') {
376
+ return accountValue(state, serializeFunction(value, state));
377
+ }
378
+ if (isSerializableObject(value)) {
379
+ return accountValue(state, serializeObject(value, state, depth, serializeAny));
380
+ }
381
+ return accountValue(state, { kind: 'unavailable', reason: `unsupported value type: ${typeof value}` });
382
+ }
383
+ export function serializeValue(value) {
384
+ return serializeAny(value, createState(defaultSerializationBudget), 0);
385
+ }
386
+
387
+ //# sourceMappingURL=serialized-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-value.js","sourceRoot":"","sources":["../../../../source/compare/serialized-value.ts"],"names":[],"mappings":"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"}