@overkill-dev/resources 0.0.5 → 0.0.6

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 (51) hide show
  1. package/package.json +10 -2
  2. package/packages/resources/resources.entry-point.d.ts +4 -2
  3. package/packages/resources/resources.entry-point.d.ts.map +1 -1
  4. package/packages/resources/resources.entry-point.js +1 -1
  5. package/packages/resources/resources.entry-point.js.map +1 -1
  6. package/readme.md +16 -3
  7. package/resources/resource-definition-brand.d.ts +2 -0
  8. package/resources/resource-definition-brand.d.ts.map +1 -0
  9. package/resources/resource-definition-brand.js +2 -0
  10. package/resources/resource-definition-brand.js.map +1 -0
  11. package/resources/resource-definition-shape.d.ts +3 -0
  12. package/resources/resource-definition-shape.d.ts.map +1 -1
  13. package/resources/resource-definition-types.d.ts +104 -0
  14. package/resources/resource-definition-types.d.ts.map +1 -0
  15. package/resources/resource-definition.js +52 -0
  16. package/resources/resource-definition.js.map +1 -0
  17. package/resources/resource-graph.d.ts +3 -3
  18. package/resources/resource-graph.d.ts.map +1 -1
  19. package/resources/resource-graph.js.map +1 -1
  20. package/resources/resource-scenario-binding.d.ts +37 -0
  21. package/resources/resource-scenario-binding.d.ts.map +1 -0
  22. package/resources/resource-scenario-binding.js +99 -0
  23. package/resources/resource-scenario-binding.js.map +1 -0
  24. package/resources/resource-scenario.d.ts +31 -0
  25. package/resources/resource-scenario.d.ts.map +1 -0
  26. package/resources/resource-scenario.js +68 -0
  27. package/resources/resource-scenario.js.map +1 -0
  28. package/resources/resource-session.d.ts +3 -2
  29. package/resources/resource-session.d.ts.map +1 -1
  30. package/resources/resource-session.js +24 -17
  31. package/resources/resource-session.js.map +1 -1
  32. package/resources/resources.d.ts +46 -76
  33. package/resources/resources.d.ts.map +1 -1
  34. package/resources/resources.js +19 -23
  35. package/resources/resources.js.map +1 -1
  36. package/resources/runtime-definition.d.ts +11 -2
  37. package/resources/runtime-definition.d.ts.map +1 -1
  38. package/resources/runtime-definition.js +50 -2
  39. package/resources/runtime-definition.js.map +1 -1
  40. package/resources/runtime-lifecycle.d.ts.map +1 -1
  41. package/resources/runtime-lifecycle.js +39 -2
  42. package/resources/runtime-lifecycle.js.map +1 -1
  43. package/resources/runtime-matrix-definition.d.ts +25 -6
  44. package/resources/runtime-matrix-definition.d.ts.map +1 -1
  45. package/resources/runtime-matrix-definition.js +78 -8
  46. package/resources/runtime-matrix-definition.js.map +1 -1
  47. package/resources/simulated-http-server-resource.d.ts +3 -2
  48. package/resources/simulated-http-server-resource.d.ts.map +1 -1
  49. package/resources/simulated-http-server-resource.js +66 -6
  50. package/resources/simulated-http-server-resource.js.map +1 -1
  51. package/sbom.cdx.json +22 -5
package/package.json CHANGED
@@ -3,6 +3,9 @@
3
3
  "bugs": {
4
4
  "url": "https://github.com/enormora/overkill/issues"
5
5
  },
6
+ "dependencies": {
7
+ "type-fest": "5.8.0"
8
+ },
6
9
  "description": "Typed Overkill resource and runtime descriptors.",
7
10
  "engines": {
8
11
  "node": "^26.9.0"
@@ -30,8 +33,13 @@
30
33
  },
31
34
  "sideEffects": [
32
35
  "./packages/resources/resources.entry-point.js",
33
- "./resources/local-service-resource.js"
36
+ "./resources/local-service-resource.js",
37
+ "./resources/resource-definition.js",
38
+ "./resources/resource-scenario-binding.js",
39
+ "./resources/resources.js",
40
+ "./resources/runtime-definition.js",
41
+ "./resources/runtime-matrix-definition.js"
34
42
  ],
