@overkill-dev/run 0.0.57 → 0.0.59

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 (206) hide show
  1. package/engine/case-execution.d.ts +2 -2
  2. package/engine/case-execution.d.ts.map +1 -1
  3. package/engine/case-execution.js +3 -3
  4. package/engine/case-execution.js.map +1 -1
  5. package/engine/engine.d.ts +2 -2
  6. package/engine/engine.d.ts.map +1 -1
  7. package/engine/execution-supervision.d.ts +3 -3
  8. package/engine/execution-supervision.d.ts.map +1 -1
  9. package/engine/execution-supervision.js +4 -4
  10. package/engine/execution-supervision.js.map +1 -1
  11. package/engine/execution-test-plan-cases.js +4 -4
  12. package/engine/execution-test-plan-cases.js.map +1 -1
  13. package/engine/execution.d.ts +2 -2
  14. package/engine/execution.d.ts.map +1 -1
  15. package/engine/execution.js +2 -2
  16. package/engine/execution.js.map +1 -1
  17. package/engine/reporter-dispatcher.d.ts +2 -2
  18. package/engine/reporter-dispatcher.d.ts.map +1 -1
  19. package/engine/run-timings.d.ts +7 -0
  20. package/engine/run-timings.d.ts.map +1 -1
  21. package/engine/run-timings.js +1 -0
  22. package/engine/run-timings.js.map +1 -1
  23. package/engine/test-body-resource-attachment.d.ts +15 -0
  24. package/engine/test-body-resource-attachment.d.ts.map +1 -1
  25. package/engine/test-body-resource-attachment.js +16 -0
  26. package/engine/test-body-resource-attachment.js.map +1 -1
  27. package/package.json +9 -1
  28. package/packages/engine/engine.entry-point.d.ts +2 -2
  29. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  30. package/packages/engine/engine.entry-point.js +2 -2
  31. package/packages/engine/engine.entry-point.js.map +1 -1
  32. package/packages/reporter-line/reporter-line.entry-point.js +5 -0
  33. package/packages/reporter-line/reporter-line.entry-point.js.map +1 -1
  34. package/packages/run/run.entry-point.d.ts +1 -1
  35. package/packages/run/run.entry-point.d.ts.map +1 -1
  36. package/packages/run/run.entry-point.js +2 -2
  37. package/packages/run/run.entry-point.js.map +1 -1
  38. package/readme.md +15 -2
  39. package/reporters/human-reporter-rendering.js +1 -1
  40. package/reporters/human-reporter-rendering.js.map +1 -1
  41. package/reporters/line-reporter.js +5 -2
  42. package/reporters/line-reporter.js.map +1 -1
  43. package/reporters/progress-reporter.js +6 -0
  44. package/reporters/progress-reporter.js.map +1 -0
  45. package/reporters/run-summary-rendering.js +80 -0
  46. package/reporters/run-summary-rendering.js.map +1 -0
  47. package/reporters/tree-reporter.js +111 -0
  48. package/reporters/tree-reporter.js.map +1 -0
  49. package/resources/resource-definition-brand.d.ts +2 -0
  50. package/resources/resource-definition-brand.d.ts.map +1 -0
  51. package/resources/resource-definition-brand.js +2 -0
  52. package/resources/resource-definition-brand.js.map +1 -0
  53. package/resources/resource-definition-shape.d.ts +3 -0
  54. package/resources/resource-definition-shape.d.ts.map +1 -1
  55. package/resources/resource-definition-types.d.ts +104 -0
  56. package/resources/resource-definition-types.d.ts.map +1 -0
  57. package/resources/resource-definition.js +52 -0
  58. package/resources/resource-definition.js.map +1 -0
  59. package/resources/resource-graph.d.ts +3 -3
  60. package/resources/resource-graph.d.ts.map +1 -1
  61. package/resources/resource-graph.js.map +1 -1
  62. package/resources/resource-scenario-binding.d.ts +37 -0
  63. package/resources/resource-scenario-binding.d.ts.map +1 -0
  64. package/resources/resource-scenario-binding.js +99 -0
  65. package/resources/resource-scenario-binding.js.map +1 -0
  66. package/resources/resource-scenario.d.ts +31 -0
  67. package/resources/resource-scenario.d.ts.map +1 -0
  68. package/resources/resource-scenario.js +68 -0
  69. package/resources/resource-scenario.js.map +1 -0
  70. package/resources/resource-session.d.ts +3 -2
  71. package/resources/resource-session.d.ts.map +1 -1
  72. package/resources/resources.d.ts +46 -76
  73. package/resources/resources.d.ts.map +1 -1
  74. package/resources/resources.js +90 -10
  75. package/resources/resources.js.map +1 -1
  76. package/resources/runtime-definition.d.ts +11 -2
  77. package/resources/runtime-definition.d.ts.map +1 -1
  78. package/resources/runtime-definition.js +66 -0
  79. package/resources/runtime-definition.js.map +1 -1
  80. package/resources/runtime-matrix-definition.d.ts +25 -6
  81. package/resources/runtime-matrix-definition.d.ts.map +1 -1
  82. package/resources/runtime-matrix-definition.js +226 -4
  83. package/resources/runtime-matrix-definition.js.map +1 -1
  84. package/run/default-run-engine.js +2 -2
  85. package/run/default-run-engine.js.map +1 -1
  86. package/run/placement-trace.d.ts +83 -40
  87. package/run/placement-trace.d.ts.map +1 -1
  88. package/run/placement-trace.js +80 -0
  89. package/run/placement-trace.js.map +1 -1
  90. package/run/resource-lifecycle-boundaries.js +122 -13
  91. package/run/resource-lifecycle-boundaries.js.map +1 -1
  92. package/run/resource-lifecycle-cache-identity.js +65 -0
  93. package/run/resource-lifecycle-cache-identity.js.map +1 -0
  94. package/run/resource-lifecycle-composition.d.ts +2 -0
  95. package/run/resource-lifecycle-composition.d.ts.map +1 -1
  96. package/run/resource-lifecycle-composition.js +48 -11
  97. package/run/resource-lifecycle-composition.js.map +1 -1
  98. package/run/resource-lifecycle-session-acquirer.js +11 -6
  99. package/run/resource-lifecycle-session-acquirer.js.map +1 -1
  100. package/run/resource-lifecycle-startup-budget.js +1 -0
  101. package/run/resource-lifecycle-startup-budget.js.map +1 -1
  102. package/run/resource-lifecycle-timing.js +3 -1
  103. package/run/resource-lifecycle-timing.js.map +1 -1
  104. package/run/resource-lifecycle.js +4 -3
  105. package/run/resource-lifecycle.js.map +1 -1
  106. package/run/resource-usage.d.ts +3 -3
  107. package/run/resource-usage.d.ts.map +1 -1
  108. package/run/resource-usage.js +1 -1
  109. package/run/resource-usage.js.map +1 -1
  110. package/run/run-collected-planning.js +12 -1
  111. package/run/run-collected-planning.js.map +1 -1
  112. package/run/run-collected-resolution.js +2 -1
  113. package/run/run-collected-resolution.js.map +1 -1
  114. package/run/run-empty-shard.js +3 -3
  115. package/run/run-empty-shard.js.map +1 -1
  116. package/run/run-facts.js +1 -1
  117. package/run/run-facts.js.map +1 -1
  118. package/run/run-if-main.d.ts +3 -3
  119. package/run/run-if-main.d.ts.map +1 -1
  120. package/run/run-if-main.js +2 -2
  121. package/run/run-if-main.js.map +1 -1
  122. package/run/run-isolated-process.js +4 -4
  123. package/run/run-isolated-process.js.map +1 -1
  124. package/run/run-local-execution.js +1 -1
  125. package/run/run-local-execution.js.map +1 -1
  126. package/run/run-local-resolution.js +4 -2
  127. package/run/run-local-resolution.js.map +1 -1
  128. package/run/run-orchestrator-dependencies.d.ts +2 -2
  129. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  130. package/run/run-orchestrator.js +2 -2
  131. package/run/run-orchestrator.js.map +1 -1
  132. package/run/run-support.js +1 -1
  133. package/run/run-support.js.map +1 -1
  134. package/run/run-timing-collection.d.ts +2 -2
  135. package/run/run-timing-collection.d.ts.map +1 -1
  136. package/run/run-timing-collection.js +28 -22
  137. package/run/run-timing-collection.js.map +1 -1
  138. package/run/supervised-child-process.d.ts +2 -2
  139. package/run/supervised-child-process.d.ts.map +1 -1
  140. package/run/supervised-child-process.js +1 -1
  141. package/run/supervised-child-process.js.map +1 -1
  142. package/run/supervised-child.entry-point.js +2 -2
  143. package/run/supervised-child.entry-point.js.map +1 -1
  144. package/run/supervised-child.js +4 -4
  145. package/run/supervised-child.js.map +1 -1
  146. package/run/supervised-protocol.js.map +1 -1
  147. package/run/supervised-run-collection.js +3 -3
  148. package/run/supervised-run-collection.js.map +1 -1
  149. package/run/supervised-run-runtime.js +5 -5
  150. package/run/supervised-run-runtime.js.map +1 -1
  151. package/run/supervised-run.js +8 -8
  152. package/run/supervised-run.js.map +1 -1
  153. package/run/work-unit-planning.js +4 -2
  154. package/run/work-unit-planning.js.map +1 -1
  155. package/run/work-unit-resource-constraints.js +17 -0
  156. package/run/work-unit-resource-constraints.js.map +1 -1
  157. package/run/worker-pool-collection.js +2 -2
  158. package/run/worker-pool-collection.js.map +1 -1
  159. package/run/worker-pool-compatible-batching.js +0 -10
  160. package/run/worker-pool-compatible-batching.js.map +1 -1
  161. package/run/worker-pool-dispatch-state.js +2 -4
  162. package/run/worker-pool-dispatch-state.js.map +1 -1
  163. package/run/worker-pool-execution.js +37 -36
  164. package/run/worker-pool-execution.js.map +1 -1
  165. package/run/worker-pool-hedge-dispatch.js +1 -1
  166. package/run/worker-pool-hedge-dispatch.js.map +1 -1
  167. package/run/worker-pool-hedged-arbitration.js +31 -20
  168. package/run/worker-pool-hedged-arbitration.js.map +1 -1
  169. package/run/worker-pool-host.entry-point.js +2 -2
  170. package/run/worker-pool-host.entry-point.js.map +1 -1
  171. package/run/worker-pool-lanes.js +7 -3
  172. package/run/worker-pool-lanes.js.map +1 -1
  173. package/run/worker-pool-lease-selection.js.map +1 -1
  174. package/run/worker-pool-output.js +1 -1
  175. package/run/worker-pool-output.js.map +1 -1
  176. package/run/worker-pool-pending-splitting.js +4 -2
  177. package/run/worker-pool-pending-splitting.js.map +1 -1
  178. package/run/worker-pool-resource-tracking.js +1 -1
  179. package/run/worker-pool-resource-tracking.js.map +1 -1
  180. package/run/worker-pool-results.js +9 -6
  181. package/run/worker-pool-results.js.map +1 -1
  182. package/run/worker-pool-run.js +12 -8
  183. package/run/worker-pool-run.js.map +1 -1
  184. package/run/worker-pool-runtime.js +28 -13
  185. package/run/worker-pool-runtime.js.map +1 -1
  186. package/run/worker-pool-static-dispatcher.js +18 -8
  187. package/run/worker-pool-static-dispatcher.js.map +1 -1
  188. package/run/worker-pool-task-events.js +83 -25
  189. package/run/worker-pool-task-events.js.map +1 -1
  190. package/run/worker-pool-work-dispatcher.js +21 -13
  191. package/run/worker-pool-work-dispatcher.js.map +1 -1
  192. package/run/worker-pool-worker-resources.js +2 -2
  193. package/run/worker-pool-worker-resources.js.map +1 -1
  194. package/run/worker-pool-worker-timing.js +14 -7
  195. package/run/worker-pool-worker-timing.js.map +1 -1
  196. package/run/worker-pool-worker.js +20 -12
  197. package/run/worker-pool-worker.js.map +1 -1
  198. package/sbom.cdx.json +38 -4
  199. package/clock/overkill-clock.d.ts +0 -30
  200. package/clock/overkill-clock.d.ts.map +0 -1
  201. package/clock/overkill-clock.js +0 -53
  202. package/clock/overkill-clock.js.map +0 -1
  203. package/reporters/run-fact-summary.js +0 -20
  204. package/reporters/run-fact-summary.js.map +0 -1
  205. package/reporters/run-timing-summary.js +0 -11
  206. package/reporters/run-timing-summary.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export const resourceDefinitionBrand = Symbol('overkill.resourceDefinition');
