@overkill-dev/bench 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 (32) hide show
  1. package/LICENSE +21 -0
  2. package/authoring/test-node-authoring.d.ts +58 -0
  3. package/authoring/test-node-authoring.d.ts.map +1 -0
  4. package/authoring/test-node-authoring.js +165 -0
  5. package/authoring/test-node-authoring.js.map +1 -0
  6. package/package.json +39 -6
  7. package/packages/bench/bench.entry-point.d.ts +5 -0
  8. package/packages/bench/bench.entry-point.d.ts.map +1 -0
  9. package/packages/bench/bench.entry-point.js +2 -0
  10. package/packages/bench/bench.entry-point.js.map +1 -0
  11. package/packages/test/authoring-input.js +27 -0
  12. package/packages/test/authoring-input.js.map +1 -0
  13. package/packages/test/authoring-source-locations.js +99 -0
  14. package/packages/test/authoring-source-locations.js.map +1 -0
  15. package/packages/test/authoring-test-data.d.ts +12 -0
  16. package/packages/test/authoring-test-data.d.ts.map +1 -0
  17. package/packages/test/authoring-test-data.js +132 -0
  18. package/packages/test/authoring-test-data.js.map +1 -0
  19. package/packages/test/resource-wrapper-composition.js +334 -0
  20. package/packages/test/resource-wrapper-composition.js.map +1 -0
  21. package/packages/test/resource-wrapper-data.js +71 -0
  22. package/packages/test/resource-wrapper-data.js.map +1 -0
  23. package/packages/test/resource-wrapper-runtime-scope.js +44 -0
  24. package/packages/test/resource-wrapper-runtime-scope.js.map +1 -0
  25. package/packages/test/resource-wrapper-session.js +3 -0
  26. package/packages/test/resource-wrapper-session.js.map +1 -0
  27. package/packages/test/table-authoring.d.ts +17 -0
  28. package/packages/test/table-authoring.d.ts.map +1 -0
  29. package/packages/test/table-authoring.js +77 -0
  30. package/packages/test/table-authoring.js.map +1 -0
  31. package/readme.md +32 -4
  32. package/sbom.cdx.json +84 -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,58 @@