35
43
  "type": "module",
36
- "version": "0.0.5"
44
+ "version": "0.0.6"
37
45
  }
@@ -9,12 +9,14 @@ export declare const defineResource: ResourcesModule['defineResource'];
9
9
  export declare const defineRuntime: ResourcesModule['defineRuntime'];
10
10
  export declare const defineRuntimeMatrix: ResourcesModule['defineRuntimeMatrix'];
11
11
  export { createSimulatedHttpServerResource } from '../../resources/simulated-http-server-resource.ts';
12
- export { isDefinedResource, isDefinedRuntime, isDefinedRuntimeGraph, isDefinedRuntimeMatrix, runtimeGraphLeaves } from '../../resources/resources.ts';
12
+ export { isDefinedResource, isDefinedRuntime, isDefinedRuntimeGraph, isDefinedRuntimeMatrix, resolvedRuntimeScenarioOwners, runtimeGraphLeaves } from '../../resources/resources.ts';
13
13
  export { assertPerCaseResourceGraph, assertResourceDependencyScopes } from '../../resources/resource-graph.ts';
14
14
  export { startResources } from '../../resources/resource-session.ts';
15
15
  export { ResourceLifecycleError } from '../../resources/resource-lifecycle-error.ts';
16
16
  export { startRuntime } from '../../resources/runtime-lifecycle.ts';
17
- export type { AnyResourceDefinition, ComposedRuntimeGraph, ExecutionRequirement, ResourceContext, ResourceCreationContext, ResourceDependencies, ResourceDefinition, ResourceDefinitionInput, ResourceDisposalContext, ResourceHandle, ResourceProjectionContext, ResourceProjectionPayload, ResourceScope, RuntimeContext, RuntimeContextComposition, RuntimeDefinition, RuntimeDefinitionInput, RuntimeDimensions, RuntimeGraph, RuntimeGraphLeaf, RuntimeGraphContext, RuntimeId, RuntimeMatrixDefinition, RuntimeMatrixDefinitionInput, RuntimeMatrixVariant, RuntimeMatrixVariantMap, RuntimeResourceMap, RuntimeScopeContext, SharedRuntimeMatrixDefinitionInput, TemporaryDirectoryHandle } from '../../resources/resources.ts';
17
+ export type { AnyResourceDefinition, ComposedRuntimeGraph, ExecutionRequirement, ResourceContext, ResourceCreationContext, ResourceDependencies, ResourceDefinition, ResourceDefinitionInput, ResourceDisposalContext, ResourceHandle, ResourceProjectionContext, ResourceProjectionPayload, ResourceScope, ResourceScenarioBindings, ResourceScenarioSlot, ResourceScenarioSlotInput, ResourceScenarioSlotInputs, ResourceScenarioSlotsFromInputs, ResourceScenarioSlots, RuntimeContext, RuntimeContextComposition, RuntimeDefinition, RuntimeDefinitionInput, RuntimeDimensions, RuntimeGraph, RuntimeGraphLeaf, RuntimeGraphContext, RuntimeId, RuntimeMatrixDefinition, RuntimeMatrixDefinitionInput, RuntimeMatrixVariant, RuntimeMatrixVariantMap, RuntimeResourceMap, RuntimeScopeContext, RuntimeScenarioOwner, ScenarioTiming, SharedRuntimeMatrixDefinitionInput, TemporaryDirectoryHandle } from '../../resources/resources.ts';
18
+ export type { ResourceHandleExposureContext } from '../../resources/resource-definition-types.ts';
19
+ export type { ResourceScenarioBindingsForTiming } from '../../resources/resource-scenario.ts';
18
20
  export type { LocalServiceAddress, LocalServiceAddressRequest, LocalServiceCreationContext, LocalServiceDisposalContext, LocalServiceHostAddressRequest, LocalServiceLoopbackAddressRequest, LocalServiceResourceDefinitionInput, LocalOnlyLocalServiceResourceDefinitionInput, ProjectedLocalServiceResourceDefinitionInput } from '../../resources/local-service-resource.ts';
19
21
  export type { LocalHttpServiceHandle, LocalHttpServiceResourceInput } from '../../resources/local-http-service-resource.ts';