2
+ //# sourceMappingURL=resource-definition-brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-definition-brand.js","sourceRoot":"","sources":["../../../../source/resources/resource-definition-brand.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAkB,MAAM,CAAC,6BAA6B,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ResourceScenarioSlots } from './resource-scenario.ts';
1
2
  export type Awaitable<Value> = Promise<Value> | Value;
2
3
  export type ValueOf<Values> = Values[keyof Values];
3
4
  type ExclusiveResource = {
@@ -39,8 +40,10 @@ export type AnyResourceDefinition = {
39
40
  readonly dependencies: ResourceDependencies;
40
41
  readonly deserializeHandle?: (payload: never, context: never) => unknown;
41
42
  readonly dispose: ((handle: never, context: never) => Awaitable<void>) | null;
43
+ readonly exposeHandle: ((handle: never, context: never) => unknown) | null;
42
44
  readonly name: string;
43
45
  readonly requirements: readonly ExecutionRequirement[];
46
+ readonly scenarios: ResourceScenarioSlots;
44
47
  readonly scope: ResourceScope;
45
48
  readonly serializeHandle?: (handle: never, context: never) => ResourceProjectionPayload;
46
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resource-definition-shape.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-definition-shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-definition-shape.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-definition-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import type { Except, Merge } from 'type-fest';
2
+ import type { AnyResourceDefinition, Awaitable, EmptyResourceDependencies, ExecutionRequirement, ResourceDependencies, ResourceProjectionPayload, ResourceScope, ValueOf } from './resource-definition-shape.ts';
3
+ import type { resourceDefinitionBrand } from './resource-definition-brand.ts';
4
+ import type { EmptyResourceScenarioSlots, ResourceScenarioBindingsForTiming, ResourceScenarioSlotInputs, ResourceScenarioSlotsFromInputs, ResourceScenarioSlots } from './resource-scenario.ts';
5
+ type ProjectedResourceScope = 'per-file' | 'per-run' | 'per-suite';
6
+ export type WithDependencies<Input, Dependencies extends ResourceDependencies> = Merge<Input, {
7
+ readonly dependencies: Dependencies;
8
+ }>;
9
+ type WithScenarios<Input extends {
10
+ readonly scenarios: unknown;
11
+ }, ScenarioInputs extends ResourceScenarioSlotInputs> = Merge<Except<Input, 'scenarios'>, {
12
+ readonly scenarios: ScenarioInputs;
13
+ }>;
14
+ export type ResourceProjectionContext<Dependencies extends ResourceDependencies = EmptyResourceDependencies> = {
15
+ readonly dependencies: ResourceContext<Dependencies>;
16
+ };
17
+ export type ResourceHandleExposureContext<Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = {
18
+ readonly scenarios: ResourceScenarioBindingsForTiming<Scenarios, 'request-routed'>;
19
+ };
20
+ export type ResourceHandle<Resource extends AnyResourceDefinition> = Resource extends {
21
+ readonly deserializeHandle?: ((payload: never, context: never) => infer ConsumerHandle) | undefined;
22
+ } ? ConsumerHandle : Awaited<ReturnType<Resource['acquire']>>;
23
+ export type ResourceContext<Resources extends ResourceDependencies> = {
24
+ readonly [Key in keyof Resources]: ResourceHandle<Resources[Key]>;
25
+ };
26
+ export type ResourceCreationContext<Dependencies extends ResourceDependencies = EmptyResourceDependencies, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = {
27
+ readonly dependencies: ResourceContext<Dependencies>;
28
+ readonly scenarios: ResourceScenarioBindingsForTiming<Scenarios, 'acquire'>;
29
+ readonly signal: AbortSignal;
30
+ };
31
+ export type ResourceDisposalContext<Dependencies extends ResourceDependencies = EmptyResourceDependencies, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = {
32
+ readonly dependencies: ResourceContext<Dependencies>;
33
+ readonly scenarios: ResourceScenarioBindingsForTiming<Scenarios, 'acquire'>;
34
+ readonly signal: AbortSignal;
35
+ };
36
+ type RequestRoutedScenarioNames<Scenarios extends ResourceScenarioSlots> = keyof {
37
+ readonly [Slot in keyof Scenarios as 'request-routed' extends Scenarios[Slot]['timing'] ? Slot : never]: true;
38
+ };
39
+ type ResourceHandleExposureInput<Handle, Scenarios extends ResourceScenarioSlots> = {
40
+ readonly exposeHandle?: (handle: Handle, context: ResourceHandleExposureContext<Scenarios>) => Handle;
41
+ };
42
+ type ResourceHandleExposureDefinition<Handle, Scenarios extends ResourceScenarioSlots> = RequestRoutedScenarioNames<Scenarios> extends never ? {
43
+ readonly exposeHandle: null;
44
+ } : {
45
+ readonly exposeHandle: (handle: Handle, context: ResourceHandleExposureContext<Scenarios>) => Handle;
46
+ };
47
+ type ResourceDisposal<Handle, Dependencies extends ResourceDependencies, Scenarios extends ResourceScenarioSlots> = ((handle: Handle, context: ResourceDisposalContext<Dependencies, Scenarios>) => Awaitable<void>) | null;
48
+ type ResourceDefinitionBaseInput<Name extends string, Handle, Scope extends ResourceScope, Dependencies extends ResourceDependencies = EmptyResourceDependencies, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = {
49
+ readonly acquire: (context: ResourceCreationContext<Dependencies, Scenarios>) => Awaitable<Handle>;
50
+ readonly dependencies?: Dependencies;
51
+ readonly dispose: ResourceDisposal<Handle, Dependencies, Scenarios>;
52
+ readonly name: Name;
53
+ readonly requirements: readonly ExecutionRequirement[];
54
+ readonly scope: Scope;
55
+ };
56
+ export type LocalOnlyResourceDefinitionInput<Name extends string, Handle, Scope extends ResourceScope, Dependencies extends ResourceDependencies = EmptyResourceDependencies, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = Merge<ResourceDefinitionBaseInput<Name, Handle, Scope, Dependencies, Scenarios>, ResourceHandleExposureInput<Handle, NoInfer<Scenarios>> & {
57
+ readonly deserializeHandle?: never;
58
+ readonly scenarios: Scenarios;
59
+ readonly serializeHandle?: never;
60
+ }>;
61
+ export type ProjectedResourceDefinitionInput<Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends 'per-file' | 'per-run' | 'per-suite', Dependencies extends ResourceDependencies = EmptyResourceDependencies, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = Merge<ResourceDefinitionBaseInput<Name, OwnerHandle, Scope, Dependencies, Scenarios>, ResourceHandleExposureInput<ConsumerHandle, NoInfer<Scenarios>> & {
62
+ readonly deserializeHandle: (payload: Projection, context: ResourceProjectionContext<Dependencies>) => ConsumerHandle;
63
+ readonly scenarios: Scenarios;
64
+ readonly serializeHandle: (handle: OwnerHandle, context: ResourceProjectionContext<Dependencies>) => Projection;
65
+ }>;
66
+ export type ScenarioLocalInput<Name extends string, Handle, Scope extends Exclude<ResourceScope, 'per-run'>, Dependencies extends ResourceDependencies, ScenarioInputs extends ResourceScenarioSlotInputs> = WithScenarios<LocalOnlyResourceDefinitionInput<Name, Handle, Scope, Dependencies, ResourceScenarioSlotsFromInputs<ScenarioInputs>>, ScenarioInputs>;
67
+ export type ScenarioProjectedInput<Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends ProjectedResourceScope, Dependencies extends ResourceDependencies, ScenarioInputs extends ResourceScenarioSlotInputs> = WithScenarios<ProjectedResourceDefinitionInput<Name, OwnerHandle, Projection, ConsumerHandle, Scope, Dependencies, ResourceScenarioSlotsFromInputs<ScenarioInputs>>, ScenarioInputs>;
68
+ export type DefineResource = {
69
+ <const Name extends string, Handle, Scope extends Exclude<ResourceScope, 'per-run'>, const Dependencies extends ResourceDependencies, const ScenarioInputs extends ResourceScenarioSlotInputs>(definition: WithDependencies<ScenarioLocalInput<Name, Handle, Scope, Dependencies, ScenarioInputs>, Dependencies>): ResourceDefinition<Name, Handle, Dependencies, Handle, ResourceScenarioSlotsFromInputs<ScenarioInputs>>;
70
+ <const Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends ProjectedResourceScope, const Dependencies extends ResourceDependencies, const ScenarioInputs extends ResourceScenarioSlotInputs>(definition: WithDependencies<ScenarioProjectedInput<Name, OwnerHandle, Projection, ConsumerHandle, Scope, Dependencies, ScenarioInputs>, Dependencies>): ResourceDefinition<Name, OwnerHandle, Dependencies, ConsumerHandle, ResourceScenarioSlotsFromInputs<ScenarioInputs>>;
71
+ <const Name extends string, Handle, Scope extends Exclude<ResourceScope, 'per-run'>, const ScenarioInputs extends ResourceScenarioSlotInputs>(definition: Except<ScenarioLocalInput<Name, Handle, Scope, EmptyResourceDependencies, ScenarioInputs>, 'dependencies'>): ResourceDefinition<Name, Handle, EmptyResourceDependencies, Handle, ResourceScenarioSlotsFromInputs<ScenarioInputs>>;
72
+ <const Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends ProjectedResourceScope, const ScenarioInputs extends ResourceScenarioSlotInputs>(definition: Except<ScenarioProjectedInput<Name, OwnerHandle, Projection, ConsumerHandle, Scope, EmptyResourceDependencies, ScenarioInputs>, 'dependencies'>): ResourceDefinition<Name, OwnerHandle, EmptyResourceDependencies, ConsumerHandle, ResourceScenarioSlotsFromInputs<ScenarioInputs>>;
73
+ <const Name extends string, Handle, Scope extends Exclude<ResourceScope, 'per-run'>>(definition: Except<LocalOnlyResourceDefinitionInput<Name, Handle, Scope>, 'scenarios'>): ResourceDefinition<Name, Handle, EmptyResourceDependencies, Handle>;
74
+ <const Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends ProjectedResourceScope>(definition: Except<ProjectedResourceDefinitionInput<Name, OwnerHandle, Projection, ConsumerHandle, Scope>, 'scenarios'>): ResourceDefinition<Name, OwnerHandle, EmptyResourceDependencies, ConsumerHandle>;
75
+ <const Name extends string, Handle, Scope extends Exclude<ResourceScope, 'per-run'>, const Dependencies extends ResourceDependencies>(definition: WithDependencies<Except<LocalOnlyResourceDefinitionInput<Name, Handle, Scope, Dependencies>, 'scenarios'>, Dependencies>): ResourceDefinition<Name, Handle, Dependencies, Handle>;
76
+ <const Name extends string, OwnerHandle, Projection extends ResourceProjectionPayload, ConsumerHandle, Scope extends ProjectedResourceScope, const Dependencies extends ResourceDependencies>(definition: WithDependencies<Except<ProjectedResourceDefinitionInput<Name, OwnerHandle, Projection, ConsumerHandle, Scope, Dependencies>, 'scenarios'>, Dependencies>): ResourceDefinition<Name, OwnerHandle, Dependencies, ConsumerHandle>;
77
+ };
78
+ export type ResourceDefinitionInput<Name extends string, Handle, Dependencies extends ResourceDependencies = EmptyResourceDependencies, Projection extends ResourceProjectionPayload = ResourceProjectionPayload, ConsumerHandle = Handle> = Except<ValueOf<ResourceDefinitionInputOptions<Name, Handle, Dependencies, Projection, ConsumerHandle>>, 'scenarios'>;
79
+ type ResourceDefinitionInputOptions<Name extends string, Handle, Dependencies extends ResourceDependencies, Projection extends ResourceProjectionPayload, ConsumerHandle> = {
80
+ readonly local: LocalResourceDefinitionInput<Name, Handle, Dependencies>;
81
+ readonly projected: ProjectedResourceInput<Name, Handle, Projection, ConsumerHandle, Dependencies>;
82
+ };
83
+ type LocalResourceDefinitionInput<Name extends string, Handle, Dependencies extends ResourceDependencies> = LocalCaseResourceInput<Name, Handle, Dependencies> | LocalFileResourceInput<Name, Handle, Dependencies>;
84
+ type LocalCaseResourceInput<Name extends string, Handle, Dependencies extends ResourceDependencies> = LocalOnlyResourceDefinitionInput<Name, Handle, 'per-case' | 'shared-per-worker', Dependencies>;
85
+ type LocalFileResourceInput<Name extends string, Handle, Dependencies extends ResourceDependencies> = LocalOnlyResourceDefinitionInput<Name, Handle, 'per-file' | 'per-suite', Dependencies>;
86
+ type ProjectedResourceInput<Name extends string, Handle, Projection extends ResourceProjectionPayload, ConsumerHandle, Dependencies extends ResourceDependencies> = ValueOf<ProjectedResourceInputOptions<Name, Handle, Projection, ConsumerHandle, Dependencies>>;
87
+ type ProjectedResourceInputOptions<Name extends string, Handle, Projection extends ResourceProjectionPayload, ConsumerHandle, Dependencies extends ResourceDependencies> = {
88
+ readonly file: ProjectedResourceDefinitionInput<Name, Handle, Projection, ConsumerHandle, 'per-file' | 'per-suite', Dependencies>;
89
+ readonly run: ProjectedResourceDefinitionInput<Name, Handle, Projection, ConsumerHandle, 'per-run', Dependencies>;
90
+ };
91
+ export type ResourceDefinition<Name extends string = string, OwnerHandle = unknown, Dependencies extends ResourceDependencies = ResourceDependencies, ConsumerHandle = OwnerHandle, Scenarios extends ResourceScenarioSlots = EmptyResourceScenarioSlots> = ResourceHandleExposureDefinition<ConsumerHandle, Scenarios> & {
92
+ readonly acquire: (context: ResourceCreationContext<Dependencies, Scenarios>) => Awaitable<OwnerHandle>;
93
+ readonly dependencies: Dependencies;
94
+ readonly deserializeHandle?: (payload: ResourceProjectionPayload, context: ResourceProjectionContext<Dependencies>) => ConsumerHandle;
95
+ readonly dispose: ResourceDisposal<OwnerHandle, Dependencies, Scenarios>;
96
+ readonly name: Name;
97
+ readonly requirements: readonly ExecutionRequirement[];
98
+ readonly scenarios: Scenarios;
99
+ readonly scope: ResourceScope;
100
+ readonly serializeHandle?: (handle: OwnerHandle, context: ResourceProjectionContext<Dependencies>) => ResourceProjectionPayload;
101
+ readonly [resourceDefinitionBrand]: true;
102
+ };
103
+ export {};
104
+ //# sourceMappingURL=resource-definition-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-definition-types.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-definition-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { resourceDefinitionBrand } from "./resource-definition-brand.js";
2
+ import { freezeResourceScenarioSlots } from "./resource-scenario.js";
3
+ function isRecord(value) {
4
+ return typeof value === 'object' && value !== null;
5
+ }
6
+ function resourceDependencies(definition) {
7
+ const declaredDependencies = Reflect.get(definition, 'dependencies');
8
+ return isRecord(declaredDependencies)
9
+ ? Object.freeze(declaredDependencies)
10
+ : Object.freeze({});
11
+ }
12
+ function resourceScenarios(definition) {
13
+ return Object.hasOwn(definition, 'scenarios')
14
+ ? freezeResourceScenarioSlots(Reflect.get(definition, 'scenarios'))
15
+ : Object.freeze({});
16
+ }
17
+ function resourceHandleExposure(definition, scenarios) {
18
+ const hasRequestRoutedScenario = Object.values(scenarios).some(function isRequestRouted(slot) {
19
+ return slot.timing === 'request-routed';
20
+ });
21
+ const declaredExposeHandle = Reflect.get(definition, 'exposeHandle');
22
+ if (!hasRequestRoutedScenario) {
23
+ if (declaredExposeHandle !== undefined && declaredExposeHandle !== null) {
24
+ throw new TypeError('Resource exposeHandle() requires a request-routed scenario.');
25
+ }
26
+ return null;
27
+ }
28
+ if (typeof declaredExposeHandle !== 'function') {
29
+ throw new TypeError(`Resource "${String(Reflect.get(definition, 'name'))}" requires exposeHandle().`);
30
+ }
31
+ return declaredExposeHandle;
32
+ }
33
+ function defineResource(definition) {
34
+ const scenarios = resourceScenarios(definition);
35
+ return Object.freeze({
36
+ ...definition,
37
+ dependencies: resourceDependencies(definition),
38
+ exposeHandle: resourceHandleExposure(definition, scenarios),
39
+ scenarios,
40
+ [resourceDefinitionBrand]: true
41
+ });
42
+ }
43
+ function isDefinedResource(resource) {
44
+ return typeof resource === 'object' &&
45
+ resource !== null &&
46
+ Reflect.get(resource, resourceDefinitionBrand) === true;
47
+ }
48
+ export const resourceDefinitionApi = Object.freeze({
49
+ defineResource,
50
+ isDefinedResource
51
+ });
52
+ //# sourceMappingURL=resource-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-definition.js","sourceRoot":"","sources":["../../../../source/resources/resource-definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAA8B,MAAM,wBAAwB,CAAC;AAEjG,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CACzB,UAA6C;IAE7C,MAAM,oBAAoB,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAE9E,OAAO,QAAQ,CAAC,oBAAoB,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA6C;IACpE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;QACzC,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,sBAAsB,CAC3B,UAA6C,EAC7C,SAAgC;IAEhC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,IAAI;QACxF,OAAO,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAE9E,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5B,IAAI,oBAAoB,KAAK,SAAS,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACtE,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC1G,CAAC;IAED,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,UAA6C;IACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,GAAG,UAAU;QACb,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAC9C,YAAY,EAAE,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC;QAC3D,SAAS;QACT,CAAC,uBAAuB,CAAC,EAAE,IAAa;KAC3C,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB;IACxC,OAAO,OAAO,QAAQ,KAAK,QAAQ;QAC/B,QAAQ,KAAK,IAAI;QACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,cAAc;IACd,iBAAiB;CACpB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AnyResourceDefinition, type Awaitable, type ResourceCreationContext, type ResourceDependencies, type ResourceDisposalContext } from './resources.ts';
1
+ import { type AnyResourceDefinition, type Awaitable, type ResourceCreationContext, type ResourceDependencies, type ResourceDisposalContext, type ResourceScenarioSlots } from './resources.ts';
2
2
  export type ResourceEntry = readonly [string, AnyResourceDefinition];
3
3
  export type ResourceNode = {
4
4
  readonly dependencies: readonly ResourceNode[];
@@ -8,10 +8,10 @@ export type ResourceGraph = {
8
8
  readonly order: readonly ResourceNode[];
9
9
  readonly topLevelEntries: readonly ResourceEntry[];
10
10
  };
11
- type DependencyDisposalContext = ResourceDisposalContext<ResourceDependencies>;
11
+ type DependencyDisposalContext = ResourceDisposalContext<ResourceDependencies, ResourceScenarioSlots>;
12
12
  export type ResourceDisposeCallback = (handle: unknown, context: DependencyDisposalContext) => Awaitable<void>;
13
13
  export type CallableResourceDefinition = AnyResourceDefinition & {
14
- readonly acquire: (context: ResourceCreationContext<ResourceDependencies>) => Awaitable<unknown>;
14
+ readonly acquire: (context: ResourceCreationContext<ResourceDependencies, ResourceScenarioSlots>) => Awaitable<unknown>;
15
15
  readonly dispose: ResourceDisposeCallback | null;
16
16
  };
17
17
  export declare function resourceEntries(resources: ResourceDependencies): readonly ResourceEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"resource-graph.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAEd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAE/B,MAAM,gBAAgB,CAAC;AAaxB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CACtD,CAAC;AACF,KAAK,yBAAyB,GAAG,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;AAC/E,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/G,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;IACjG,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpD,CAAC;AAQF,wBAAgB,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,aAAa,EAAE,CAEzF;AA+CD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,0BAA0B,CAQtG;AAiFD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAElF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAuBhF;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAwBpF"}
1
+ {"version":3,"file":"resource-graph.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAEd,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAE7B,MAAM,gBAAgB,CAAC;AAaxB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CACtD,CAAC;AACF,KAAK,yBAAyB,GAAG,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACtG,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/G,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC7D,QAAQ,CAAC,OAAO,EAAE,CACd,OAAO,EAAE,uBAAuB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,KAC5E,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpD,CAAC;AAQF,wBAAgB,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,aAAa,EAAE,CAEzF;AA+CD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,0BAA0B,CAQtG;AAiFD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,CAElF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAuBhF;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAwBpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/resources/resource-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { AnyResourceDefinition, ResourceDependencies } from './resource-definition-shape.ts';
2
+ import { type EmptyResourceScenarioSlots, type ResourceScenarioSlot, type ResourceScenarioSlots } from './resource-scenario.ts';
3
+ type UnionToIntersection<Value> = (Value extends unknown ? (value: Value) => void : never) extends (value: infer Intersection) => void ? Intersection : never;
4
+ type ScenarioDepth = 'eight' | 'five' | 'four' | 'one' | 'seven' | 'six' | 'stop' | 'three' | 'two';
5
+ type PreviousScenarioDepth = {
6
+ readonly eight: 'seven';
7
+ readonly five: 'four';
8
+ readonly four: 'three';
9
+ readonly one: 'stop';
10
+ readonly seven: 'six';
11
+ readonly six: 'five';
12
+ readonly stop: 'stop';
13
+ readonly three: 'two';
14
+ readonly two: 'one';
15
+ };
16
+ type DependencyScenarioSlots<Dependencies extends ResourceDependencies, Depth extends ScenarioDepth> = string extends keyof Dependencies ? EmptyResourceScenarioSlots : ResourceScenarioSlotsFromResources<Dependencies[keyof Dependencies], PreviousScenarioDepth[Depth]>;
17
+ type ResourceScenarioSlotsFromDependencies<Dependencies extends ResourceDependencies, Depth extends ScenarioDepth> = Depth extends 'stop' ? EmptyResourceScenarioSlots : DependencyScenarioSlots<Dependencies, Depth>;
18
+ type ResourceScenarioSlotsFromResource<Resource, Depth extends ScenarioDepth> = Resource extends {
19
+ readonly dependencies: infer Dependencies extends ResourceDependencies;
20
+ readonly scenarios: infer Scenarios extends ResourceScenarioSlots;
21
+ } ? ResourceScenarioSlotsFromDependencies<Dependencies, Depth> & Scenarios : EmptyResourceScenarioSlots;
22
+ type ResourceScenarioSlotsFromResources<Resources, Depth extends ScenarioDepth> = [Resources] extends [never] ? EmptyResourceScenarioSlots : UnionToIntersection<ResourceScenarioSlotsFromResource<Resources, Depth>>;
23
+ export type ResourceMapScenarioSlots<Resources extends ResourceDependencies> = ResourceScenarioSlotsFromResources<Resources[keyof Resources], 'eight'> extends infer Scenarios extends ResourceScenarioSlots ? Scenarios : EmptyResourceScenarioSlots;
24
+ export type ResourceScenarioOwner = {
25
+ readonly path: readonly string[];
26
+ readonly resource: AnyResourceDefinition;
27
+ readonly slot: ResourceScenarioSlot;
28
+ };
29
+ export type ResolvedResourceScenarioBindings = Readonly<Record<string, string>>;
30
+ export declare function resourceScenarioOwners(resources: ResourceDependencies): ReadonlyMap<string, ResourceScenarioOwner>;
31
+ export declare function sourceResourceDefinition(resource: AnyResourceDefinition): AnyResourceDefinition;
32
+ export declare function bindResourceScenarios(resource: AnyResourceDefinition, bindings: ResolvedResourceScenarioBindings): AnyResourceDefinition;
33
+ export declare function resolvedResourceScenarioBindings(resource: AnyResourceDefinition): ResolvedResourceScenarioBindings;
34
+ export declare function acquisitionResourceScenarioBindings(resource: AnyResourceDefinition): ResolvedResourceScenarioBindings;
35
+ export declare function exposeResourceHandle(resource: AnyResourceDefinition, handle: unknown): unknown;
36
+ export {};
37
+ //# sourceMappingURL=resource-scenario-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-scenario-binding.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-scenario-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { defaultScenarioBindings, scenarioBindingsForTiming } from "./resource-scenario.js";
2
+ const boundResourceScenarios = new WeakMap();
3
+ const sourceResourceDefinitions = new WeakMap();
4
+ function isScenarioTiming(value) {
5
+ return value === 'acquire' || value === 'request-routed';
6
+ }
7
+ function isScenarioValues(value) {
8
+ return Array.isArray(value) && value.length > 0 && value.every(function valueIsString(item) {
9
+ return typeof item === 'string';
10
+ });
11
+ }
12
+ function isResourceScenarioSlot(value) {
13
+ if (typeof value !== 'object' || value === null) {
14
+ return false;
15
+ }
16
+ const defaultValue = Reflect.get(value, 'default');
17
+ const timing = Reflect.get(value, 'timing');
18
+ const values = Reflect.get(value, 'values');
19
+ return typeof defaultValue === 'string' && isScenarioTiming(timing) && isScenarioValues(values);
20
+ }
21
+ function isResourceDefinition(value) {
22
+ return typeof value === 'object' && value !== null &&
23
+ typeof Reflect.get(value, 'name') === 'string' &&
24
+ typeof Reflect.get(value, 'dependencies') === 'object' &&
25
+ typeof Reflect.get(value, 'scenarios') === 'object';
26
+ }
27
+ export function resourceScenarioOwners(resources) {
28
+ const owners = new Map();
29
+ const visited = new Set();
30
+ function recordScenario(resource, path, name, slot) {
31
+ const existing = owners.get(name);
32
+ if (existing !== undefined && existing.resource !== resource) {
33
+ throw new TypeError(`Scenario slot "${name}" is declared by multiple resources.`);
34
+ }
35
+ owners.set(name, { path, resource, slot });
36
+ }
37
+ function recordOwnedScenarios(resource, path) {
38
+ const scenarios = Reflect.get(resource, 'scenarios');
39
+ if (typeof scenarios !== 'object' || scenarios === null) {
40
+ return;
41
+ }
42
+ for (const [name, slot] of Object.entries(scenarios)) {
43
+ if (isResourceScenarioSlot(slot)) {
44
+ recordScenario(resource, path, name, slot);
45
+ }
46
+ }
47
+ }
48
+ function visitDependencies(resource, path, visitDependency) {
49
+ const dependencies = Reflect.get(resource, 'dependencies');
50
+ if (typeof dependencies !== 'object' || dependencies === null) {
51
+ return;
52
+ }
53
+ for (const key of Object.keys(dependencies)) {
54
+ const property = Object.getOwnPropertyDescriptor(dependencies, key);
55
+ const dependency = property?.value;
56
+ if (isResourceDefinition(dependency)) {
57
+ visitDependency(dependency, [...path, key]);
58
+ }
59
+ }
60
+ }
61
+ function visit(resource, path) {
62
+ if (!visited.has(resource)) {
63
+ visited.add(resource);
64
+ recordOwnedScenarios(resource, path);
65
+ visitDependencies(resource, path, visit);
66
+ }
67
+ }
68
+ for (const [key, resource] of Object.entries(resources)) {
69
+ visit(resource, [key]);
70
+ }
71
+ return owners;
72
+ }
73
+ export function sourceResourceDefinition(resource) {
74
+ return sourceResourceDefinitions.get(resource) ?? resource;
75
+ }
76
+ export function bindResourceScenarios(resource, bindings) {
77
+ const bound = Object.freeze({ ...resource });
78
+ boundResourceScenarios.set(bound, bindings);
79
+ sourceResourceDefinitions.set(bound, sourceResourceDefinition(resource));
80
+ return bound;
81
+ }
82
+ export function resolvedResourceScenarioBindings(resource) {
83
+ return boundResourceScenarios.get(resource) ?? defaultScenarioBindings(resource.scenarios);
84
+ }
85
+ export function acquisitionResourceScenarioBindings(resource) {
86
+ return scenarioBindingsForTiming(resource.scenarios, resolvedResourceScenarioBindings(resource), 'acquire');
87
+ }
88
+ function requestRoutedResourceScenarioBindings(resource) {
89
+ return scenarioBindingsForTiming(resource.scenarios, resolvedResourceScenarioBindings(resource), 'request-routed');
90
+ }
91
+ export function exposeResourceHandle(resource, handle) {
92
+ if (resource.exposeHandle === null) {
93
+ return handle;
94
+ }
95
+ return Reflect.apply(resource.exposeHandle, undefined, [handle, {
96
+ scenarios: requestRoutedResourceScenarioBindings(resource)
97
+ }]);
98
+ }
99
+ //# sourceMappingURL=resource-scenario-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-scenario-binding.js","sourceRoot":"","sources":["../../../../source/resources/resource-scenario-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type ScenarioTiming = 'acquire' | 'request-routed';
2
+ export type ResourceScenarioSlot<Scenario extends string = string, Timing extends ScenarioTiming = ScenarioTiming> = {
3
+ readonly default: Scenario;
4
+ readonly timing: Timing;
5
+ readonly values: readonly [Scenario, ...(readonly Scenario[])];
6
+ };
7
+ export type ResourceScenarioSlotInput<Scenario extends string = string, Timing extends ScenarioTiming = ScenarioTiming> = {
8
+ readonly default: Scenario;
9
+ readonly timing: Timing;
10
+ readonly values: readonly Scenario[];
11
+ };
12
+ export type ResourceScenarioSlotInputs = Readonly<Record<string, ResourceScenarioSlotInput>>;
13
+ export type ResourceScenarioSlotsFromInputs<Inputs extends ResourceScenarioSlotInputs> = {
14
+ readonly [Slot in keyof Inputs]: ResourceScenarioSlot<Inputs[Slot]['default'] | Inputs[Slot]['values'][number], Inputs[Slot]['timing']>;
15
+ };
16
+ export type ResourceScenarioSlots = Readonly<Record<string, ResourceScenarioSlot>>;
17
+ export type EmptyResourceScenarioSlots = Readonly<Record<PropertyKey, never>>;
18
+ export type ResourceScenarioBindings<Scenarios extends ResourceScenarioSlots> = {
19
+ readonly [Slot in keyof Scenarios]: Scenarios[Slot]['values'][number];
20
+ };
21
+ export type ResourceScenarioBindingsForTiming<Scenarios extends ResourceScenarioSlots, Timing extends ScenarioTiming> = {
22
+ readonly [Slot in keyof Scenarios as Timing extends Scenarios[Slot]['timing'] ? Slot : never]: Scenarios[Slot]['values'][number];
23
+ };
24
+ export type ScenarioBindingInput<Scenarios extends ResourceScenarioSlots, Bindings extends Readonly<Record<string, string>>> = {
25
+ readonly [Slot in keyof Bindings]: Slot extends keyof Scenarios ? Bindings[Slot] extends Scenarios[Slot]['values'][number] ? Bindings[Slot] : never : never;
26
+ };
27
+ export type ResolvedResourceScenarioBindings = Readonly<Record<string, string>>;
28
+ export declare function freezeResourceScenarioSlots(scenarios: unknown): ResourceScenarioSlots;
29
+ export declare function defaultScenarioBindings(scenarios: ResourceScenarioSlots): ResolvedResourceScenarioBindings;
30
+ export declare function scenarioBindingsForTiming(scenarios: ResourceScenarioSlots, bindings: ResolvedResourceScenarioBindings, timing: ScenarioTiming): ResolvedResourceScenarioBindings;
31
+ //# sourceMappingURL=resource-scenario.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-scenario.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-scenario.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ const descriptorNamePattern = /^[A-Za-z0-9._-]+$/u;
2
+ function isScenarioTiming(value) {
3
+ return value === 'acquire' || value === 'request-routed';
4
+ }
5
+ function isScenarioValues(value) {
6
+ return Array.isArray(value) && value.length > 0 && value.every(function valueIsString(item) {
7
+ return typeof item === 'string';
8
+ });
9
+ }
10
+ function isResourceScenarioSlot(value) {
11
+ if (typeof value !== 'object' || value === null) {
12
+ return false;
13
+ }
14
+ const defaultValue = Reflect.get(value, 'default');
15
+ const timing = Reflect.get(value, 'timing');
16
+ const values = Reflect.get(value, 'values');
17
+ return typeof defaultValue === 'string' && isScenarioTiming(timing) && isScenarioValues(values);
18
+ }
19
+ function assertScenarioSlotName(name) {
20
+ if (!descriptorNamePattern.test(name)) {
21
+ throw new TypeError(`Scenario slot "${name}" must match ${descriptorNamePattern.source}.`);
22
+ }
23
+ }
24
+ function assertScenarioSlot(name, slot) {
25
+ assertScenarioSlotName(name);
26
+ const values = new Set(slot.values);
27
+ if (values.size !== slot.values.length) {
28
+ throw new TypeError(`Scenario slot "${name}" contains duplicate values.`);
29
+ }
30
+ if (!values.has(slot.default)) {
31
+ throw new TypeError(`Scenario slot "${name}" default "${slot.default}" is not declared.`);
32
+ }
33
+ }
34
+ export function freezeResourceScenarioSlots(scenarios) {
35
+ if (typeof scenarios !== 'object' || scenarios === null) {
36
+ throw new TypeError('Resource scenarios must be an object.');
37
+ }
38
+ const entries = Object.entries(scenarios).map(function freezeScenarioEntry([name, slot]) {
39
+ if (!isResourceScenarioSlot(slot)) {
40
+ throw new TypeError(`Scenario slot "${name}" is invalid.`);
41
+ }
42
+ assertScenarioSlot(name, slot);
43
+ const [firstValue, ...remainingValues] = slot.values;
44
+ return [
45
+ name,
46
+ Object.freeze({
47
+ default: slot.default,
48
+ timing: slot.timing,
49
+ values: Object.freeze([firstValue, ...remainingValues])
50
+ })
51
+ ];
52
+ });
53
+ return Object.freeze(Object.fromEntries(entries));
54
+ }
55
+ export function defaultScenarioBindings(scenarios) {
56
+ return Object.freeze(Object.fromEntries(Object.entries(scenarios).map(function defaultScenarioEntry([name, slot]) {
57
+ return [name, slot.default];
58
+ })));
59
+ }
60
+ export function scenarioBindingsForTiming(scenarios, bindings, timing) {
61
+ return Object.freeze(Object.fromEntries(Object.entries(scenarios).flatMap(function bindingForMatchingTiming([name, slot]) {
62
+ if (slot.timing !== timing) {
63
+ return [];
64
+ }
65
+ return [[name, bindings[name] ?? slot.default]];
66
+ })));
67
+ }
68
+ //# sourceMappingURL=resource-scenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-scenario.js","sourceRoot":"","sources":["../../../../source/resources/resource-scenario.ts"],"names":[],"mappings":"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"}
@@ -16,12 +16,13 @@ export type ResourceSession<Resources extends ResourceDependencies> = AsyncDispo
16
16
  readonly context: ResourceContext<Resources>;
17
17
  readonly disposeOnce: (context: ResourceSessionDisposalContext) => Promise<void>;
18
18
  };
19
- export declare function disposeResources(order: readonly ResourceNode[], handles: ReadonlyMap<AnyResourceDefinition, unknown>, signal: AbortSignal): Promise<readonly ResourceLifecycleFailure[]>;
19
+ export declare function disposeResources(order: readonly ResourceNode[], ownerHandles: ReadonlyMap<AnyResourceDefinition, unknown>, resourceHandles: ReadonlyMap<AnyResourceDefinition, unknown>, signal: AbortSignal): Promise<readonly ResourceLifecycleFailure[]>;
20
20
  export declare function runtimeAsyncDisposeSymbol(): symbol;
21
21
  export declare function acquireResourceGraph<Resources extends ResourceDependencies>(request: StartResourcesRequest<Resources>, context: ResourceAcquisitionContext): Promise<{
22
22
  readonly context: ResourceContext<Resources>;
23
- readonly handles: ReadonlyMap<AnyResourceDefinition, unknown>;
23
+ readonly ownerHandles: ReadonlyMap<AnyResourceDefinition, unknown>;
24
24
  readonly order: readonly ResourceNode[];
25
+ readonly resourceHandles: ReadonlyMap<AnyResourceDefinition, unknown>;
25
26
  }>;
26
27
  export declare function startResources<Resources extends ResourceDependencies>(request: StartResourcesRequest<Resources>): Promise<ResourceSession<Resources>>;
27
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"resource-session.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EAErB,eAAe,EAEf,oBAAoB,EAEvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAMH,KAAK,YAAY,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGH,KAAK,wBAAwB,EAChC,MAAM,+BAA+B,CAAC;AASvC,KAAK,0BAA0B,GAAG;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACzC,CAAC;AAiBF,MAAM,MAAM,qBAAqB,CAAC,SAAS,SAAS,oBAAoB,IAAI;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,oBAAoB,IAAI,eAAe,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF,CAAC;AAsDF,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,EACpD,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC,CAY9C;AAuID,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAQD,wBAAsB,oBAAoB,CAAC,SAAS,SAAS,oBAAoB,EAC7E,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,0BAA0B,GACpC,OAAO,CAAC;IACP,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C,CAAC,CASD;AAED,wBAAsB,cAAc,CAAC,SAAS,SAAS,oBAAoB,EACvE,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAC1C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CA4BrC"}
1
+ {"version":3,"file":"resource-session.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EAErB,eAAe,EAEf,oBAAoB,EAGvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAMH,KAAK,YAAY,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGH,KAAK,wBAAwB,EAChC,MAAM,+BAA+B,CAAC;AAcvC,KAAK,0BAA0B,GAAG;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACzC,CAAC;AAiBF,MAAM,MAAM,qBAAqB,CAAC,SAAS,SAAS,oBAAoB,IAAI;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,SAAS,SAAS,oBAAoB,IAAI,eAAe,GAAG;IACpF,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF,CAAC;AAwDF,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,YAAY,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,EACzD,eAAe,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,EAC5D,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC,CAY9C;AA4ID,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAQD,wBAAsB,oBAAoB,CAAC,SAAS,SAAS,oBAAoB,EAC7E,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,0BAA0B,GACpC,OAAO,CAAC;IACP,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;CACzE,CAAC,CAUD;AAED,wBAAsB,cAAc,CAAC,SAAS,SAAS,oBAAoB,EACvE,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAC1C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAiCrC"}