1
+ import { type Suite, type Table, type TestBody, type TestCase, type TestControlsInput, type TestNode, type TestScope } from '@overkill-dev/engine';
2
+ import { type AuthoringAnnotations, type AuthoringControls } from '../packages/test/authoring-test-data.ts';
3
+ import { type TableDefinition } from '../packages/test/table-authoring.ts';
4
+ type TestDefinition<ControlsType extends TestControlsInput = AuthoringControls, Scope extends TestScope = TestScope> = {
5
+ readonly annotations?: AuthoringAnnotations;
6
+ readonly body: (scope: Scope) => ReturnType<TestBody>;
7
+ readonly controls?: ControlsType;
8
+ readonly title: string;
9
+ };
10
+ type SkippedTestDefinition<ControlsType extends TestControlsInput = AuthoringControls> = {
11
+ readonly annotations?: AuthoringAnnotations;
12
+ readonly controls?: ControlsType;
13
+ readonly reason: string;
14
+ readonly title: string;
15
+ };
16
+ type SuiteDefinition<ControlsType extends TestControlsInput = AuthoringControls> = {
17
+ readonly annotations?: AuthoringAnnotations;
18
+ readonly children: readonly TestNode[];
19
+ readonly controls?: ControlsType;
20
+ readonly title: string;
21
+ };
22
+ type MacroFactory<MacroParameters extends readonly unknown[], Node extends TestNode> = (...parameters: MacroParameters) => Node;
23
+ type ParameterizedTestBody<Data> = (scope: TestScope, data: Data) => ReturnType<TestBody>;
24
+ type ObjectSkippedTestAuthorInput<ControlsType extends TestControlsInput> = readonly [
25
+ definition: Readonly<SkippedTestDefinition<ControlsType>>
26
+ ];
27
+ type ObjectSuiteAuthorInput<ControlsType extends TestControlsInput> = readonly [
28
+ definition: Readonly<SuiteDefinition<ControlsType>>
29
+ ];
30
+ type PositionalSkippedTestAuthorInput = readonly [title: string, reason: string];
31
+ type PositionalSuiteAuthorInput = readonly [title: string, children: readonly TestNode[]];
32
+ type ObjectScopedTestAuthorInput<ControlsType extends TestControlsInput, Scope extends TestScope> = readonly [
33
+ definition: Readonly<TestDefinition<ControlsType, Scope>>
34
+ ];
35
+ type PositionalTestAuthorInput<Scope extends TestScope> = readonly [
36
+ title: string,
37
+ body: (scope: Scope) => ReturnType<TestBody>
38
+ ];
39
+ type DefaultTestAuthor = {
40
+ (...input: ObjectScopedTestAuthorInput<AuthoringControls, TestScope>): TestCase;
41
+ (...input: PositionalTestAuthorInput<TestScope>): TestCase;
42
+ };
43
+ type DefaultSkippedTestAuthor = {
44
+ (...input: ObjectSkippedTestAuthorInput<AuthoringControls>): TestCase;
45
+ (...input: PositionalSkippedTestAuthorInput): TestCase;
46
+ };
47
+ type DefaultSuiteAuthor = {
48
+ (...input: ObjectSuiteAuthorInput<AuthoringControls>): Suite;
49
+ (...input: PositionalSuiteAuthorInput): Suite;
50
+ };
51
+ export declare const test: DefaultTestAuthor;
52
+ export declare const skippedTest: DefaultSkippedTestAuthor;
53
+ export declare const suite: DefaultSuiteAuthor;
54
+ export declare function table<Row>(definition: TableDefinition<Row>): Table;
55
+ export declare function defineMacro<const MacroParameters extends readonly unknown[], Node extends TestNode>(factory: MacroFactory<MacroParameters, Node>): MacroFactory<MacroParameters, Node>;
56
+ export declare function defineParameterizedTestBody<Data>(body: ParameterizedTestBody<Data>): (data: Data) => TestBody;
57
+ export {};
58
+ //# sourceMappingURL=test-node-authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-node-authoring.d.ts","sourceRoot":"","sources":["../../../../source/authoring/test-node-authoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import { createSuite, createSkippedTestCase, createTestCase, ownsTestNode } from "@overkill-dev/engine";
2
+ import { assertionBodyForActiveMacro, defineParameterizedTestBodyFactory, definitionLocationsForAuthoringCall, runMacroWithDefinitionLocations } from "../packages/test/authoring-source-locations.js";
3
+ import { createAuthoringAnnotations, createAuthoringControls, readAuthoringAnnotations, readAuthoringControls } from "../packages/test/authoring-test-data.js";
4
+ import { readAuthoringRecord, readAuthoringString, readAuthoringTestBody } from "../packages/test/authoring-input.js";
5
+ import { createAuthoredTable } from "../packages/test/table-authoring.js";
6
+ import { attachComposedResourceActions } from "../packages/test/resource-wrapper-composition.js";
7
+ const singleArgumentCount = 1;
8
+ const positionalArgumentCount = 2;
9
+ const testArgumentsError = 'test() requires (title, body) or ({ title, annotations?, controls?, body }).';
10
+ const skippedTestArgumentsError = 'skippedTest() requires (title, reason) or ({ title, annotations?, controls?, reason }).';
11
+ const suiteArgumentsError = 'suite() requires (title, children) or ({ title, annotations?, controls?, children }).';
12
+ function readReason(value) {
13
+ if (typeof value !== 'string') {
14
+ throw new TypeError(skippedTestArgumentsError);
15
+ }
16
+ return value;
17
+ }
18
+ function readChildren(value, message) {
19
+ if (!Array.isArray(value)) {
20
+ throw new TypeError(message);
21
+ }
22
+ const children = [];
23
+ for (const child of value) {
24
+ children.push(child);
25
+ }
26
+ return children;
27
+ }
28
+ function readTestDefinition(value) {
29
+ const definition = readAuthoringRecord(value, testArgumentsError);
30
+ return {
31
+ annotations: readAuthoringAnnotations(definition.annotations ?? {}),
32
+ body: readAuthoringTestBody(definition.body),
33
+ controls: readAuthoringControls(definition.controls ?? {}),
34
+ title: readAuthoringString(definition.title, testArgumentsError)
35
+ };
36
+ }
37
+ function readSkippedTestDefinition(value) {
38
+ const definition = readAuthoringRecord(value, skippedTestArgumentsError);
39
+ return {
40
+ annotations: readAuthoringAnnotations(definition.annotations ?? {}),
41
+ controls: readAuthoringControls(definition.controls ?? {}),
42
+ reason: readReason(definition.reason),
43
+ title: readAuthoringString(definition.title, skippedTestArgumentsError)
44
+ };
45
+ }
46
+ function readSuiteDefinition(value) {
47
+ const definition = readAuthoringRecord(value, suiteArgumentsError);
48
+ return {
49
+ annotations: readAuthoringAnnotations(definition.annotations ?? {}),
50
+ children: readChildren(definition.children, suiteArgumentsError),
51
+ controls: readAuthoringControls(definition.controls ?? {}),
52
+ title: readAuthoringString(definition.title, suiteArgumentsError)
53
+ };
54
+ }
55
+ function composeFacadeBody(facadeActions, body) {
56
+ return facadeActions.length === 0
57
+ ? body
58
+ : attachComposedResourceActions(facadeActions, body, 'createTestFacade');
59
+ }
60
+ export function createAuthoredTest(facadeAnnotations, facadeControls, facadeActions, ...input) {
61
+ if (input.length === singleArgumentCount) {
62
+ const definition = readTestDefinition(input[0]);
63
+ return createTestCase({
64
+ annotations: createAuthoringAnnotations(facadeAnnotations, definition.annotations),
65
+ body: assertionBodyForActiveMacro(composeFacadeBody(facadeActions, definition.body)),
66
+ controls: createAuthoringControls(facadeControls, definition.controls),
67
+ definitionLocations: definitionLocationsForAuthoringCall(),
68
+ title: definition.title
69
+ });
70
+ }
71
+ if (input.length === positionalArgumentCount) {
72
+ const [name, body] = input;
73
+ const testBody = readAuthoringTestBody(body);
74
+ return createTestCase({
75
+ annotations: createAuthoringAnnotations(facadeAnnotations, {}),
76
+ body: assertionBodyForActiveMacro(composeFacadeBody(facadeActions, testBody)),
77
+ controls: createAuthoringControls(facadeControls, {}),
78
+ definitionLocations: definitionLocationsForAuthoringCall(),
79
+ title: readAuthoringString(name, testArgumentsError)
80
+ });
81
+ }
82
+ throw new TypeError(testArgumentsError);
83
+ }
84
+ export const test = function (...input) {
85
+ return createAuthoredTest({}, {}, [], ...input);
86
+ };
87
+ export function createAuthoredSkippedTest(facadeAnnotations, facadeControls, ...input) {
88
+ if (input.length === singleArgumentCount) {
89
+ const definition = readSkippedTestDefinition(input[0]);
90
+ return createSkippedTestCase({
91
+ annotations: createAuthoringAnnotations(facadeAnnotations, definition.annotations),
92
+ controls: createAuthoringControls(facadeControls, definition.controls),
93
+ definitionLocations: definitionLocationsForAuthoringCall(),
94
+ reason: definition.reason,
95
+ title: definition.title
96
+ });
97
+ }
98
+ if (input.length === positionalArgumentCount) {
99
+ const [title, reason] = input;
100
+ return createSkippedTestCase({
101
+ annotations: createAuthoringAnnotations(facadeAnnotations, {}),
102
+ controls: createAuthoringControls(facadeControls, {}),
103
+ definitionLocations: definitionLocationsForAuthoringCall(),
104
+ reason: readReason(reason),
105
+ title: readAuthoringString(title, skippedTestArgumentsError)
106
+ });
107
+ }
108
+ throw new TypeError(skippedTestArgumentsError);
109
+ }
110
+ export const skippedTest = function (...input) {
111
+ return createAuthoredSkippedTest({}, {}, ...input);
112
+ };
113
+ export function createAuthoredSuite(facadeAnnotations, facadeControls, ...input) {
114
+ if (input.length === singleArgumentCount) {
115
+ const definition = readSuiteDefinition(input[0]);
116
+ return createSuite({
117
+ annotations: createAuthoringAnnotations(facadeAnnotations, definition.annotations),
118
+ children: definition.children,
119
+ controls: createAuthoringControls(facadeControls, definition.controls),
120
+ definitionLocations: definitionLocationsForAuthoringCall(),
121
+ title: definition.title
122
+ });
123
+ }
124
+ if (input.length === positionalArgumentCount) {
125
+ const [name, children] = input;
126
+ return createSuite({
127
+ annotations: createAuthoringAnnotations(facadeAnnotations, {}),
128
+ children: readChildren(children, suiteArgumentsError),
129
+ controls: createAuthoringControls(facadeControls, {}),
130
+ definitionLocations: definitionLocationsForAuthoringCall(),
131
+ title: readAuthoringString(name, suiteArgumentsError)
132
+ });
133
+ }
134
+ throw new TypeError(suiteArgumentsError);
135
+ }
136
+ export const suite = function (...input) {
137
+ return createAuthoredSuite({}, {}, ...input);
138
+ };
139
+ export function table(definition) {
140
+ return createAuthoredTable({}, {}, definition, []);
141
+ }
142
+ function createMacroNode(factory, parameters) {
143
+ const node = factory(...parameters);
144
+ if (!ownsTestNode(node)) {
145
+ throw new TypeError('defineMacro() factory must return a default-engine TestNode value.');
146
+ }
147
+ return node;
148
+ }
149
+ export function defineMacro(factory) {
150
+ if (typeof factory !== 'function') {
151
+ throw new TypeError('defineMacro() requires a factory function.');
152
+ }
153
+ return function runMacro(...parameters) {
154
+ return runMacroWithDefinitionLocations(function createNode() {
155
+ return createMacroNode(factory, parameters);
156
+ });
157
+ };
158
+ }
159
+ export function defineParameterizedTestBody(body) {
160
+ if (typeof body !== 'function') {
161
+ throw new TypeError('defineParameterizedTestBody() requires a body function.');
162
+ }
163
+ return defineParameterizedTestBodyFactory(body);
164
+ }
165
+ //# sourceMappingURL=test-node-authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-node-authoring.js","sourceRoot":"","sources":["../../../../source/authoring/test-node-authoring.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,40 @@
1
1
  {
2
- "name": "@overkill-dev/bench",
3
- "version": "0.0.1",
4
- "description": "Placeholder claiming the npm package name \"@overkill-dev/bench\" so a trusted publisher can be configured. See https://github.com/npm/cli/issues/8544.",
5
- "license": "MIT",
6
- "deprecated": "Placeholder published as a workaround so a Trusted Publisher could be configured. See https://github.com/npm/cli/issues/8544."
7
- }
2
+ "author": "Christian Rackerseder <git@echooff.de>",
3
+ "bugs": {
4
+ "url": "https://github.com/enormora/overkill/issues"
5
+ },
6
+ "description": "Ordinary test-node authoring for Overkill benchmark suites.",
7
+ "engines": {
8
+ "node": "^26.9.0"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "import": "./packages/bench/bench.entry-point.js",
13
+ "types": "./packages/bench/bench.entry-point.d.ts"
14
+ }
15
+ },
16
+ "homepage": "https://github.com/enormora/overkill#readme",
17
+ "keywords": [
18
+ "tdd",
19
+ "test",
20
+ "tests"
21
+ ],
22
+ "license": "MIT",
23
+ "name": "@overkill-dev/bench",
24
+ "peerDependencies": {
25
+ "@overkill-dev/engine": "0.0.49",
26
+ "@overkill-dev/resources": "0.0.10",
27
+ "@overkill-dev/run": "0.0.64"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/enormora/overkill.git"
32
+ },
33
+ "sideEffects": [
34
+ "./packages/test/authoring-source-locations.js",
35
+ "./packages/test/authoring-test-data.js",
36
+ "./packages/test/resource-wrapper-composition.js"
37
+ ],
38
+ "type": "module",
39
+ "version": "0.0.2"
40
+ }
@@ -0,0 +1,5 @@
1
+ export { defineMacro, defineParameterizedTestBody, skippedTest, suite, table, test } from '../../authoring/test-node-authoring.ts';
2
+ export type { AuthoringAnnotations, AuthoringControls } from '../test/authoring-test-data.ts';
3
+ export type { ParameterizedTestScope, TableDefinition, TableTestBody } from '../test/table-authoring.ts';
4
+ export type { Suite, Table, TestBody, TestCase, TestNode, TestScope, TestScopeAssertContext } from '@overkill-dev/engine';
5
+ //# sourceMappingURL=bench.entry-point.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/bench/bench.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,2BAA2B,EAC3B,WAAW,EACX,KAAK,EACL,KAAK,EACL,IAAI,EACP,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACR,oBAAoB,EACpB,iBAAiB,EACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACR,sBAAsB,EACtB,eAAe,EACf,aAAa,EAChB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,sBAAsB,EACzB,MAAM,sBAAiC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { defineMacro, defineParameterizedTestBody, skippedTest, suite, table, test } from "../../authoring/test-node-authoring.js";
2
+ //# sourceMappingURL=bench.entry-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/bench/bench.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,2BAA2B,EAC3B,WAAW,EACX,KAAK,EACL,KAAK,EACL,IAAI,EACP,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,27 @@
1
+ export function isAuthoringRecord(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ export function readAuthoringRecord(value, message) {
5
+ if (!isAuthoringRecord(value)) {
6
+ throw new TypeError(message);
7
+ }
8
+ return value;
9
+ }
10
+ export function readAuthoringString(value, message) {
11
+ if (typeof value !== 'string') {
12
+ throw new TypeError(message);
13
+ }
14
+ return value;
15
+ }
16
+ function isAuthoringTestBody(value) {
17
+ return typeof value === 'function';
18
+ }
19
+
20
+ export function readAuthoringTestBody(value) {
21
+ if (!isAuthoringTestBody(value)) {
22
+ throw new TypeError('Test case body must be a function.');
23
+ }
24
+ return value;
25
+ }
26
+
27
+ //# sourceMappingURL=authoring-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-input.js","sourceRoot":"","sources":["../../../../../source/packages/test/authoring-input.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,OAAe;IAC/D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,OAAe;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACvC,CAAC;;MAMK,UAAU,qBAAqB,CAAC,KAAc;IAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { attachTestBodyResourceAttachments, captureSourceLocation, forwardAssertionSourceLocations, hasTestBodyResourceAttachments, readTestBodyResourceAttachments, unknownSourceLocation } from "@overkill-dev/engine";
2
+ const macroDefinitionContextKey = Symbol.for('@overkill-dev/macro-definition-context');
3
+ const definitionLocationCaptureStackKey = Symbol.for('@overkill-dev/definition-location-capture-stack');
4
+ function isMacroDefinitionContext(value) {
5
+ return typeof value === 'object' && value !== null &&
6
+ Object.hasOwn(value, 'locations') && typeof Reflect.get(value, 'locations') === 'function' &&
7
+ Object.hasOwn(value, 'run') && typeof Reflect.get(value, 'run') === 'function';
8
+ }
9
+ function createMacroDefinitionContext() {
10
+ const locations = [];
11
+ return {
12
+ locations() {
13
+ return locations.at(-1) ?? [];
14
+ },
15
+ run(sourceLocations, body) {
16
+ locations.push(sourceLocations);
17
+ try {
18
+ return body();
19
+ }
20
+ finally {
21
+ locations.pop();
22
+ }
23
+ }
24
+ };
25
+ }
26
+ function macroDefinitionContext() {
27
+ const existing = Reflect.get(globalThis, macroDefinitionContextKey);
28
+ if (isMacroDefinitionContext(existing)) {
29
+ return existing;
30
+ }
31
+ const context = createMacroDefinitionContext();
32
+ Reflect.set(globalThis, macroDefinitionContextKey, context);
33
+ return context;
34
+ }
35
+ function isDefinitionLocationCapture(value) {
36
+ return value === 'disabled' || value === 'enabled';
37
+ }
38
+ function isDefinitionLocationCaptureStack(value) {
39
+ return Array.isArray(value) && value.every(isDefinitionLocationCapture);
40
+ }
41
+ function activeDefinitionLocationCapture() {
42
+ const captures = Reflect.get(globalThis, definitionLocationCaptureStackKey);
43
+ if (!isDefinitionLocationCaptureStack(captures)) {
44
+ return 'enabled';
45
+ }
46
+ return captures.at(-1) ?? 'enabled';
47
+ }
48
+ function captureDefinitionLocation() {
49
+ return activeDefinitionLocationCapture() === 'enabled' ? captureSourceLocation() : unknownSourceLocation;
50
+ }
51
+ export function activeMacroSourceLocations() {
52
+ return macroDefinitionContext().locations();
53
+ }
54
+ function sourceLocationsWithTrailingLocation(sourceLocations, location) {
55
+ const firstLocation = sourceLocations[0];
56
+ return firstLocation === undefined
57
+ ? [location]
58
+ : [firstLocation, ...sourceLocations.slice(1), location];
59
+ }
60
+ export function runWithForwardedSourceLocations(sourceLocations, body) {
61
+ const firstLocation = sourceLocations[0];
62
+ return firstLocation === undefined
63
+ ? body()
64
+ : forwardAssertionSourceLocations([firstLocation, ...sourceLocations.slice(1)], body);
65
+ }
66
+ export function definitionLocationsForAuthoringCall() {
67
+ return sourceLocationsWithTrailingLocation(activeMacroSourceLocations(), captureDefinitionLocation());
68
+ }
69
+ function forwardResourceAttachments(sourceBody, forwardedBody) {
70
+ return hasTestBodyResourceAttachments(sourceBody)
71
+ ? attachTestBodyResourceAttachments(forwardedBody, readTestBodyResourceAttachments(sourceBody))
72
+ : forwardedBody;
73
+ }
74
+ export function assertionBodyForActiveMacro(body) {
75
+ const sourceLocations = activeMacroSourceLocations();
76
+ if (sourceLocations.length === 0) {
77
+ return body;
78
+ }
79
+ return forwardResourceAttachments(body, async function runMacroGeneratedTestBody(scope) {
80
+ return await runWithForwardedSourceLocations(sourceLocations, async function runBody() {
81
+ return await body(scope);
82
+ });
83
+ });
84
+ }
85
+
86
+ export function runMacroWithDefinitionLocations(body) {
87
+ return macroDefinitionContext().run(definitionLocationsForAuthoringCall(), body);
88
+ }
89
+ export function defineParameterizedTestBodyFactory(body) {
90
+ return function createParameterizedTestBody(data) {
91
+ const sourceLocations = [captureSourceLocation()];
92
+ return async function runParameterizedTestBody(scope) {
93
+ return forwardAssertionSourceLocations(sourceLocations, async function runBody() {
94
+ return body(scope, data);
95
+ });
96
+ };
97
+ };
98
+ }
99
+ //# sourceMappingURL=authoring-source-locations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-source-locations.js","sourceRoot":"","sources":["../../../../../source/packages/test/authoring-source-locations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CaptureMode, DuplicateExecutionControl } from '@overkill-dev/engine';
2
+ export type AuthoringAnnotations = {
3
+ readonly ownership?: readonly string[];
4
+ readonly tags?: readonly string[];
5
+ };
6
+ export type AuthoringControls = {
7
+ readonly capture?: CaptureMode;
8
+ readonly duplicateExecution?: DuplicateExecutionControl;
9
+ readonly timeoutMilliseconds?: number;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=authoring-test-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-test-data.d.ts","sourceRoot":"","sources":["../../../../../source/packages/test/authoring-test-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,2BAOH,MAAM,sBAAiC,CAAC;MAYnC,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;KASF,EAIc,EACH,CAAC"}
@@ -0,0 +1,132 @@
1
+ import "./resource-wrapper-data.js";
2
+ const captureModeValues = ['buffered', 'live'];
3
+ const facadeDefinitionFields = new Set([
4
+ 'annotations',
5
+ 'controls',
6
+ 'mapScope',
7
+ 'resources',
8
+ 'runtime'
9
+ ]);
10
+ const knownCaptureModes = new Set(captureModeValues);
11
+ const reservedFacadeScopeKeyValues = [
12
+ 'assert',
13
+ 'cleanup',
14
+ 'collect',
15
+ 'drainMicrotasks',
16
+ 'parameters',
17
+ 'plan',
18
+ 'require',
19
+ 'resources',
20
+ 'runtimes',
21
+ 'settleAsyncWork',
22
+ 'signal',
23
+ 'startInFlight',
24
+ 'yieldToNextTurn'
25
+ ];
26
+ const reservedFacadeScopeKeys = new Set(reservedFacadeScopeKeyValues);
27
+ function isRecord(value) {
28
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
29
+ }
30
+ function readRecord(value, message) {
31
+ if (!isRecord(value)) {
32
+ throw new TypeError(message);
33
+ }
34
+ return value;
35
+ }
36
+
37
+ function isCaptureMode(value) {
38
+ return typeof value === 'string' && knownCaptureModes.has(value);
39
+ }
40
+ function readStringArray(value, field) {
41
+ if (!Array.isArray(value)) {
42
+ throw new TypeError(`Annotation field "${field}" must be an array.`);
43
+ }
44
+ const items = [];
45
+ for (const item of value) {
46
+ if (typeof item !== 'string' || item.trim().length === 0) {
47
+ throw new TypeError(`Annotation field "${field}" must contain non-empty strings.`);
48
+ }
49
+ items.push(item);
50
+ }
51
+ return items;
52
+ }
53
+ function readCapture(value) {
54
+ if (!isCaptureMode(value)) {
55
+ throw new TypeError('Control field "capture" contains an unknown value.');
56
+ }
57
+ return value;
58
+ }
59
+ function readDuplicateExecution(value) {
60
+ if (value !== 'forbidden' && value !== 'idempotent') {
61
+ throw new TypeError('Control field "duplicateExecution" contains an unknown value.');
62
+ }
63
+ return value;
64
+ }
65
+ function readTimeoutMilliseconds(value) {
66
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
67
+ throw new TypeError('Control field "timeoutMilliseconds" must be a finite number.');
68
+ }
69
+ return value;
70
+ }
71
+
72
+ export function readAuthoringAnnotations(value) {
73
+ const annotations = readRecord(value, 'Test node annotations must be an object.');
74
+ return {
75
+ ...Object.hasOwn(annotations, 'ownership')
76
+ ? { ownership: readStringArray(annotations.ownership, 'ownership') }
77
+ : {},
78
+ ...Object.hasOwn(annotations, 'tags') ? { tags: readStringArray(annotations.tags, 'tags') } : {}
79
+ };
80
+ }
81
+ export function readAuthoringControls(value) {
82
+ const controls = readRecord(value, 'Test node controls must be an object.');
83
+ return {
84
+ ...Object.hasOwn(controls, 'capture') ? { capture: readCapture(controls.capture) } : {},
85
+ ...Object.hasOwn(controls, 'duplicateExecution')
86
+ ? { duplicateExecution: readDuplicateExecution(controls.duplicateExecution) }
87
+ : {},
88
+ ...Object.hasOwn(controls, 'timeoutMilliseconds')
89
+ ? { timeoutMilliseconds: readTimeoutMilliseconds(controls.timeoutMilliseconds) }
90
+ : {}
91
+ };
92
+ }
93
+ function dataField(data, field) {
94
+ return Object.hasOwn(data, field) ? data[field] : undefined;
95
+ }
96
+ function mergedStringSet(facadeAnnotations, nodeAnnotations, field) {
97
+ const facadeValues = dataField(facadeAnnotations, field);
98
+ const nodeValues = dataField(nodeAnnotations, field);
99
+ if (facadeValues !== undefined && nodeValues !== undefined) {
100
+ return Array.from(new Set([...facadeValues, ...nodeValues]));
101
+ }
102
+ return nodeValues ?? facadeValues;
103
+ }
104
+ function mergedCapture(facadeControls, nodeControls) {
105
+ return dataField(nodeControls, 'capture') ?? dataField(facadeControls, 'capture');
106
+ }
107
+ function mergedDuplicateExecution(facadeControls, nodeControls) {
108
+ return dataField(nodeControls, 'duplicateExecution') ?? dataField(facadeControls, 'duplicateExecution');
109
+ }
110
+ function mergedTimeoutMilliseconds(facadeControls, nodeControls) {
111
+ return dataField(nodeControls, 'timeoutMilliseconds') ?? dataField(facadeControls, 'timeoutMilliseconds');
112
+ }
113
+ export function createAuthoringAnnotations(facadeAnnotations, nodeAnnotations) {
114
+ const ownership = mergedStringSet(facadeAnnotations, nodeAnnotations, 'ownership');
115
+ const tags = mergedStringSet(facadeAnnotations, nodeAnnotations, 'tags');
116
+ return {
117
+ ...ownership === undefined ? {} : { ownership },
118
+ ...tags === undefined ? {} : { tags }
119
+ };
120
+ }
121
+ export function createAuthoringControls(facadeControls, nodeControls) {
122
+ const capture = mergedCapture(facadeControls, nodeControls);
123
+ const duplicateExecution = mergedDuplicateExecution(facadeControls, nodeControls);
124
+ const timeoutMilliseconds = mergedTimeoutMilliseconds(facadeControls, nodeControls);
125
+ return {
126
+ ...capture === undefined ? {} : { capture },
127
+ ...duplicateExecution === undefined ? {} : { duplicateExecution },
128
+ ...timeoutMilliseconds === undefined ? {} : { timeoutMilliseconds }
129
+ };
130
+ }
131
+
132
+ //# sourceMappingURL=authoring-test-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-test-data.js","sourceRoot":"","sources":["../../../../../source/packages/test/authoring-test-data.ts"],"names":[],"mappings":"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"}