20
22
  export type { LocalProcessCommand, LocalProcessOutput, LocalProcessOutputBuffer, LocalProcessOwner, LocalProcessServiceResourceInput, LocalProcessShutdown, LocalProcessSignal } from '../../resources/local-process-service-resource.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"resources.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/resources/resources.entry-point.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EACH,0BAA0B,EAC7B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACH,8BAA8B,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAY3D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CAAC,uBAAuB,CAAyC,CAAC;AACrH,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAmC,CAAC;AACnG,eAAO,MAAM,gCAAgC,EAAE,eAAe,CAAC,kCAAkC,CAC7C,CAAC;AACrD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAkC,CAAC;AAChG,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,eAAe,CAAiC,CAAC;AAC7F,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAuC,CAAC;AAE/G,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,cAAc,EACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACH,YAAY,EACf,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,kCAAkC,EAClC,wBAAwB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,EACnC,4CAA4C,EAC5C,4CAA4C,EAC/C,MAAM,2CAA2C,CAAC;AACnD,YAAY,EACR,sBAAsB,EACtB,6BAA6B,EAChC,MAAM,gDAAgD,CAAC;AACxD,YAAY,EACR,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,gCAAgC,EAChC,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACR,2BAA2B,EAC3B,iCAAiC,EACjC,kCAAkC,EACrC,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACR,iBAAiB,IAAI,OAAO,EAC5B,kBAAkB,IAAI,WAAW,EACpC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,wBAAwB,EACxB,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EACR,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACxB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACR,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,EACtB,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"resources.entry-point.d.ts","sourceRoot":"","sources":["../../../../../source/packages/resources/resources.entry-point.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EACH,0BAA0B,EAC7B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACH,8BAA8B,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAY3D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CAAC,uBAAuB,CAAyC,CAAC;AACrH,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAmC,CAAC;AACnG,eAAO,MAAM,gCAAgC,EAAE,eAAe,CAAC,kCAAkC,CAC7C,CAAC;AACrD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAkC,CAAC;AAChG,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,eAAe,CAAiC,CAAC;AAC7F,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAuC,CAAC;AAE/G,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,cAAc,EACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACH,YAAY,EACf,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,kCAAkC,EAClC,wBAAwB,EAC3B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAClG,YAAY,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AAC9F,YAAY,EACR,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,EACnC,4CAA4C,EAC5C,4CAA4C,EAC/C,MAAM,2CAA2C,CAAC;AACnD,YAAY,EACR,sBAAsB,EACtB,6BAA6B,EAChC,MAAM,gDAAgD,CAAC;AACxD,YAAY,EACR,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,gCAAgC,EAChC,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACR,2BAA2B,EAC3B,iCAAiC,EACjC,kCAAkC,EACrC,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACR,iBAAiB,IAAI,OAAO,EAC5B,kBAAkB,IAAI,WAAW,EACpC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,wBAAwB,EACxB,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EACR,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACxB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACR,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,EACtB,MAAM,sCAAsC,CAAC"}
@@ -21,7 +21,7 @@ export const defineResource = resourcesModule.defineResource;
21
21
  export const defineRuntime = resourcesModule.defineRuntime;
22
22
  export const defineRuntimeMatrix = resourcesModule.defineRuntimeMatrix;
23
23
  export { createSimulatedHttpServerResource } from "../../resources/simulated-http-server-resource.js";
24
- export { isDefinedResource, isDefinedRuntime, isDefinedRuntimeGraph, isDefinedRuntimeMatrix, runtimeGraphLeaves } from "../../resources/resources.js";
24
+ export { isDefinedResource, isDefinedRuntime, isDefinedRuntimeGraph, isDefinedRuntimeMatrix, resolvedRuntimeScenarioOwners, runtimeGraphLeaves } from "../../resources/resources.js";
25
25
  export { assertPerCaseResourceGraph, assertResourceDependencyScopes } from "../../resources/resource-graph.js";
26
26
  export { startResources } from "../../resources/resource-session.js";
27
27
  export { ResourceLifecycleError } from "../../resources/resource-lifecycle-error.js";
@@ -1 +1 @@
1
- {"version":3,"file":"resources.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/resources/resources.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EACH,0BAA0B,EAC7B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACH,8BAA8B,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAE3D,MAAM,eAAe,GAAG,qBAAqB,CAAC;IAC1C,4BAA4B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC;IAC7E,KAAK,CAAC,wBAAwB,CAAC,UAAU;QACrC,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,IAAI;QACtB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAA6C,eAAe,CAAC,qBAAqB,CAAC;AACrH,MAAM,CAAC,MAAM,eAAe,GAAuC,eAAe,CAAC,eAAe,CAAC;AACnG,MAAM,CAAC,MAAM,gCAAgC,GACzC,eAAe,CAAC,gCAAgC,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAsC,eAAe,CAAC,cAAc,CAAC;AAChG,MAAM,CAAC,MAAM,aAAa,GAAqC,eAAe,CAAC,aAAa,CAAC;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAA2C,eAAe,CAAC,mBAAmB,CAAC;AAE/G,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,cAAc,EACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACH,YAAY,EACf,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"resources.entry-point.js","sourceRoot":"","sources":["../../../../../source/packages/resources/resources.entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EACH,0BAA0B,EAC7B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACH,8BAA8B,EACjC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAE3D,MAAM,eAAe,GAAG,qBAAqB,CAAC;IAC1C,4BAA4B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC;IAC7E,KAAK,CAAC,wBAAwB,CAAC,UAAU;QACrC,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,IAAI;QACtB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAA6C,eAAe,CAAC,qBAAqB,CAAC;AACrH,MAAM,CAAC,MAAM,eAAe,GAAuC,eAAe,CAAC,eAAe,CAAC;AACnG,MAAM,CAAC,MAAM,gCAAgC,GACzC,eAAe,CAAC,gCAAgC,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAsC,eAAe,CAAC,cAAc,CAAC;AAChG,MAAM,CAAC,MAAM,aAAa,GAAqC,eAAe,CAAC,aAAa,CAAC;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAA2C,eAAe,CAAC,mBAAmB,CAAC;AAE/G,OAAO,EACH,iCAAiC,EACpC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,cAAc,EACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,sBAAsB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACH,YAAY,EACf,MAAM,sCAAsC,CAAC"}
package/readme.md CHANGED
@@ -139,10 +139,23 @@ readiness, and terminates then force-kills during disposal according to the
139
139
  declared shutdown contract. Output buffers are lifecycle diagnostics, not
140
140
  artifacts.
141
141
 
142
+ Resources may declare finite scenario slots with a default, timing, and allowed
143
+ values. `defineRuntime(...)` lifts slots from its complete dependency graph.
144
+ `runtime.scenario({...})` applies partial overrides, while omitted slots retain
145
+ their current value or declared default. Acquisition and disposal callbacks
146
+ receive acquire-timed values through `context.scenarios`. Those values form
147
+ part of the resource cache key.
148
+
149
+ Request-routed slots require `exposeHandle(handle, context)`. The callback
150
+ receives only request-routed values and returns the handle view for that use.
151
+ Different routed bindings reuse one acquired owner handle. A dependent
152
+ resource still acquires separately when those views differ.
153
+
142
154
  `createSimulatedHttpServerResource({ simulation, address })` starts a simulated
143
- HTTP server from `@overkill-dev/simulation` as a per-case resource. The
144
- acquired handle exposes `baseUrl` for the `default` scenario and
145
- `scenarioUrl(...)` for URL-selected scenarios.
155
+ HTTP server from `@overkill-dev/simulation` as a per-case resource. Its
156
+ request-routed scenario slot uses the simulation name. A runtime binding makes
157
+ `baseUrl` select that scenario, while `scenarioUrl(...)` remains available for
158
+ explicit URL selection.
146
159
 
147
160
  `startRuntime(...)` acquires dependencies before dependents, shares one handle
148
161
  per descriptor inside the session, and disposes acquired resources once in
@@ -0,0 +1,2 @@
1
+ export declare const resourceDefinitionBrand: unique symbol;
2
+ //# sourceMappingURL=resource-definition-brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-definition-brand.d.ts","sourceRoot":"","sources":["../../../../source/resources/resource-definition-brand.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,OAAO,MAA8C,CAAC"}
@@ -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