@decaf-ts/integrations 0.3.8 → 0.3.10
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.
- package/dist/integrations.cjs +2 -1649
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.js +2 -1885
- package/dist/integrations.js.map +1 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs.map +1 -0
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs.map +1 -0
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/index.cjs +2 -2
- package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs.map +1 -0
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs.map +1 -0
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs.map +1 -0
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/docker/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/constants.cjs +58 -0
- package/lib/cjs/graph/engine/constants.cjs.map +1 -0
- package/lib/cjs/graph/engine/decorators.cjs +4 -0
- package/lib/cjs/graph/engine/decorators.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +27 -0
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +20 -0
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/index.cjs +31 -0
- package/lib/cjs/graph/engine/errors/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +4 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +40 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +37 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +4 -0
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/index.cjs +27 -0
- package/lib/cjs/graph/engine/events/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +4 -0
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +79 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +413 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +32 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +30 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +4 -0
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +103 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/index.cjs +30 -0
- package/lib/cjs/graph/engine/execution/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/index.cjs +84 -0
- package/lib/cjs/graph/engine/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +87 -0
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +85 -0
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +85 -0
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +16 -0
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +77 -0
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +78 -0
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/index.cjs +29 -0
- package/lib/cjs/graph/engine/loops/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +28 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +20 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +34 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +191 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/index.cjs +27 -0
- package/lib/cjs/graph/engine/pinning/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +4 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +197 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +172 -0
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs +57 -0
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/index.cjs +30 -0
- package/lib/cjs/graph/engine/planning/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +44 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +27 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/index.cjs +25 -0
- package/lib/cjs/graph/engine/registry/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +53 -0
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +1 -0
- package/lib/cjs/graph/engine/snapshots/index.cjs +24 -0
- package/lib/cjs/graph/engine/snapshots/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +4 -0
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs +4 -0
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs +76 -0
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +4 -0
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +69 -0
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/index.cjs +28 -0
- package/lib/cjs/graph/engine/store/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/types.cjs +4 -0
- package/lib/cjs/graph/engine/types.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +33 -0
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +58 -0
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +52 -0
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/index.cjs +26 -0
- package/lib/cjs/graph/engine/validation/index.cjs.map +1 -0
- package/lib/cjs/graph/index.cjs +10 -60
- package/lib/cjs/graph/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/constants.cjs +44 -0
- package/lib/cjs/graph/shared/constants.cjs.map +1 -0
- package/lib/cjs/graph/shared/index.cjs +38 -0
- package/lib/cjs/graph/shared/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/agent.cjs +110 -0
- package/lib/cjs/graph/shared/nodes/agent.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/base.cjs +36 -0
- package/lib/cjs/graph/shared/nodes/base.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/category-styles.cjs +38 -0
- package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +464 -0
- package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/index.cjs +35 -0
- package/lib/cjs/graph/shared/nodes/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/triggers.cjs +250 -0
- package/lib/cjs/graph/shared/nodes/triggers.cjs.map +1 -0
- package/lib/cjs/graph/shared/types.cjs +4 -0
- package/lib/cjs/graph/shared/types.cjs.map +1 -0
- package/lib/cjs/index.cjs +5 -5
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/keycloak/index.cjs +2 -2
- package/lib/cjs/keycloak/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs.map +1 -0
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs.map +1 -0
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/kibana/types.cjs.map +1 -0
- package/lib/cjs/namespaces/index.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
- package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/index.cjs +2 -2
- package/lib/cjs/namespaces/models/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
- package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/user.model.cjs +2 -2
- package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +10 -4
- package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +19 -10
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +39 -13
- package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/index.cjs +2 -2
- package/lib/cjs/namespaces/services/index.cjs.map +1 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +6 -4
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +16 -7
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
- package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
- package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +4 -3
- package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
- package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
- package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/user.service.cjs +2 -2
- package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
- package/lib/cjs/namespaces/types.cjs +2 -2
- package/lib/cjs/namespaces/types.cjs.map +1 -0
- package/lib/cjs/namespaces/utils.cjs +13 -5
- package/lib/cjs/namespaces/utils.cjs.map +1 -0
- package/lib/cjs/nest/authService.cjs +2 -2
- package/lib/cjs/nest/authService.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +6 -4
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +97 -11
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +1 -0
- package/lib/cjs/nest/graph/index.cjs +2 -2
- package/lib/cjs/nest/graph/index.cjs.map +1 -0
- package/lib/cjs/nest/graph/main.cjs +30 -0
- package/lib/cjs/nest/graph/main.cjs.map +1 -0
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/index.cjs.map +1 -0
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/logging.cjs.map +1 -0
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/types.cjs.map +1 -0
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/nest/utils.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs.map +1 -0
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs.map +1 -0
- package/lib/cjs/utils.cjs +2 -2
- package/lib/cjs/utils.cjs.map +1 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/azure/index.js.map +1 -0
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js.map +1 -0
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobKey.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js.map +1 -0
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/BlobValue.js.map +1 -0
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/core/index.js.map +1 -0
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/gcp/index.js.map +1 -0
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/index.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/index.js +1 -1
- package/lib/esm/blob/ipfs/index.js.map +1 -0
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/local/index.js.map +1 -0
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/memory/index.js.map +1 -0
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/blob/s3/index.js.map +1 -0
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/DockerComposeService.js.map +1 -0
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/docker/index.js.map +1 -0
- package/lib/esm/graph/engine/constants.js +62 -0
- package/lib/esm/graph/engine/constants.js.map +1 -0
- package/lib/esm/graph/engine/decorators.js +2 -0
- package/lib/esm/graph/engine/decorators.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphCycleError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphCycleError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphExecutionError.js +22 -0
- package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphInputError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphInputError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphPinningError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphPinningError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphPortError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphPortError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphStoreError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphStoreError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphTopologyError.js +15 -0
- package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +1 -0
- package/lib/esm/graph/engine/errors/index.js +14 -0
- package/lib/esm/graph/engine/errors/index.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js +2 -0
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +35 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +32 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js +2 -0
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +1 -0
- package/lib/esm/graph/engine/events/index.js +10 -0
- package/lib/esm/graph/engine/events/index.js.map +1 -0
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +18 -0
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js +74 -0
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +408 -0
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +27 -0
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js +26 -0
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +2 -0
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +98 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/index.js +13 -0
- package/lib/esm/graph/engine/execution/index.js.map +1 -0
- package/lib/esm/graph/engine/index.js +67 -0
- package/lib/esm/graph/engine/index.js.map +1 -0
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +82 -0
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +80 -0
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +80 -0
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +11 -0
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +1 -0
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +72 -0
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +73 -0
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/index.js +12 -0
- package/lib/esm/graph/engine/loops/index.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +23 -0
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +15 -0
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +29 -0
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningService.js +186 -0
- package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +1 -0
- package/lib/esm/graph/engine/pinning/index.js +10 -0
- package/lib/esm/graph/engine/pinning/index.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +7 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +2 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +192 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js +167 -0
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphTopology.js +52 -0
- package/lib/esm/graph/engine/planning/GraphTopology.js.map +1 -0
- package/lib/esm/graph/engine/planning/index.js +13 -0
- package/lib/esm/graph/engine/planning/index.js.map +1 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +39 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +1 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +22 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +1 -0
- package/lib/esm/graph/engine/registry/index.js +8 -0
- package/lib/esm/graph/engine/registry/index.js.map +1 -0
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +48 -0
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +1 -0
- package/lib/esm/graph/engine/snapshots/index.js +7 -0
- package/lib/esm/graph/engine/snapshots/index.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphCachedValue.js +2 -0
- package/lib/esm/graph/engine/store/GraphCachedValue.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueKey.js +7 -0
- package/lib/esm/graph/engine/store/GraphValueKey.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueStore.js +71 -0
- package/lib/esm/graph/engine/store/GraphValueStore.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +2 -0
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +1 -0
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +64 -0
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +1 -0
- package/lib/esm/graph/engine/store/index.js +11 -0
- package/lib/esm/graph/engine/store/index.js.map +1 -0
- package/lib/esm/graph/engine/types.js +2 -0
- package/lib/esm/graph/engine/types.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +28 -0
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +53 -0
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphValueValidator.js +47 -0
- package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +1 -0
- package/lib/esm/graph/engine/validation/index.js +9 -0
- package/lib/esm/graph/engine/validation/index.js.map +1 -0
- package/lib/esm/graph/index.js +9 -59
- package/lib/esm/graph/index.js.map +1 -0
- package/lib/esm/graph/shared/constants.js +56 -0
- package/lib/esm/graph/shared/constants.js.map +1 -0
- package/lib/esm/graph/shared/index.js +19 -0
- package/lib/esm/graph/shared/index.js.map +1 -0
- package/lib/esm/graph/shared/nodes/agent.js +101 -0
- package/lib/esm/graph/shared/nodes/agent.js.map +1 -0
- package/lib/esm/graph/shared/nodes/base.js +31 -0
- package/lib/esm/graph/shared/nodes/base.js.map +1 -0
- package/lib/esm/graph/shared/nodes/category-styles.js +34 -0
- package/lib/esm/graph/shared/nodes/category-styles.js.map +1 -0
- package/lib/esm/graph/shared/nodes/flow-control.js +455 -0
- package/lib/esm/graph/shared/nodes/flow-control.js.map +1 -0
- package/lib/esm/graph/shared/nodes/index.js +18 -0
- package/lib/esm/graph/shared/nodes/index.js.map +1 -0
- package/lib/esm/graph/shared/nodes/triggers.js +241 -0
- package/lib/esm/graph/shared/nodes/triggers.js.map +1 -0
- package/lib/esm/graph/shared/types.js +2 -0
- package/lib/esm/graph/shared/types.js.map +1 -0
- package/lib/esm/index.js +4 -4
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/keycloak/index.js +1 -1
- package/lib/esm/keycloak/index.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/index.js.map +1 -0
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/services/runtime.js.map +1 -0
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/keycloak/types.js.map +1 -0
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/helpers.js.map +1 -0
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/index.js.map +1 -0
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/index.js.map +1 -0
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/services/runtime.js.map +1 -0
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/kibana/types.js.map +1 -0
- package/lib/esm/namespaces/index.js +1 -1
- package/lib/esm/namespaces/index.js.map +1 -0
- package/lib/esm/namespaces/models/authorization-model.js +1 -1
- package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
- package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/group-membership.model.js +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/group.model.js +1 -1
- package/lib/esm/namespaces/models/group.model.js.map +1 -0
- package/lib/esm/namespaces/models/index.js +1 -1
- package/lib/esm/namespaces/models/index.js.map +1 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
- package/lib/esm/namespaces/models/permission.model.js +1 -1
- package/lib/esm/namespaces/models/permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/principal.model.js +1 -1
- package/lib/esm/namespaces/models/principal.model.js.map +1 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-permission.model.js +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/role.model.js +1 -1
- package/lib/esm/namespaces/models/role.model.js.map +1 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant.model.js +3 -3
- package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
- package/lib/esm/namespaces/models/user.model.js +1 -1
- package/lib/esm/namespaces/models/user.model.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +10 -4
- package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +18 -9
- package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
- package/lib/esm/namespaces/services/authz.service.js +40 -14
- package/lib/esm/namespaces/services/authz.service.js.map +1 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
- package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
- package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/group-membership.service.js +1 -1
- package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/group.service.js +1 -1
- package/lib/esm/namespaces/services/group.service.js.map +1 -0
- package/lib/esm/namespaces/services/index.js +1 -1
- package/lib/esm/namespaces/services/index.js.map +1 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +5 -3
- package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +16 -7
- package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
- package/lib/esm/namespaces/services/permission.service.js +1 -1
- package/lib/esm/namespaces/services/permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/principal.service.js +1 -1
- package/lib/esm/namespaces/services/principal.service.js.map +1 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
- package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
- package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +3 -2
- package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-permission.service.js +1 -1
- package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/role.service.js +1 -1
- package/lib/esm/namespaces/services/role.service.js.map +1 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
- package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
- package/lib/esm/namespaces/services/system-management.service.js +1 -1
- package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant.service.js +1 -1
- package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
- package/lib/esm/namespaces/services/user.service.js +1 -1
- package/lib/esm/namespaces/services/user.service.js.map +1 -0
- package/lib/esm/namespaces/types.js +1 -1
- package/lib/esm/namespaces/types.js.map +1 -0
- package/lib/esm/namespaces/utils.js +12 -4
- package/lib/esm/namespaces/utils.js.map +1 -0
- package/lib/esm/nest/authService.js +1 -1
- package/lib/esm/nest/authService.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionController.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +6 -4
- package/lib/esm/nest/graph/GraphExecutionModule.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +96 -11
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +1 -0
- package/lib/esm/nest/graph/index.js +1 -1
- package/lib/esm/nest/graph/index.js.map +1 -0
- package/lib/esm/nest/graph/main.js +27 -0
- package/lib/esm/nest/graph/main.js.map +1 -0
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/index.js.map +1 -0
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/keycloakModule.js.map +1 -0
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/logging.js.map +1 -0
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/types.js.map +1 -0
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/nest/utils.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/aws/index.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/azure/index.js.map +1 -0
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretName.js.map +1 -0
- package/lib/esm/secrets/core/SecretReference.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js.map +1 -0
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretService.js.map +1 -0
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/core/index.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/gcp/index.js.map +1 -0
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/index.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/Secret.js.map +1 -0
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/model/index.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/onepassword/index.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/secrets/vault/index.js.map +1 -0
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/shared/runtime.js.map +1 -0
- package/lib/esm/utils.js +1 -1
- package/lib/esm/utils.js.map +1 -0
- package/lib/types/graph/engine/constants.d.cts +59 -0
- package/lib/types/graph/engine/constants.d.mts +59 -0
- package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.cts +1 -1
- package/lib/types/graph/{execution → engine/execution}/GraphExecutionResult.d.mts +1 -1
- package/lib/types/graph/engine/index.d.cts +61 -0
- package/lib/types/graph/engine/index.d.mts +61 -0
- package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.cts +1 -1
- package/lib/types/graph/{loops → engine/loops}/ConditionExpressionEvaluator.d.mts +1 -1
- package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.cts +2 -1
- package/lib/types/graph/{loops → engine/loops}/GraphConditionEvaluator.d.mts +2 -1
- package/lib/types/graph/{types.d.cts → engine/types.d.cts} +12 -148
- package/lib/types/graph/{types.d.mts → engine/types.d.mts} +12 -148
- package/lib/types/graph/index.d.cts +8 -53
- package/lib/types/graph/index.d.mts +8 -53
- package/lib/types/graph/shared/constants.d.cts +53 -0
- package/lib/types/graph/shared/constants.d.mts +53 -0
- package/lib/types/graph/shared/index.d.cts +18 -0
- package/lib/types/graph/shared/index.d.mts +18 -0
- package/lib/types/graph/shared/types.d.cts +162 -0
- package/lib/types/graph/shared/types.d.mts +162 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +33 -5
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +33 -5
- package/lib/types/nest/graph/main.d.cts +1 -0
- package/lib/types/nest/graph/main.d.mts +1 -0
- package/package.json +19 -8
- package/lib/cjs/graph/constants.cjs +0 -94
- package/lib/cjs/graph/decorators.cjs +0 -4
- package/lib/cjs/graph/errors/GraphCycleError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphExecutionError.cjs +0 -27
- package/lib/cjs/graph/errors/GraphInputError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPinningError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphPortError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphStoreError.cjs +0 -20
- package/lib/cjs/graph/errors/GraphTopologyError.cjs +0 -20
- package/lib/cjs/graph/errors/index.cjs +0 -31
- package/lib/cjs/graph/events/GraphExecutionEvent.cjs +0 -4
- package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +0 -40
- package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +0 -37
- package/lib/cjs/graph/events/GraphExecutionObserver.cjs +0 -4
- package/lib/cjs/graph/events/index.cjs +0 -27
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +0 -4
- package/lib/cjs/graph/execution/GraphExecutionContext.cjs +0 -79
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +0 -407
- package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +0 -32
- package/lib/cjs/graph/execution/GraphExecutionResult.cjs +0 -30
- package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +0 -4
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +0 -103
- package/lib/cjs/graph/execution/index.cjs +0 -30
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +0 -87
- package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +0 -84
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +0 -85
- package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +0 -16
- package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +0 -76
- package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +0 -77
- package/lib/cjs/graph/loops/index.cjs +0 -29
- package/lib/cjs/graph/nodes/agent.cjs +0 -110
- package/lib/cjs/graph/nodes/base.cjs +0 -35
- package/lib/cjs/graph/nodes/category-styles.cjs +0 -38
- package/lib/cjs/graph/nodes/flow-control.cjs +0 -464
- package/lib/cjs/graph/nodes/index.cjs +0 -35
- package/lib/cjs/graph/nodes/triggers.cjs +0 -250
- package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +0 -28
- package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +0 -20
- package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +0 -34
- package/lib/cjs/graph/pinning/GraphPinningService.cjs +0 -191
- package/lib/cjs/graph/pinning/index.cjs +0 -27
- package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +0 -4
- package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +0 -197
- package/lib/cjs/graph/planning/GraphRelationResolver.cjs +0 -172
- package/lib/cjs/graph/planning/GraphTopology.cjs +0 -57
- package/lib/cjs/graph/planning/index.cjs +0 -30
- package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +0 -44
- package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +0 -27
- package/lib/cjs/graph/registry/index.cjs +0 -25
- package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
- package/lib/cjs/graph/snapshots/index.cjs +0 -24
- package/lib/cjs/graph/store/GraphCachedValue.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueKey.cjs +0 -4
- package/lib/cjs/graph/store/GraphValueStore.cjs +0 -76
- package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +0 -4
- package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
- package/lib/cjs/graph/store/index.cjs +0 -28
- package/lib/cjs/graph/types.cjs +0 -4
- package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +0 -33
- package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +0 -58
- package/lib/cjs/graph/validation/GraphValueValidator.cjs +0 -52
- package/lib/cjs/graph/validation/index.cjs +0 -26
- package/lib/esm/graph/constants.js +0 -106
- package/lib/esm/graph/decorators.js +0 -2
- package/lib/esm/graph/errors/GraphCycleError.js +0 -15
- package/lib/esm/graph/errors/GraphExecutionError.js +0 -22
- package/lib/esm/graph/errors/GraphInputError.js +0 -15
- package/lib/esm/graph/errors/GraphLoopLimitError.js +0 -15
- package/lib/esm/graph/errors/GraphPinningError.js +0 -15
- package/lib/esm/graph/errors/GraphPortError.js +0 -15
- package/lib/esm/graph/errors/GraphStoreError.js +0 -15
- package/lib/esm/graph/errors/GraphTopologyError.js +0 -15
- package/lib/esm/graph/errors/index.js +0 -14
- package/lib/esm/graph/events/GraphExecutionEvent.js +0 -2
- package/lib/esm/graph/events/GraphExecutionEventEmitter.js +0 -35
- package/lib/esm/graph/events/GraphExecutionEventFactory.js +0 -32
- package/lib/esm/graph/events/GraphExecutionObserver.js +0 -2
- package/lib/esm/graph/events/index.js +0 -10
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js +0 -18
- package/lib/esm/graph/execution/GraphExecutionContext.js +0 -74
- package/lib/esm/graph/execution/GraphExecutionEngine.js +0 -402
- package/lib/esm/graph/execution/GraphExecutionFrame.js +0 -27
- package/lib/esm/graph/execution/GraphExecutionResult.js +0 -26
- package/lib/esm/graph/execution/GraphNodeExecutor.js +0 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +0 -98
- package/lib/esm/graph/execution/index.js +0 -13
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +0 -82
- package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +0 -79
- package/lib/esm/graph/loops/GraphConditionEvaluator.js +0 -80
- package/lib/esm/graph/loops/GraphLoopExecutionContext.js +0 -11
- package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +0 -71
- package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +0 -72
- package/lib/esm/graph/loops/index.js +0 -12
- package/lib/esm/graph/nodes/agent.js +0 -101
- package/lib/esm/graph/nodes/base.js +0 -30
- package/lib/esm/graph/nodes/category-styles.js +0 -34
- package/lib/esm/graph/nodes/flow-control.js +0 -455
- package/lib/esm/graph/nodes/index.js +0 -18
- package/lib/esm/graph/nodes/triggers.js +0 -241
- package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +0 -23
- package/lib/esm/graph/pinning/GraphPinningMetadata.js +0 -15
- package/lib/esm/graph/pinning/GraphPinningPolicy.js +0 -29
- package/lib/esm/graph/pinning/GraphPinningService.js +0 -186
- package/lib/esm/graph/pinning/index.js +0 -10
- package/lib/esm/graph/planning/GraphExecutionPlan.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +0 -7
- package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanNode.js +0 -2
- package/lib/esm/graph/planning/GraphExecutionPlanner.js +0 -192
- package/lib/esm/graph/planning/GraphRelationResolver.js +0 -167
- package/lib/esm/graph/planning/GraphTopology.js +0 -52
- package/lib/esm/graph/planning/index.js +0 -13
- package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +0 -39
- package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +0 -22
- package/lib/esm/graph/registry/index.js +0 -8
- package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +0 -48
- package/lib/esm/graph/snapshots/index.js +0 -7
- package/lib/esm/graph/store/GraphCachedValue.js +0 -2
- package/lib/esm/graph/store/GraphValueKey.js +0 -7
- package/lib/esm/graph/store/GraphValueStore.js +0 -71
- package/lib/esm/graph/store/GraphValueStoreAdapter.js +0 -2
- package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +0 -64
- package/lib/esm/graph/store/index.js +0 -11
- package/lib/esm/graph/types.js +0 -2
- package/lib/esm/graph/validation/GraphDefinitionValidator.js +0 -28
- package/lib/esm/graph/validation/GraphPortSchemaResolver.js +0 -53
- package/lib/esm/graph/validation/GraphValueValidator.js +0 -47
- package/lib/esm/graph/validation/index.js +0 -9
- package/lib/types/graph/constants.d.cts +0 -101
- package/lib/types/graph/constants.d.mts +0 -101
- /package/lib/types/graph/{decorators.d.cts → engine/decorators.d.cts} +0 -0
- /package/lib/types/graph/{decorators.d.mts → engine/decorators.d.mts} +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphCycleError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphExecutionError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphInputError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphLoopLimitError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPinningError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphPortError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphStoreError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/GraphTopologyError.d.mts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.cts +0 -0
- /package/lib/types/graph/{errors → engine/errors}/index.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEvent.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventEmitter.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionEventFactory.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/GraphExecutionObserver.d.mts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.cts +0 -0
- /package/lib/types/graph/{events → engine/events}/index.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/CodeSandboxEvaluator.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionEngine.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphExecutionFrame.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/GraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/SwitchGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.cts +0 -0
- /package/lib/types/graph/{execution → engine/execution}/index.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/ForeachGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/GraphLoopExecutionContext.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/UntilGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/WhileGraphNodeExecutor.d.mts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.cts +0 -0
- /package/lib/types/graph/{loops → engine/loops}/index.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningDependencyResolver.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningMetadata.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningPolicy.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/GraphPinningService.d.mts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.cts +0 -0
- /package/lib/types/graph/{pinning → engine/pinning}/index.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlan.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanEdge.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanLayer.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanNode.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphExecutionPlanner.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphRelationResolver.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/GraphTopology.d.mts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.cts +0 -0
- /package/lib/types/graph/{planning → engine/planning}/index.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorRegistry.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/GraphNodeExecutorResolver.d.mts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.cts +0 -0
- /package/lib/types/graph/{registry → engine/registry}/index.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/GraphExecutionSnapshotMapper.d.mts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.cts +0 -0
- /package/lib/types/graph/{snapshots → engine/snapshots}/index.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphCachedValue.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueKey.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStore.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/GraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/InMemoryGraphValueStoreAdapter.d.mts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.cts +0 -0
- /package/lib/types/graph/{store → engine/store}/index.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphDefinitionValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphPortSchemaResolver.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/GraphValueValidator.d.mts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.cts +0 -0
- /package/lib/types/graph/{validation → engine/validation}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/agent.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/base.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/category-styles.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/flow-control.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/index.d.mts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.cts +0 -0
- /package/lib/types/graph/{nodes → shared/nodes}/triggers.d.mts +0 -0
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { graphDefinitionOf } from "@decaf-ts/ui-decorators/graph";
|
|
2
|
-
import { GRAPH_WORKFLOW_BOUNDARY } from "./../constants.js";
|
|
3
|
-
import { GraphCycleError } from "./../errors/GraphCycleError.js";
|
|
4
|
-
import { GraphTopologyError } from "./../errors/GraphTopologyError.js";
|
|
5
|
-
import { GraphRelationResolver } from "./GraphRelationResolver.js";
|
|
6
|
-
/**
|
|
7
|
-
* Planner that turns a {@link GraphWorkflowDefinition} into a
|
|
8
|
-
* {@link GraphExecutionPlan} with topological layers.
|
|
9
|
-
*/
|
|
10
|
-
export class GraphExecutionPlanner {
|
|
11
|
-
constructor(resolver) {
|
|
12
|
-
this.resolver = resolver ?? new GraphRelationResolver();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Plans a workflow for execution.
|
|
16
|
-
*
|
|
17
|
-
* @param workflow - The workflow definition to plan.
|
|
18
|
-
* @returns The execution plan with nodes, edges, layers, and maps.
|
|
19
|
-
* @throws {GraphTopologyError} when node IDs are not unique.
|
|
20
|
-
* @throws {GraphCycleError} when the workflow contains an unsupported cycle.
|
|
21
|
-
*/
|
|
22
|
-
plan(workflow) {
|
|
23
|
-
this.validateUniqueNodeIds(workflow);
|
|
24
|
-
const nodes = this.resolveNodes(workflow);
|
|
25
|
-
const edges = this.resolver.resolve(workflow);
|
|
26
|
-
const incomingByNode = this.buildIncomingMap(edges);
|
|
27
|
-
const outgoingByNode = this.buildOutgoingMap(edges);
|
|
28
|
-
const layers = this.topologicalLayers(nodes, edges);
|
|
29
|
-
return {
|
|
30
|
-
workflow,
|
|
31
|
-
workflowId: workflow.name,
|
|
32
|
-
nodes,
|
|
33
|
-
edges,
|
|
34
|
-
layers,
|
|
35
|
-
incomingByNode,
|
|
36
|
-
outgoingByNode,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Validates that all workflow node IDs are unique.
|
|
41
|
-
*/
|
|
42
|
-
validateUniqueNodeIds(workflow) {
|
|
43
|
-
const seen = new Set();
|
|
44
|
-
for (const node of workflow.nodes ?? []) {
|
|
45
|
-
if (seen.has(node.id)) {
|
|
46
|
-
throw new GraphTopologyError(`Duplicate node id '${node.id}' in workflow '${workflow.name}'`, { nodeId: node.id, workflowId: workflow.name });
|
|
47
|
-
}
|
|
48
|
-
seen.add(node.id);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Resolves workflow node metadata into plan nodes with full definitions.
|
|
53
|
-
*/
|
|
54
|
-
resolveNodes(workflow) {
|
|
55
|
-
const result = [];
|
|
56
|
-
for (const nodeMeta of workflow.nodes ?? []) {
|
|
57
|
-
const definition = this.resolveDefinition(nodeMeta);
|
|
58
|
-
const inputPorts = (definition.ports ?? [])
|
|
59
|
-
.filter((p) => p.direction === "input")
|
|
60
|
-
.map((p) => p.name);
|
|
61
|
-
const outputPorts = (definition.ports ?? [])
|
|
62
|
-
.filter((p) => p.direction === "output")
|
|
63
|
-
.map((p) => p.name);
|
|
64
|
-
result.push({
|
|
65
|
-
id: nodeMeta.id,
|
|
66
|
-
kind: nodeMeta.kind ?? definition.kind ?? nodeMeta.id,
|
|
67
|
-
label: nodeMeta.label,
|
|
68
|
-
source: nodeMeta,
|
|
69
|
-
definition,
|
|
70
|
-
inputPorts,
|
|
71
|
-
outputPorts,
|
|
72
|
-
metadata: nodeMeta.metadata,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Attempts to resolve the full graph node definition from metadata.
|
|
79
|
-
*
|
|
80
|
-
* Accepts either a decorated Model class/instance (resolved via
|
|
81
|
-
* `graphDefinitionOf`) or a plain `GraphNodeDefinition`-shaped object
|
|
82
|
-
* (useful for serialized workflows that inline node definitions).
|
|
83
|
-
*/
|
|
84
|
-
resolveDefinition(nodeMeta) {
|
|
85
|
-
if (nodeMeta.node) {
|
|
86
|
-
if (this.isRawDefinition(nodeMeta.node)) {
|
|
87
|
-
return nodeMeta.node;
|
|
88
|
-
}
|
|
89
|
-
try {
|
|
90
|
-
return graphDefinitionOf(nodeMeta.node);
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
// fall through to stub
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// Return a minimal stub definition so planning can proceed
|
|
97
|
-
return {
|
|
98
|
-
name: nodeMeta.id,
|
|
99
|
-
tag: nodeMeta.id,
|
|
100
|
-
kind: nodeMeta.kind ?? nodeMeta.id,
|
|
101
|
-
labels: [],
|
|
102
|
-
ports: [],
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Returns `true` when a value looks like a raw {@link GraphNodeDefinition}
|
|
107
|
-
* (a plain object with a `ports` array and a `name` string).
|
|
108
|
-
*/
|
|
109
|
-
isRawDefinition(value) {
|
|
110
|
-
return (typeof value === "object" &&
|
|
111
|
-
value !== null &&
|
|
112
|
-
!Array.isArray(value) &&
|
|
113
|
-
typeof value.name === "string" &&
|
|
114
|
-
Array.isArray(value.ports));
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Builds a map of node id -> incoming edges.
|
|
118
|
-
*/
|
|
119
|
-
buildIncomingMap(edges) {
|
|
120
|
-
const map = new Map();
|
|
121
|
-
for (const edge of edges) {
|
|
122
|
-
const list = map.get(edge.targetNodeId) ?? [];
|
|
123
|
-
list.push(edge);
|
|
124
|
-
map.set(edge.targetNodeId, list);
|
|
125
|
-
}
|
|
126
|
-
return map;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Builds a map of node id -> outgoing edges.
|
|
130
|
-
*/
|
|
131
|
-
buildOutgoingMap(edges) {
|
|
132
|
-
const map = new Map();
|
|
133
|
-
for (const edge of edges) {
|
|
134
|
-
const list = map.get(edge.sourceNodeId) ?? [];
|
|
135
|
-
list.push(edge);
|
|
136
|
-
map.set(edge.sourceNodeId, list);
|
|
137
|
-
}
|
|
138
|
-
return map;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Produces topological layers using Kahn's algorithm.
|
|
142
|
-
*
|
|
143
|
-
* Workflow boundary edges do not count as executable-node dependencies.
|
|
144
|
-
*/
|
|
145
|
-
topologicalLayers(nodes, edges) {
|
|
146
|
-
const executableNodes = nodes.filter((n) => n.id !== GRAPH_WORKFLOW_BOUNDARY);
|
|
147
|
-
const nodeIds = new Set(executableNodes.map((n) => n.id));
|
|
148
|
-
// Only edges between two executable nodes count as dependencies
|
|
149
|
-
const execEdges = edges.filter((e) => nodeIds.has(e.sourceNodeId) && nodeIds.has(e.targetNodeId));
|
|
150
|
-
// Compute in-degree
|
|
151
|
-
const indegree = new Map();
|
|
152
|
-
for (const node of executableNodes)
|
|
153
|
-
indegree.set(node.id, 0);
|
|
154
|
-
for (const edge of execEdges) {
|
|
155
|
-
indegree.set(edge.targetNodeId, (indegree.get(edge.targetNodeId) ?? 0) + 1);
|
|
156
|
-
}
|
|
157
|
-
const layers = [];
|
|
158
|
-
const planned = new Set();
|
|
159
|
-
let ready = executableNodes.filter((n) => (indegree.get(n.id) ?? 0) === 0);
|
|
160
|
-
let layerIndex = 0;
|
|
161
|
-
while (ready.length > 0) {
|
|
162
|
-
const layer = { index: layerIndex++, nodes: ready };
|
|
163
|
-
layers.push(layer);
|
|
164
|
-
const nextReady = [];
|
|
165
|
-
for (const node of ready) {
|
|
166
|
-
planned.add(node.id);
|
|
167
|
-
const outgoing = execEdges.filter((e) => e.sourceNodeId === node.id);
|
|
168
|
-
for (const edge of outgoing) {
|
|
169
|
-
const deg = (indegree.get(edge.targetNodeId) ?? 1) - 1;
|
|
170
|
-
indegree.set(edge.targetNodeId, deg);
|
|
171
|
-
if (deg === 0 && !planned.has(edge.targetNodeId)) {
|
|
172
|
-
const next = executableNodes.find((n) => n.id === edge.targetNodeId);
|
|
173
|
-
if (next)
|
|
174
|
-
nextReady.push(next);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
ready = nextReady;
|
|
179
|
-
}
|
|
180
|
-
if (planned.size !== executableNodes.length) {
|
|
181
|
-
const unplanned = executableNodes
|
|
182
|
-
.filter((n) => !planned.has(n.id))
|
|
183
|
-
.map((n) => n.id);
|
|
184
|
-
throw new GraphCycleError({
|
|
185
|
-
unplannedNodes: unplanned,
|
|
186
|
-
workflowId: nodes[0]?.definition?.name,
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
return layers;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25QbGFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMEJBQXFCO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsdUNBQWtDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQ0FBcUM7QUFLbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFnQztBQUVoRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQVksUUFBZ0M7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxDQUFDLFFBQWlDO1FBQ3BDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVwRCxPQUFPO1lBQ0wsUUFBUTtZQUNSLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTtZQUN6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TSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ3JFLElBQUksSUFBSTs0QkFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFNBQVMsR0FBRyxlQUFlO2lCQUM5QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxlQUFlLENBQUM7Z0JBQ3hCLGNBQWMsRUFBRSxTQUFTO2dCQUN6QixVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJO2FBQ3ZDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoRXhlY3V0aW9uUGxhbm5lclxuICogQHN1bW1hcnkgVG9wb2xvZ2ljYWwgcGxhbm5lciBmb3IgZ3JhcGggd29ya2Zsb3dzLlxuICogQGRlc2NyaXB0aW9uIFJlc29sdmVzIHdvcmtmbG93IG5vZGVzIGFuZCByZWxhdGlvbnMsIHZhbGlkYXRlcyB0b3BvbG9neSwgZGV0ZWN0cyBjeWNsZXMsIGFuZCBwcm9kdWNlcyB0b3BvbG9naWNhbCBleGVjdXRpb24gbGF5ZXJzIHVzaW5nIEthaG4ncyBhbGdvcml0aG0uXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgR3JhcGhOb2RlRGVmaW5pdGlvbixcbiAgR3JhcGhXb3JrZmxvd0RlZmluaXRpb24sXG59IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuaW1wb3J0IHsgZ3JhcGhEZWZpbml0aW9uT2YgfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHsgR1JBUEhfV09SS0ZMT1dfQk9VTkRBUlkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHcmFwaEN5Y2xlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoQ3ljbGVFcnJvclwiO1xuaW1wb3J0IHsgR3JhcGhUb3BvbG9neUVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaFRvcG9sb2d5RXJyb3JcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGUgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2UgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyIH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJcIjtcbmltcG9ydCB7IEdyYXBoUmVsYXRpb25SZXNvbHZlciB9IGZyb20gXCIuL0dyYXBoUmVsYXRpb25SZXNvbHZlclwiO1xuXG4vKipcbiAqIFBsYW5uZXIgdGhhdCB0dXJucyBhIHtAbGluayBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbn0gaW50byBhXG4gKiB7QGxpbmsgR3JhcGhFeGVjdXRpb25QbGFufSB3aXRoIHRvcG9sb2dpY2FsIGxheWVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uUGxhbm5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXI6IEdyYXBoUmVsYXRpb25SZXNvbHZlcjtcblxuICBjb25zdHJ1Y3RvcihyZXNvbHZlcj86IEdyYXBoUmVsYXRpb25SZXNvbHZlcikge1xuICAgIHRoaXMucmVzb2x2ZXIgPSByZXNvbHZlciA/PyBuZXcgR3JhcGhSZWxhdGlvblJlc29sdmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUGxhbnMgYSB3b3JrZmxvdyBmb3IgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gd29ya2Zsb3cgLSBUaGUgd29ya2Zsb3cgZGVmaW5pdGlvbiB0byBwbGFuLlxuICAgKiBAcmV0dXJucyBUaGUgZXhlY3V0aW9uIHBsYW4gd2l0aCBub2RlcywgZWRnZXMsIGxheWVycywgYW5kIG1hcHMuXG4gICAqIEB0aHJvd3Mge0dyYXBoVG9wb2xvZ3lFcnJvcn0gd2hlbiBub2RlIElEcyBhcmUgbm90IHVuaXF1ZS5cbiAgICogQHRocm93cyB7R3JhcGhDeWNsZUVycm9yfSB3aGVuIHRoZSB3b3JrZmxvdyBjb250YWlucyBhbiB1bnN1cHBvcnRlZCBjeWNsZS5cbiAgICovXG4gIHBsYW4od29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uKTogR3JhcGhFeGVjdXRpb25QbGFuIHtcbiAgICB0aGlzLnZhbGlkYXRlVW5pcXVlTm9kZUlkcyh3b3JrZmxvdyk7XG5cbiAgICBjb25zdCBub2RlcyA9IHRoaXMucmVzb2x2ZU5vZGVzKHdvcmtmbG93KTtcbiAgICBjb25zdCBlZGdlcyA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZSh3b3JrZmxvdyk7XG5cbiAgICBjb25zdCBpbmNvbWluZ0J5Tm9kZSA9IHRoaXMuYnVpbGRJbmNvbWluZ01hcChlZGdlcyk7XG4gICAgY29uc3Qgb3V0Z29pbmdCeU5vZGUgPSB0aGlzLmJ1aWxkT3V0Z29pbmdNYXAoZWRnZXMpO1xuXG4gICAgY29uc3QgbGF5ZXJzID0gdGhpcy50b3BvbG9naWNhbExheWVycyhub2RlcywgZWRnZXMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmtmbG93LFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cubmFtZSxcbiAgICAgIG5vZGVzLFxuICAgICAgZWRnZXMsXG4gICAgICBsYXllcnMsXG4gICAgICBpbmNvbWluZ0J5Tm9kZSxcbiAgICAgIG91dGdvaW5nQnlOb2RlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgYWxsIHdvcmtmbG93IG5vZGUgSURzIGFyZSB1bmlxdWUuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVW5pcXVlTm9kZUlkcyh3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHdvcmtmbG93Lm5vZGVzID8/IFtdKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMobm9kZS5pZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoVG9wb2xvZ3lFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIG5vZGUgaWQgJyR7bm9kZS5pZH0nIGluIHdvcmtmbG93ICcke3dvcmtmbG93Lm5hbWV9J2AsXG4gICAgICAgICAgeyBub2RlSWQ6IG5vZGUuaWQsIHdvcmtmbG93SWQ6IHdvcmtmbG93Lm5hbWUgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc2Vlbi5hZGQobm9kZS5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHdvcmtmbG93IG5vZGUgbWV0YWRhdGEgaW50byBwbGFuIG5vZGVzIHdpdGggZnVsbCBkZWZpbml0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZU5vZGVzKFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvblxuICApOiBHcmFwaEV4ZWN1dGlvblBsYW5Ob2RlW10ge1xuICAgIGNvbnN0IHJlc3VsdDogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdID0gW107XG4gICAgZm9yIChjb25zdCBub2RlTWV0YSBvZiB3b3JrZmxvdy5ub2RlcyA/PyBbXSkge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMucmVzb2x2ZURlZmluaXRpb24obm9kZU1ldGEpO1xuICAgICAgY29uc3QgaW5wdXRQb3J0cyA9IChkZWZpbml0aW9uLnBvcnRzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLmRpcmVjdGlvbiA9PT0gXCJpbnB1dFwiKVxuICAgICAgICAubWFwKChwKSA9PiBwLm5hbWUpO1xuICAgICAgY29uc3Qgb3V0cHV0UG9ydHMgPSAoZGVmaW5pdGlvbi5wb3J0cyA/PyBbXSlcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcC5kaXJlY3Rpb24gPT09IFwib3V0cHV0XCIpXG4gICAgICAgIC5tYXAoKHApID0+IHAubmFtZSk7XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIGlkOiBub2RlTWV0YS5pZCxcbiAgICAgICAga2luZDogbm9kZU1ldGEua2luZCA/PyBkZWZpbml0aW9uLmtpbmQgPz8gbm9kZU1ldGEuaWQsXG4gICAgICAgIGxhYmVsOiBub2RlTWV0YS5sYWJlbCxcbiAgICAgICAgc291cmNlOiBub2RlTWV0YSxcbiAgICAgICAgZGVmaW5pdGlvbixcbiAgICAgICAgaW5wdXRQb3J0cyxcbiAgICAgICAgb3V0cHV0UG9ydHMsXG4gICAgICAgIG1ldGFkYXRhOiBub2RlTWV0YS5tZXRhZGF0YSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIHJlc29sdmUgdGhlIGZ1bGwgZ3JhcGggbm9kZSBkZWZpbml0aW9uIGZyb20gbWV0YWRhdGEuXG4gICAqXG4gICAqIEFjY2VwdHMgZWl0aGVyIGEgZGVjb3JhdGVkIE1vZGVsIGNsYXNzL2luc3RhbmNlIChyZXNvbHZlZCB2aWFcbiAgICogYGdyYXBoRGVmaW5pdGlvbk9mYCkgb3IgYSBwbGFpbiBgR3JhcGhOb2RlRGVmaW5pdGlvbmAtc2hhcGVkIG9iamVjdFxuICAgKiAodXNlZnVsIGZvciBzZXJpYWxpemVkIHdvcmtmbG93cyB0aGF0IGlubGluZSBub2RlIGRlZmluaXRpb25zKS5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZURlZmluaXRpb24obm9kZU1ldGE6IHtcbiAgICBub2RlPzogdW5rbm93bjtcbiAgICBraW5kPzogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gIH0pOiBHcmFwaE5vZGVEZWZpbml0aW9uIHtcbiAgICBpZiAobm9kZU1ldGEubm9kZSkge1xuICAgICAgaWYgKHRoaXMuaXNSYXdEZWZpbml0aW9uKG5vZGVNZXRhLm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBub2RlTWV0YS5ub2RlIGFzIEdyYXBoTm9kZURlZmluaXRpb247XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ3JhcGhEZWZpbml0aW9uT2Yobm9kZU1ldGEubm9kZSBhcyBhbnkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byBzdHViXG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJldHVybiBhIG1pbmltYWwgc3R1YiBkZWZpbml0aW9uIHNvIHBsYW5uaW5nIGNhbiBwcm9jZWVkXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5vZGVNZXRhLmlkLFxuICAgICAgdGFnOiBub2RlTWV0YS5pZCxcbiAgICAgIGtpbmQ6IG5vZGVNZXRhLmtpbmQgPz8gbm9kZU1ldGEuaWQsXG4gICAgICBsYWJlbHM6IFtdLFxuICAgICAgcG9ydHM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgd2hlbiBhIHZhbHVlIGxvb2tzIGxpa2UgYSByYXcge0BsaW5rIEdyYXBoTm9kZURlZmluaXRpb259XG4gICAqIChhIHBsYWluIG9iamVjdCB3aXRoIGEgYHBvcnRzYCBhcnJheSBhbmQgYSBgbmFtZWAgc3RyaW5nKS5cbiAgICovXG4gIHByaXZhdGUgaXNSYXdEZWZpbml0aW9uKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgdHlwZW9mICh2YWx1ZSBhcyB7IG5hbWU/OiB1bmtub3duIH0pLm5hbWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoKHZhbHVlIGFzIHsgcG9ydHM/OiB1bmtub3duIH0pLnBvcnRzKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgbWFwIG9mIG5vZGUgaWQgLT4gaW5jb21pbmcgZWRnZXMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSW5jb21pbmdNYXAoXG4gICAgZWRnZXM6IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2VbXVxuICApOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdPigpO1xuICAgIGZvciAoY29uc3QgZWRnZSBvZiBlZGdlcykge1xuICAgICAgY29uc3QgbGlzdCA9IG1hcC5nZXQoZWRnZS50YXJnZXROb2RlSWQpID8/IFtdO1xuICAgICAgbGlzdC5wdXNoKGVkZ2UpO1xuICAgICAgbWFwLnNldChlZGdlLnRhcmdldE5vZGVJZCwgbGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgbWFwIG9mIG5vZGUgaWQgLT4gb3V0Z29pbmcgZWRnZXMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkT3V0Z29pbmdNYXAoXG4gICAgZWRnZXM6IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2VbXVxuICApOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdPigpO1xuICAgIGZvciAoY29uc3QgZWRnZSBvZiBlZGdlcykge1xuICAgICAgY29uc3QgbGlzdCA9IG1hcC5nZXQoZWRnZS5zb3VyY2VOb2RlSWQpID8/IFtdO1xuICAgICAgbGlzdC5wdXNoKGVkZ2UpO1xuICAgICAgbWFwLnNldChlZGdlLnNvdXJjZU5vZGVJZCwgbGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgdG9wb2xvZ2ljYWwgbGF5ZXJzIHVzaW5nIEthaG4ncyBhbGdvcml0aG0uXG4gICAqXG4gICAqIFdvcmtmbG93IGJvdW5kYXJ5IGVkZ2VzIGRvIG5vdCBjb3VudCBhcyBleGVjdXRhYmxlLW5vZGUgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSB0b3BvbG9naWNhbExheWVycyhcbiAgICBub2RlczogR3JhcGhFeGVjdXRpb25QbGFuTm9kZVtdLFxuICAgIGVkZ2VzOiBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW11cbiAgKTogR3JhcGhFeGVjdXRpb25QbGFuTGF5ZXJbXSB7XG4gICAgY29uc3QgZXhlY3V0YWJsZU5vZGVzID0gbm9kZXMuZmlsdGVyKFxuICAgICAgKG4pID0+IG4uaWQgIT09IEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZXG4gICAgKTtcbiAgICBjb25zdCBub2RlSWRzID0gbmV3IFNldChleGVjdXRhYmxlTm9kZXMubWFwKChuKSA9PiBuLmlkKSk7XG5cbiAgICAvLyBPbmx5IGVkZ2VzIGJldHdlZW4gdHdvIGV4ZWN1dGFibGUgbm9kZXMgY291bnQgYXMgZGVwZW5kZW5jaWVzXG4gICAgY29uc3QgZXhlY0VkZ2VzID0gZWRnZXMuZmlsdGVyKFxuICAgICAgKGUpID0+IG5vZGVJZHMuaGFzKGUuc291cmNlTm9kZUlkKSAmJiBub2RlSWRzLmhhcyhlLnRhcmdldE5vZGVJZClcbiAgICApO1xuXG4gICAgLy8gQ29tcHV0ZSBpbi1kZWdyZWVcbiAgICBjb25zdCBpbmRlZ3JlZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIGV4ZWN1dGFibGVOb2RlcykgaW5kZWdyZWUuc2V0KG5vZGUuaWQsIDApO1xuICAgIGZvciAoY29uc3QgZWRnZSBvZiBleGVjRWRnZXMpIHtcbiAgICAgIGluZGVncmVlLnNldChlZGdlLnRhcmdldE5vZGVJZCwgKGluZGVncmVlLmdldChlZGdlLnRhcmdldE5vZGVJZCkgPz8gMCkgKyAxKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXllcnM6IEdyYXBoRXhlY3V0aW9uUGxhbkxheWVyW10gPSBbXTtcbiAgICBjb25zdCBwbGFubmVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgbGV0IHJlYWR5ID0gZXhlY3V0YWJsZU5vZGVzLmZpbHRlcigobikgPT4gKGluZGVncmVlLmdldChuLmlkKSA/PyAwKSA9PT0gMCk7XG4gICAgbGV0IGxheWVySW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlYWR5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxheWVyOiBHcmFwaEV4ZWN1dGlvblBsYW5MYXllciA9IHsgaW5kZXg6IGxheWVySW5kZXgrKywgbm9kZXM6IHJlYWR5IH07XG4gICAgICBsYXllcnMucHVzaChsYXllcik7XG4gICAgICBjb25zdCBuZXh0UmVhZHk6IEdyYXBoRXhlY3V0aW9uUGxhbk5vZGVbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIHJlYWR5KSB7XG4gICAgICAgIHBsYW5uZWQuYWRkKG5vZGUuaWQpO1xuICAgICAgICBjb25zdCBvdXRnb2luZyA9IGV4ZWNFZGdlcy5maWx0ZXIoKGUpID0+IGUuc291cmNlTm9kZUlkID09PSBub2RlLmlkKTtcbiAgICAgICAgZm9yIChjb25zdCBlZGdlIG9mIG91dGdvaW5nKSB7XG4gICAgICAgICAgY29uc3QgZGVnID0gKGluZGVncmVlLmdldChlZGdlLnRhcmdldE5vZGVJZCkgPz8gMSkgLSAxO1xuICAgICAgICAgIGluZGVncmVlLnNldChlZGdlLnRhcmdldE5vZGVJZCwgZGVnKTtcbiAgICAgICAgICBpZiAoZGVnID09PSAwICYmICFwbGFubmVkLmhhcyhlZGdlLnRhcmdldE5vZGVJZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBleGVjdXRhYmxlTm9kZXMuZmluZCgobikgPT4gbi5pZCA9PT0gZWRnZS50YXJnZXROb2RlSWQpO1xuICAgICAgICAgICAgaWYgKG5leHQpIG5leHRSZWFkeS5wdXNoKG5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVhZHkgPSBuZXh0UmVhZHk7XG4gICAgfVxuXG4gICAgaWYgKHBsYW5uZWQuc2l6ZSAhPT0gZXhlY3V0YWJsZU5vZGVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdW5wbGFubmVkID0gZXhlY3V0YWJsZU5vZGVzXG4gICAgICAgIC5maWx0ZXIoKG4pID0+ICFwbGFubmVkLmhhcyhuLmlkKSlcbiAgICAgICAgLm1hcCgobikgPT4gbi5pZCk7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhDeWNsZUVycm9yKHtcbiAgICAgICAgdW5wbGFubmVkTm9kZXM6IHVucGxhbm5lZCxcbiAgICAgICAgd29ya2Zsb3dJZDogbm9kZXNbMF0/LmRlZmluaXRpb24/Lm5hbWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG59XG4iXX0=
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { graphDefinitionOf } from "@decaf-ts/ui-decorators/graph";
|
|
2
|
-
import { GRAPH_WORKFLOW_BOUNDARY } from "./../constants.js";
|
|
3
|
-
import { GraphPortError } from "./../errors/GraphPortError.js";
|
|
4
|
-
import { GraphTopologyError } from "./../errors/GraphTopologyError.js";
|
|
5
|
-
/**
|
|
6
|
-
* Resolves raw workflow relation metadata into normalized execution edges.
|
|
7
|
-
*/
|
|
8
|
-
export class GraphRelationResolver {
|
|
9
|
-
/**
|
|
10
|
-
* Resolves all relations of a workflow into execution edges.
|
|
11
|
-
*
|
|
12
|
-
* @param workflow - The workflow definition.
|
|
13
|
-
* @returns Array of normalized edges.
|
|
14
|
-
* @throws {GraphTopologyError} when an endpoint is unknown or ambiguous.
|
|
15
|
-
* @throws {GraphPortError} when a referenced port is missing or unknown.
|
|
16
|
-
*/
|
|
17
|
-
resolve(workflow) {
|
|
18
|
-
const nodeIds = new Set(workflow.nodes.map((n) => n.id));
|
|
19
|
-
const boundaryAliases = this.boundaryAliases(workflow);
|
|
20
|
-
const inputPorts = this.portNames(workflow.inputs);
|
|
21
|
-
const outputPorts = this.portNames(workflow.outputs);
|
|
22
|
-
const nodePortMap = this.buildNodePortMap(workflow);
|
|
23
|
-
const edges = [];
|
|
24
|
-
for (const relation of workflow.relations ?? []) {
|
|
25
|
-
const edge = this.resolveRelation(relation, nodeIds, boundaryAliases, inputPorts, outputPorts, nodePortMap);
|
|
26
|
-
edges.push(edge);
|
|
27
|
-
}
|
|
28
|
-
return edges;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Resolves a single relation into an edge.
|
|
32
|
-
*/
|
|
33
|
-
resolveRelation(relation, nodeIds, boundaryAliases, inputPorts, outputPorts, nodePortMap) {
|
|
34
|
-
const sourceNodeId = this.resolveEndpoint(relation.source, nodeIds, boundaryAliases);
|
|
35
|
-
const targetNodeId = this.resolveEndpoint(relation.target, nodeIds, boundaryAliases);
|
|
36
|
-
const sourcePort = relation.sourcePort;
|
|
37
|
-
const targetPort = relation.targetPort;
|
|
38
|
-
if (!sourcePort) {
|
|
39
|
-
throw new GraphPortError(`Relation is missing sourcePort (source: ${String(relation.source)}, target: ${String(relation.target)})`, { relation });
|
|
40
|
-
}
|
|
41
|
-
if (!targetPort) {
|
|
42
|
-
throw new GraphPortError(`Relation is missing targetPort (source: ${String(relation.source)}, target: ${String(relation.target)})`, { relation });
|
|
43
|
-
}
|
|
44
|
-
this.validatePort(sourceNodeId, sourcePort, true, boundaryAliases, inputPorts, outputPorts, nodePortMap);
|
|
45
|
-
this.validatePort(targetNodeId, targetPort, false, boundaryAliases, inputPorts, outputPorts, nodePortMap);
|
|
46
|
-
return {
|
|
47
|
-
id: this.createEdgeId(sourceNodeId, sourcePort, targetNodeId, targetPort),
|
|
48
|
-
sourceNodeId,
|
|
49
|
-
sourcePort,
|
|
50
|
-
targetNodeId,
|
|
51
|
-
targetPort,
|
|
52
|
-
label: relation.label,
|
|
53
|
-
metadata: relation.metadata,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Resolves an endpoint (source or target) to a node id or the workflow boundary.
|
|
58
|
-
*/
|
|
59
|
-
resolveEndpoint(endpoint, nodeIds, boundaryAliases) {
|
|
60
|
-
const name = String(endpoint);
|
|
61
|
-
if (boundaryAliases.has(name))
|
|
62
|
-
return GRAPH_WORKFLOW_BOUNDARY;
|
|
63
|
-
if (nodeIds.has(name))
|
|
64
|
-
return name;
|
|
65
|
-
throw new GraphTopologyError(`Unknown endpoint '${name}'`, { endpoint: name, knownNodes: Array.from(nodeIds) });
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Validates that a port exists on the given node or boundary.
|
|
69
|
-
*/
|
|
70
|
-
validatePort(nodeId, port, isSource, boundaryAliases, inputPorts, outputPorts, nodePortMap) {
|
|
71
|
-
if (nodeId === GRAPH_WORKFLOW_BOUNDARY) {
|
|
72
|
-
const ports = isSource ? inputPorts : outputPorts;
|
|
73
|
-
if (!ports.has(port)) {
|
|
74
|
-
throw new GraphPortError(`Unknown ${isSource ? "input" : "output"} port '${port}' on workflow boundary`, { nodeId, port, isSource, available: Array.from(ports) });
|
|
75
|
-
}
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const nodePorts = nodePortMap.get(nodeId);
|
|
79
|
-
if (!nodePorts) {
|
|
80
|
-
throw new GraphTopologyError(`No port map for node '${nodeId}'`, {
|
|
81
|
-
nodeId,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
const ports = isSource ? nodePorts.output : nodePorts.input;
|
|
85
|
-
if (!ports.has(port)) {
|
|
86
|
-
throw new GraphPortError(`Unknown ${isSource ? "output" : "input"} port '${port}' on node '${nodeId}'`, { nodeId, port, isSource, available: Array.from(ports) });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Builds the set of boundary aliases for a workflow.
|
|
91
|
-
*/
|
|
92
|
-
boundaryAliases(workflow) {
|
|
93
|
-
return new Set([
|
|
94
|
-
GRAPH_WORKFLOW_BOUNDARY,
|
|
95
|
-
"workflow",
|
|
96
|
-
"graph",
|
|
97
|
-
workflow.name,
|
|
98
|
-
]);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Extracts port names from a list of port definitions.
|
|
102
|
-
*/
|
|
103
|
-
portNames(ports) {
|
|
104
|
-
return new Set((ports ?? []).map((p) => p.name));
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Builds a map of node id -> { input ports, output ports }.
|
|
108
|
-
*/
|
|
109
|
-
buildNodePortMap(workflow) {
|
|
110
|
-
const map = new Map();
|
|
111
|
-
for (const nodeMeta of workflow.nodes ?? []) {
|
|
112
|
-
const input = new Set();
|
|
113
|
-
const output = new Set();
|
|
114
|
-
const def = this.resolveNodeDefinition(nodeMeta);
|
|
115
|
-
if (def) {
|
|
116
|
-
for (const port of def.ports ?? []) {
|
|
117
|
-
if (port.direction === "input")
|
|
118
|
-
input.add(port.name);
|
|
119
|
-
else
|
|
120
|
-
output.add(port.name);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
map.set(nodeMeta.id, { input, output });
|
|
124
|
-
}
|
|
125
|
-
return map;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Attempts to resolve a node's full definition from its metadata.
|
|
129
|
-
*
|
|
130
|
-
* Accepts either a decorated Model class/instance (resolved via
|
|
131
|
-
* `graphDefinitionOf`) or a plain `GraphNodeDefinition`-shaped object
|
|
132
|
-
* (useful for serialized workflows that inline node definitions).
|
|
133
|
-
*/
|
|
134
|
-
resolveNodeDefinition(nodeMeta) {
|
|
135
|
-
if (nodeMeta.node) {
|
|
136
|
-
if (this.isRawDefinition(nodeMeta.node)) {
|
|
137
|
-
return nodeMeta.node;
|
|
138
|
-
}
|
|
139
|
-
try {
|
|
140
|
-
const def = graphDefinitionOf(nodeMeta.node);
|
|
141
|
-
return def;
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
return undefined;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return undefined;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Returns `true` when a value looks like a raw {@link GraphNodeDefinition}
|
|
151
|
-
* (a plain object with a `ports` array and a `name` string).
|
|
152
|
-
*/
|
|
153
|
-
isRawDefinition(value) {
|
|
154
|
-
return (typeof value === "object" &&
|
|
155
|
-
value !== null &&
|
|
156
|
-
!Array.isArray(value) &&
|
|
157
|
-
typeof value.name === "string" &&
|
|
158
|
-
Array.isArray(value.ports));
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Creates a stable edge id from its endpoints and ports.
|
|
162
|
-
*/
|
|
163
|
-
createEdgeId(sourceNodeId, sourcePort, targetNodeId, targetPort) {
|
|
164
|
-
return `${sourceNodeId}:${sourcePort}->${targetNodeId}:${targetPort}`;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhSZWxhdGlvblJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL3BsYW5uaW5nL0dyYXBoUmVsYXRpb25SZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMEJBQXFCO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsc0NBQWlDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQ0FBcUM7QUFHbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsUUFBaUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBELE1BQU0sS0FBSyxHQUE2QixFQUFFLENBQUM7UUFFM0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQy9CLFFBQVEsRUFDUixPQUFPLEVBQ1AsZUFB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QixDQUMzQixRQUEyQztRQUUzQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sUUFBUSxDQUFDLElBRWYsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQVcsQ0FBQyxDQUFDO2dCQUNwRCxPQUFPLEdBQVUsQ0FBQztZQUNwQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxLQUFjO1FBQ3BDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssS0FBSyxJQUFJO1lBQ2QsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNyQixPQUFRLEtBQTRCLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxLQUE2QixDQUFDLEtBQUssQ0FBQyxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUNsQixZQUFvQixFQUNwQixVQUFrQixFQUNsQixZQUFvQixFQUNwQixVQUFrQjtRQUVsQixPQUFPLEdBQUcsWUFBWSxJQUFJLFVBQVUsS0FBSyxZQUFZLElBQUksVUFBVSxFQUFFLENBQUM7SUFDeEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9wbGFubmluZy9HcmFwaFJlbGF0aW9uUmVzb2x2ZXJcbiAqIEBzdW1tYXJ5IE5vcm1hbGl6ZXMgd29ya2Zsb3cgcmVsYXRpb25zIGludG8gZXhlY3V0aW9uIGVkZ2VzLlxuICogQGRlc2NyaXB0aW9uIFJlc29sdmVzIHdvcmtmbG93IGJvdW5kYXJ5IGFsaWFzZXMsIHZhbGlkYXRlcyBlbmRwb2ludHMgYW5kIHBvcnRzLCBhbmQgcHJvZHVjZXMgc3RhYmxlIGVkZ2UgSURzLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoUG9ydERlZmluaXRpb24sXG4gIEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uLFxuICBHcmFwaFdvcmtmbG93UmVsYXRpb25NZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5pbXBvcnQgeyBncmFwaERlZmluaXRpb25PZiB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuXG5pbXBvcnQgeyBHUkFQSF9XT1JLRkxPV19CT1VOREFSWSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEdyYXBoUG9ydEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaFBvcnRFcnJvclwiO1xuaW1wb3J0IHsgR3JhcGhUb3BvbG9neUVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaFRvcG9sb2d5RXJyb3JcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuRWRnZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbkVkZ2VcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyByYXcgd29ya2Zsb3cgcmVsYXRpb24gbWV0YWRhdGEgaW50byBub3JtYWxpemVkIGV4ZWN1dGlvbiBlZGdlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUmVsYXRpb25SZXNvbHZlciB7XG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbGwgcmVsYXRpb25zIG9mIGEgd29ya2Zsb3cgaW50byBleGVjdXRpb24gZWRnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB3b3JrZmxvdyAtIFRoZSB3b3JrZmxvdyBkZWZpbml0aW9uLlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBub3JtYWxpemVkIGVkZ2VzLlxuICAgKiBAdGhyb3dzIHtHcmFwaFRvcG9sb2d5RXJyb3J9IHdoZW4gYW4gZW5kcG9pbnQgaXMgdW5rbm93biBvciBhbWJpZ3VvdXMuXG4gICAqIEB0aHJvd3Mge0dyYXBoUG9ydEVycm9yfSB3aGVuIGEgcmVmZXJlbmNlZCBwb3J0IGlzIG1pc3Npbmcgb3IgdW5rbm93bi5cbiAgICovXG4gIHJlc29sdmUod29ya2Zsb3c6IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uKTogR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdIHtcbiAgICBjb25zdCBub2RlSWRzID0gbmV3IFNldCh3b3JrZmxvdy5ub2Rlcy5tYXAoKG4pID0+IG4uaWQpKTtcbiAgICBjb25zdCBib3VuZGFyeUFsaWFzZXMgPSB0aGlzLmJvdW5kYXJ5QWxpYXNlcyh3b3JrZmxvdyk7XG4gICAgY29uc3QgaW5wdXRQb3J0cyA9IHRoaXMucG9ydE5hbWVzKHdvcmtmbG93LmlucHV0cyk7XG4gICAgY29uc3Qgb3V0cHV0UG9ydHMgPSB0aGlzLnBvcnROYW1lcyh3b3JrZmxvdy5vdXRwdXRzKTtcbiAgICBjb25zdCBub2RlUG9ydE1hcCA9IHRoaXMuYnVpbGROb2RlUG9ydE1hcCh3b3JrZmxvdyk7XG5cbiAgICBjb25zdCBlZGdlczogR3JhcGhFeGVjdXRpb25QbGFuRWRnZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHdvcmtmbG93LnJlbGF0aW9ucyA/PyBbXSkge1xuICAgICAgY29uc3QgZWRnZSA9IHRoaXMucmVzb2x2ZVJlbGF0aW9uKFxuICAgICAgICByZWxhdGlvbixcbiAgICAgICAgbm9kZUlkcyxcbiAgICAgICAgYm91bmRhcnlBbGlhc2VzLFxuICAgICAgICBpbnB1dFBvcnRzLFxuICAgICAgICBvdXRwdXRQb3J0cyxcbiAgICAgICAgbm9kZVBvcnRNYXBcbiAgICAgICk7XG4gICAgICBlZGdlcy5wdXNoKGVkZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBlZGdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIHNpbmdsZSByZWxhdGlvbiBpbnRvIGFuIGVkZ2UuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVSZWxhdGlvbihcbiAgICByZWxhdGlvbjogR3JhcGhXb3JrZmxvd1JlbGF0aW9uTWV0YWRhdGEsXG4gICAgbm9kZUlkczogU2V0PHN0cmluZz4sXG4gICAgYm91bmRhcnlBbGlhc2VzOiBTZXQ8c3RyaW5nPixcbiAgICBpbnB1dFBvcnRzOiBTZXQ8c3RyaW5nPixcbiAgICBvdXRwdXRQb3J0czogU2V0PHN0cmluZz4sXG4gICAgbm9kZVBvcnRNYXA6IE1hcDxzdHJpbmcsIHsgaW5wdXQ6IFNldDxzdHJpbmc+OyBvdXRwdXQ6IFNldDxzdHJpbmc+IH0+XG4gICk6IEdyYXBoRXhlY3V0aW9uUGxhbkVkZ2Uge1xuICAgIGNvbnN0IHNvdXJjZU5vZGVJZCA9IHRoaXMucmVzb2x2ZUVuZHBvaW50KFxuICAgICAgcmVsYXRpb24uc291cmNlLFxuICAgICAgbm9kZUlkcyxcbiAgICAgIGJvdW5kYXJ5QWxpYXNlc1xuICAgICk7XG4gICAgY29uc3QgdGFyZ2V0Tm9kZUlkID0gdGhpcy5yZXNvbHZlRW5kcG9pbnQoXG4gICAgICByZWxhdGlvbi50YXJnZXQsXG4gICAgICBub2RlSWRzLFxuICAgICAgYm91bmRhcnlBbGlhc2VzXG4gICAgKTtcblxuICAgIGNvbnN0IHNvdXJjZVBvcnQgPSByZWxhdGlvbi5zb3VyY2VQb3J0O1xuICAgIGNvbnN0IHRhcmdldFBvcnQgPSByZWxhdGlvbi50YXJnZXRQb3J0O1xuXG4gICAgaWYgKCFzb3VyY2VQb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhQb3J0RXJyb3IoXG4gICAgICAgIGBSZWxhdGlvbiBpcyBtaXNzaW5nIHNvdXJjZVBvcnQgKHNvdXJjZTogJHtTdHJpbmcocmVsYXRpb24uc291cmNlKX0sIHRhcmdldDogJHtTdHJpbmcocmVsYXRpb24udGFyZ2V0KX0pYCxcbiAgICAgICAgeyByZWxhdGlvbiB9XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldFBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFBvcnRFcnJvcihcbiAgICAgICAgYFJlbGF0aW9uIGlzIG1pc3NpbmcgdGFyZ2V0UG9ydCAoc291cmNlOiAke1N0cmluZyhyZWxhdGlvbi5zb3VyY2UpfSwgdGFyZ2V0OiAke1N0cmluZyhyZWxhdGlvbi50YXJnZXQpfSlgLFxuICAgICAgICB7IHJlbGF0aW9uIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZVBvcnQoXG4gICAgICBzb3VyY2VOb2RlSWQsXG4gICAgICBzb3VyY2VQb3J0LFxuICAgICAgdHJ1ZSxcbiAgICAgIGJvdW5kYXJ5QWxpYXNlcyxcbiAgICAgIGlucHV0UG9ydHMsXG4gICAgICBvdXRwdXRQb3J0cyxcbiAgICAgIG5vZGVQb3J0TWFwXG4gICAgKTtcbiAgICB0aGlzLnZhbGlkYXRlUG9ydChcbiAgICAgIHRhcmdldE5vZGVJZCxcbiAgICAgIHRhcmdldFBvcnQsXG4gICAgICBmYWxzZSxcbiAgICAgIGJvdW5kYXJ5QWxpYXNlcyxcbiAgICAgIGlucHV0UG9ydHMsXG4gICAgICBvdXRwdXRQb3J0cyxcbiAgICAgIG5vZGVQb3J0TWFwXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5jcmVhdGVFZGdlSWQoc291cmNlTm9kZUlkLCBzb3VyY2VQb3J0LCB0YXJnZXROb2RlSWQsIHRhcmdldFBvcnQpLFxuICAgICAgc291cmNlTm9kZUlkLFxuICAgICAgc291cmNlUG9ydCxcbiAgICAgIHRhcmdldE5vZGVJZCxcbiAgICAgIHRhcmdldFBvcnQsXG4gICAgICBsYWJlbDogcmVsYXRpb24ubGFiZWwsXG4gICAgICBtZXRhZGF0YTogcmVsYXRpb24ubWV0YWRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBlbmRwb2ludCAoc291cmNlIG9yIHRhcmdldCkgdG8gYSBub2RlIGlkIG9yIHRoZSB3b3JrZmxvdyBib3VuZGFyeS5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUVuZHBvaW50KFxuICAgIGVuZHBvaW50OiBzdHJpbmcgfCB1bmtub3duLFxuICAgIG5vZGVJZHM6IFNldDxzdHJpbmc+LFxuICAgIGJvdW5kYXJ5QWxpYXNlczogU2V0PHN0cmluZz5cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gU3RyaW5nKGVuZHBvaW50KTtcbiAgICBpZiAoYm91bmRhcnlBbGlhc2VzLmhhcyhuYW1lKSkgcmV0dXJuIEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZO1xuICAgIGlmIChub2RlSWRzLmhhcyhuYW1lKSkgcmV0dXJuIG5hbWU7XG4gICAgdGhyb3cgbmV3IEdyYXBoVG9wb2xvZ3lFcnJvcihcbiAgICAgIGBVbmtub3duIGVuZHBvaW50ICcke25hbWV9J2AsXG4gICAgICB7IGVuZHBvaW50OiBuYW1lLCBrbm93bk5vZGVzOiBBcnJheS5mcm9tKG5vZGVJZHMpIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IGEgcG9ydCBleGlzdHMgb24gdGhlIGdpdmVuIG5vZGUgb3IgYm91bmRhcnkuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9ydChcbiAgICBub2RlSWQ6IHN0cmluZyxcbiAgICBwb3J0OiBzdHJpbmcsXG4gICAgaXNTb3VyY2U6IGJvb2xlYW4sXG4gICAgYm91bmRhcnlBbGlhc2VzOiBTZXQ8c3RyaW5nPixcbiAgICBpbnB1dFBvcnRzOiBTZXQ8c3RyaW5nPixcbiAgICBvdXRwdXRQb3J0czogU2V0PHN0cmluZz4sXG4gICAgbm9kZVBvcnRNYXA6IE1hcDxzdHJpbmcsIHsgaW5wdXQ6IFNldDxzdHJpbmc+OyBvdXRwdXQ6IFNldDxzdHJpbmc+IH0+XG4gICk6IHZvaWQge1xuICAgIGlmIChub2RlSWQgPT09IEdSQVBIX1dPUktGTE9XX0JPVU5EQVJZKSB7XG4gICAgICBjb25zdCBwb3J0cyA9IGlzU291cmNlID8gaW5wdXRQb3J0cyA6IG91dHB1dFBvcnRzO1xuICAgICAgaWYgKCFwb3J0cy5oYXMocG9ydCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUG9ydEVycm9yKFxuICAgICAgICAgIGBVbmtub3duICR7aXNTb3VyY2UgPyBcImlucHV0XCIgOiBcIm91dHB1dFwifSBwb3J0ICcke3BvcnR9JyBvbiB3b3JrZmxvdyBib3VuZGFyeWAsXG4gICAgICAgICAgeyBub2RlSWQsIHBvcnQsIGlzU291cmNlLCBhdmFpbGFibGU6IEFycmF5LmZyb20ocG9ydHMpIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlUG9ydHMgPSBub2RlUG9ydE1hcC5nZXQobm9kZUlkKTtcbiAgICBpZiAoIW5vZGVQb3J0cykge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoVG9wb2xvZ3lFcnJvcihgTm8gcG9ydCBtYXAgZm9yIG5vZGUgJyR7bm9kZUlkfSdgLCB7XG4gICAgICAgIG5vZGVJZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRzID0gaXNTb3VyY2UgPyBub2RlUG9ydHMub3V0cHV0IDogbm9kZVBvcnRzLmlucHV0O1xuICAgIGlmICghcG9ydHMuaGFzKHBvcnQpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhQb3J0RXJyb3IoXG4gICAgICAgIGBVbmtub3duICR7aXNTb3VyY2UgPyBcIm91dHB1dFwiIDogXCJpbnB1dFwifSBwb3J0ICcke3BvcnR9JyBvbiBub2RlICcke25vZGVJZH0nYCxcbiAgICAgICAgeyBub2RlSWQsIHBvcnQsIGlzU291cmNlLCBhdmFpbGFibGU6IEFycmF5LmZyb20ocG9ydHMpIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgc2V0IG9mIGJvdW5kYXJ5IGFsaWFzZXMgZm9yIGEgd29ya2Zsb3cuXG4gICAqL1xuICBwcml2YXRlIGJvdW5kYXJ5QWxpYXNlcyh3b3JrZmxvdzogR3JhcGhXb3JrZmxvd0RlZmluaXRpb24pOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgR1JBUEhfV09SS0ZMT1dfQk9VTkRBUlksXG4gICAgICBcIndvcmtmbG93XCIsXG4gICAgICBcImdyYXBoXCIsXG4gICAgICB3b3JrZmxvdy5uYW1lLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHBvcnQgbmFtZXMgZnJvbSBhIGxpc3Qgb2YgcG9ydCBkZWZpbml0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgcG9ydE5hbWVzKHBvcnRzOiBHcmFwaFBvcnREZWZpbml0aW9uW10gfCB1bmRlZmluZWQpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoKHBvcnRzID8/IFtdKS5tYXAoKHApID0+IHAubmFtZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIG1hcCBvZiBub2RlIGlkIC0+IHsgaW5wdXQgcG9ydHMsIG91dHB1dCBwb3J0cyB9LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZE5vZGVQb3J0TWFwKFxuICAgIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvblxuICApOiBNYXA8c3RyaW5nLCB7IGlucHV0OiBTZXQ8c3RyaW5nPjsgb3V0cHV0OiBTZXQ8c3RyaW5nPiB9PiB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgaW5wdXQ6IFNldDxzdHJpbmc+OyBvdXRwdXQ6IFNldDxzdHJpbmc+IH0+KCk7XG4gICAgZm9yIChjb25zdCBub2RlTWV0YSBvZiB3b3JrZmxvdy5ub2RlcyA/PyBbXSkge1xuICAgICAgY29uc3QgaW5wdXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgY29uc3QgZGVmID0gdGhpcy5yZXNvbHZlTm9kZURlZmluaXRpb24obm9kZU1ldGEpO1xuICAgICAgaWYgKGRlZikge1xuICAgICAgICBmb3IgKGNvbnN0IHBvcnQgb2YgZGVmLnBvcnRzID8/IFtdKSB7XG4gICAgICAgICAgaWYgKHBvcnQuZGlyZWN0aW9uID09PSBcImlucHV0XCIpIGlucHV0LmFkZChwb3J0Lm5hbWUpO1xuICAgICAgICAgIGVsc2Ugb3V0cHV0LmFkZChwb3J0Lm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXAuc2V0KG5vZGVNZXRhLmlkLCB7IGlucHV0LCBvdXRwdXQgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gcmVzb2x2ZSBhIG5vZGUncyBmdWxsIGRlZmluaXRpb24gZnJvbSBpdHMgbWV0YWRhdGEuXG4gICAqXG4gICAqIEFjY2VwdHMgZWl0aGVyIGEgZGVjb3JhdGVkIE1vZGVsIGNsYXNzL2luc3RhbmNlIChyZXNvbHZlZCB2aWFcbiAgICogYGdyYXBoRGVmaW5pdGlvbk9mYCkgb3IgYSBwbGFpbiBgR3JhcGhOb2RlRGVmaW5pdGlvbmAtc2hhcGVkIG9iamVjdFxuICAgKiAodXNlZnVsIGZvciBzZXJpYWxpemVkIHdvcmtmbG93cyB0aGF0IGlubGluZSBub2RlIGRlZmluaXRpb25zKS5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZU5vZGVEZWZpbml0aW9uKFxuICAgIG5vZGVNZXRhOiB7IG5vZGU/OiB1bmtub3duOyBraW5kPzogc3RyaW5nIH1cbiAgKTogeyBwb3J0czogeyBkaXJlY3Rpb246IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXSB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAobm9kZU1ldGEubm9kZSkge1xuICAgICAgaWYgKHRoaXMuaXNSYXdEZWZpbml0aW9uKG5vZGVNZXRhLm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBub2RlTWV0YS5ub2RlIGFzIHtcbiAgICAgICAgICBwb3J0czogeyBkaXJlY3Rpb246IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IGdyYXBoRGVmaW5pdGlvbk9mKG5vZGVNZXRhLm5vZGUgYXMgYW55KTtcbiAgICAgICAgcmV0dXJuIGRlZiBhcyBhbnk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCB3aGVuIGEgdmFsdWUgbG9va3MgbGlrZSBhIHJhdyB7QGxpbmsgR3JhcGhOb2RlRGVmaW5pdGlvbn1cbiAgICogKGEgcGxhaW4gb2JqZWN0IHdpdGggYSBgcG9ydHNgIGFycmF5IGFuZCBhIGBuYW1lYCBzdHJpbmcpLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1Jhd0RlZmluaXRpb24odmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgICB0eXBlb2YgKHZhbHVlIGFzIHsgbmFtZT86IHVua25vd24gfSkubmFtZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheSgodmFsdWUgYXMgeyBwb3J0cz86IHVua25vd24gfSkucG9ydHMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RhYmxlIGVkZ2UgaWQgZnJvbSBpdHMgZW5kcG9pbnRzIGFuZCBwb3J0cy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWRnZUlkKFxuICAgIHNvdXJjZU5vZGVJZDogc3RyaW5nLFxuICAgIHNvdXJjZVBvcnQ6IHN0cmluZyxcbiAgICB0YXJnZXROb2RlSWQ6IHN0cmluZyxcbiAgICB0YXJnZXRQb3J0OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c291cmNlTm9kZUlkfToke3NvdXJjZVBvcnR9LT4ke3RhcmdldE5vZGVJZH06JHt0YXJnZXRQb3J0fWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Topology utility for traversing the execution plan's edges.
|
|
3
|
-
*/
|
|
4
|
-
export class GraphTopology {
|
|
5
|
-
/**
|
|
6
|
-
* Returns the set of upstream node ids reachable from `nodeId` by following
|
|
7
|
-
* incoming edges. The workflow boundary node is excluded.
|
|
8
|
-
*/
|
|
9
|
-
static upstreamNodes(nodeId, incomingByNode, includeBoundary = false) {
|
|
10
|
-
const visited = new Set();
|
|
11
|
-
const stack = [nodeId];
|
|
12
|
-
while (stack.length) {
|
|
13
|
-
const current = stack.pop();
|
|
14
|
-
const incoming = incomingByNode.get(current) ?? [];
|
|
15
|
-
for (const edge of incoming) {
|
|
16
|
-
if (!includeBoundary && this.isBoundary(edge.sourceNodeId))
|
|
17
|
-
continue;
|
|
18
|
-
if (!visited.has(edge.sourceNodeId)) {
|
|
19
|
-
visited.add(edge.sourceNodeId);
|
|
20
|
-
stack.push(edge.sourceNodeId);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return visited;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the set of downstream node ids reachable from `nodeId` by following
|
|
28
|
-
* outgoing edges. The workflow boundary node is excluded.
|
|
29
|
-
*/
|
|
30
|
-
static downstreamNodes(nodeId, outgoingByNode, includeBoundary = false) {
|
|
31
|
-
const visited = new Set();
|
|
32
|
-
const stack = [nodeId];
|
|
33
|
-
while (stack.length) {
|
|
34
|
-
const current = stack.pop();
|
|
35
|
-
const outgoing = outgoingByNode.get(current) ?? [];
|
|
36
|
-
for (const edge of outgoing) {
|
|
37
|
-
if (!includeBoundary && this.isBoundary(edge.targetNodeId))
|
|
38
|
-
continue;
|
|
39
|
-
if (!visited.has(edge.targetNodeId)) {
|
|
40
|
-
visited.add(edge.targetNodeId);
|
|
41
|
-
stack.push(edge.targetNodeId);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return visited;
|
|
46
|
-
}
|
|
47
|
-
/** Returns whether a node id is the workflow boundary. */
|
|
48
|
-
static isBoundary(nodeId) {
|
|
49
|
-
return nodeId === "$workflow";
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhUb3BvbG9neS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9wbGFubmluZy9HcmFwaFRvcG9sb2d5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FDbEIsTUFBYyxFQUNkLGNBQXFELEVBQ3JELGVBQWUsR0FBRyxLQUFLO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFHLENBQUM7WUFDN0IsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQUUsU0FBUztnQkFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQ3BCLE1BQWMsRUFDZCxjQUFxRCxFQUNyRCxlQUFlLEdBQUcsS0FBSztRQUV2QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRyxDQUFDO1lBQzdCLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUFFLFNBQVM7Z0JBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDL0IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3BsYW5uaW5nL0dyYXBoVG9wb2xvZ3lcbiAqIEBzdW1tYXJ5IFV0aWxpdHkgaGVscGVycyBmb3IgZ3JhcGggdG9wb2xvZ3kgYW5hbHlzaXMuXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBwbGFubmVyIGFuZCBwaW5uaW5nIGRlcGVuZGVuY3kgcmVzb2x2ZXIuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25QbGFuRWRnZSB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbkVkZ2VcIjtcblxuLyoqXG4gKiBUb3BvbG9neSB1dGlsaXR5IGZvciB0cmF2ZXJzaW5nIHRoZSBleGVjdXRpb24gcGxhbidzIGVkZ2VzLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhUb3BvbG9neSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgdXBzdHJlYW0gbm9kZSBpZHMgcmVhY2hhYmxlIGZyb20gYG5vZGVJZGAgYnkgZm9sbG93aW5nXG4gICAqIGluY29taW5nIGVkZ2VzLiBUaGUgd29ya2Zsb3cgYm91bmRhcnkgbm9kZSBpcyBleGNsdWRlZC5cbiAgICovXG4gIHN0YXRpYyB1cHN0cmVhbU5vZGVzKFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIGluY29taW5nQnlOb2RlOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+LFxuICAgIGluY2x1ZGVCb3VuZGFyeSA9IGZhbHNlXG4gICk6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3RhY2sgPSBbbm9kZUlkXTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgICAgY29uc3QgaW5jb21pbmcgPSBpbmNvbWluZ0J5Tm9kZS5nZXQoY3VycmVudCkgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IGVkZ2Ugb2YgaW5jb21pbmcpIHtcbiAgICAgICAgaWYgKCFpbmNsdWRlQm91bmRhcnkgJiYgdGhpcy5pc0JvdW5kYXJ5KGVkZ2Uuc291cmNlTm9kZUlkKSkgY29udGludWU7XG4gICAgICAgIGlmICghdmlzaXRlZC5oYXMoZWRnZS5zb3VyY2VOb2RlSWQpKSB7XG4gICAgICAgICAgdmlzaXRlZC5hZGQoZWRnZS5zb3VyY2VOb2RlSWQpO1xuICAgICAgICAgIHN0YWNrLnB1c2goZWRnZS5zb3VyY2VOb2RlSWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiBkb3duc3RyZWFtIG5vZGUgaWRzIHJlYWNoYWJsZSBmcm9tIGBub2RlSWRgIGJ5IGZvbGxvd2luZ1xuICAgKiBvdXRnb2luZyBlZGdlcy4gVGhlIHdvcmtmbG93IGJvdW5kYXJ5IG5vZGUgaXMgZXhjbHVkZWQuXG4gICAqL1xuICBzdGF0aWMgZG93bnN0cmVhbU5vZGVzKFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIG91dGdvaW5nQnlOb2RlOiBNYXA8c3RyaW5nLCBHcmFwaEV4ZWN1dGlvblBsYW5FZGdlW10+LFxuICAgIGluY2x1ZGVCb3VuZGFyeSA9IGZhbHNlXG4gICk6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3RhY2sgPSBbbm9kZUlkXTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgICAgY29uc3Qgb3V0Z29pbmcgPSBvdXRnb2luZ0J5Tm9kZS5nZXQoY3VycmVudCkgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IGVkZ2Ugb2Ygb3V0Z29pbmcpIHtcbiAgICAgICAgaWYgKCFpbmNsdWRlQm91bmRhcnkgJiYgdGhpcy5pc0JvdW5kYXJ5KGVkZ2UudGFyZ2V0Tm9kZUlkKSkgY29udGludWU7XG4gICAgICAgIGlmICghdmlzaXRlZC5oYXMoZWRnZS50YXJnZXROb2RlSWQpKSB7XG4gICAgICAgICAgdmlzaXRlZC5hZGQoZWRnZS50YXJnZXROb2RlSWQpO1xuICAgICAgICAgIHN0YWNrLnB1c2goZWRnZS50YXJnZXROb2RlSWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgLyoqIFJldHVybnMgd2hldGhlciBhIG5vZGUgaWQgaXMgdGhlIHdvcmtmbG93IGJvdW5kYXJ5LiAqL1xuICBzdGF0aWMgaXNCb3VuZGFyeShub2RlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlSWQgPT09IFwiJHdvcmtmbG93XCI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module integrations/graph/planning
|
|
3
|
-
* @summary Graph execution planning.
|
|
4
|
-
* @description Re-exports the execution plan types, relation resolver, and topological planner.
|
|
5
|
-
*/
|
|
6
|
-
export * from "./GraphExecutionPlanNode.js";
|
|
7
|
-
export * from "./GraphExecutionPlanEdge.js";
|
|
8
|
-
export * from "./GraphExecutionPlanLayer.js";
|
|
9
|
-
export * from "./GraphExecutionPlan.js";
|
|
10
|
-
export * from "./GraphRelationResolver.js";
|
|
11
|
-
export * from "./GraphExecutionPlanner.js";
|
|
12
|
-
export * from "./GraphTopology.js";
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcGxhbm5pbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDRDQUF5QztBQUN6Qyw0Q0FBeUM7QUFDekMsNkNBQTBDO0FBQzFDLHdDQUFxQztBQUNyQywyQ0FBd0M7QUFDeEMsMkNBQXdDO0FBQ3hDLG1DQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvcGxhbm5pbmdcbiAqIEBzdW1tYXJ5IEdyYXBoIGV4ZWN1dGlvbiBwbGFubmluZy5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBleGVjdXRpb24gcGxhbiB0eXBlcywgcmVsYXRpb24gcmVzb2x2ZXIsIGFuZCB0b3BvbG9naWNhbCBwbGFubmVyLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5Ob2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5FZGdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblBsYW5MYXllclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25QbGFuXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaFJlbGF0aW9uUmVzb2x2ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUGxhbm5lclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhUb3BvbG9neVwiO1xuIl19
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
|
|
2
|
-
/**
|
|
3
|
-
* Registry that maps node `kind` strings to {@link GraphNodeExecutor}
|
|
4
|
-
* instances.
|
|
5
|
-
*/
|
|
6
|
-
export class GraphNodeExecutorRegistry {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.executors = new Map();
|
|
9
|
-
}
|
|
10
|
-
/** Registers an executor for the given node kind. */
|
|
11
|
-
register(kind, executor) {
|
|
12
|
-
if (!kind)
|
|
13
|
-
throw new GraphExecutionError("Graph executor kind is required");
|
|
14
|
-
this.executors.set(kind, executor);
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
/** Removes the executor for the given node kind. */
|
|
18
|
-
unregister(kind) {
|
|
19
|
-
this.executors.delete(kind);
|
|
20
|
-
return this;
|
|
21
|
-
}
|
|
22
|
-
/** Returns whether an executor is registered for the given kind. */
|
|
23
|
-
has(kind) {
|
|
24
|
-
return this.executors.has(kind);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Resolves the executor for the given node kind.
|
|
28
|
-
*
|
|
29
|
-
* @throws {GraphExecutionError} when no executor is registered for `kind`.
|
|
30
|
-
*/
|
|
31
|
-
resolve(kind) {
|
|
32
|
-
const executor = this.executors.get(kind);
|
|
33
|
-
if (!executor) {
|
|
34
|
-
throw new GraphExecutionError(`No graph executor registered for kind '${kind}'`, "GRAPH_EXECUTOR_NOT_FOUND", { kind });
|
|
35
|
-
}
|
|
36
|
-
return executor;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQ0FBc0M7QUFFcEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUF0QztRQUNtQixjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFvQ3BFLENBQUM7SUFsQ0MscURBQXFEO0lBQ3JELFFBQVEsQ0FBQyxJQUFZLEVBQUUsUUFBMkI7UUFDaEQsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksbUJBQW1CLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsSUFBWTtRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksbUJBQW1CLENBQzNCLDBDQUEwQyxJQUFJLEdBQUcsRUFDakQsMEJBQTBCLEVBQzFCLEVBQUUsSUFBSSxFQUFFLENBQ1QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3JlZ2lzdHJ5L0dyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnlcbiAqIEBzdW1tYXJ5IFJlZ2lzdHJ5IGZvciBncmFwaCBub2RlIGV4ZWN1dG9ycy5cbiAqIEBkZXNjcmlwdGlvbiBNYXBzIG5vZGUga2luZHMgdG8gdGhlaXIgZXhlY3V0b3IgaW1wbGVtZW50YXRpb25zLiBUaGUgZW5naW5lIHJlc29sdmVzIGV4ZWN1dG9ycyBieSBub2RlIGtpbmQgYXQgZXhlY3V0aW9uIHRpbWUuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yXCI7XG5cbi8qKlxuICogUmVnaXN0cnkgdGhhdCBtYXBzIG5vZGUgYGtpbmRgIHN0cmluZ3MgdG8ge0BsaW5rIEdyYXBoTm9kZUV4ZWN1dG9yfVxuICogaW5zdGFuY2VzLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhlY3V0b3JzID0gbmV3IE1hcDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dG9yPigpO1xuXG4gIC8qKiBSZWdpc3RlcnMgYW4gZXhlY3V0b3IgZm9yIHRoZSBnaXZlbiBub2RlIGtpbmQuICovXG4gIHJlZ2lzdGVyKGtpbmQ6IHN0cmluZywgZXhlY3V0b3I6IEdyYXBoTm9kZUV4ZWN1dG9yKTogdGhpcyB7XG4gICAgaWYgKCFraW5kKSB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcIkdyYXBoIGV4ZWN1dG9yIGtpbmQgaXMgcmVxdWlyZWRcIik7XG4gICAgdGhpcy5leGVjdXRvcnMuc2V0KGtpbmQsIGV4ZWN1dG9yKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHRoZSBleGVjdXRvciBmb3IgdGhlIGdpdmVuIG5vZGUga2luZC4gKi9cbiAgdW5yZWdpc3RlcihraW5kOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmV4ZWN1dG9ycy5kZWxldGUoa2luZCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGFuIGV4ZWN1dG9yIGlzIHJlZ2lzdGVyZWQgZm9yIHRoZSBnaXZlbiBraW5kLiAqL1xuICBoYXMoa2luZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0b3JzLmhhcyhraW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgZXhlY3V0b3IgZm9yIHRoZSBnaXZlbiBub2RlIGtpbmQuXG4gICAqXG4gICAqIEB0aHJvd3Mge0dyYXBoRXhlY3V0aW9uRXJyb3J9IHdoZW4gbm8gZXhlY3V0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgYGtpbmRgLlxuICAgKi9cbiAgcmVzb2x2ZShraW5kOiBzdHJpbmcpOiBHcmFwaE5vZGVFeGVjdXRvciB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSB0aGlzLmV4ZWN1dG9ycy5nZXQoa2luZCk7XG4gICAgaWYgKCFleGVjdXRvcikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIGBObyBncmFwaCBleGVjdXRvciByZWdpc3RlcmVkIGZvciBraW5kICcke2tpbmR9J2AsXG4gICAgICAgIFwiR1JBUEhfRVhFQ1VUT1JfTk9UX0ZPVU5EXCIsXG4gICAgICAgIHsga2luZCB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXhlY3V0b3I7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolver that wraps a {@link GraphNodeExecutorRegistry} and optionally
|
|
3
|
-
* falls back to a default executor when a kind is not found.
|
|
4
|
-
*/
|
|
5
|
-
export class GraphNodeExecutorResolver {
|
|
6
|
-
constructor(registry, defaultExecutor) {
|
|
7
|
-
this.registry = registry;
|
|
8
|
-
this.defaultExecutor = defaultExecutor;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Resolves the executor for `kind`, falling back to the default executor
|
|
12
|
-
* when provided.
|
|
13
|
-
*/
|
|
14
|
-
resolve(kind) {
|
|
15
|
-
if (this.registry.has(kind))
|
|
16
|
-
return this.registry.resolve(kind);
|
|
17
|
-
if (this.defaultExecutor)
|
|
18
|
-
return this.defaultExecutor;
|
|
19
|
-
return this.registry.resolve(kind);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhOb2RlRXhlY3V0b3JSZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFDbUIsUUFBbUMsRUFDcEQsZUFBbUM7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBMkI7UUFHcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9yZWdpc3RyeS9HcmFwaE5vZGVFeGVjdXRvclJlc29sdmVyXG4gKiBAc3VtbWFyeSBVdGlsaXR5IGZvciByZXNvbHZpbmcgZXhlY3V0b3JzIGZyb20gYSByZWdpc3RyeSB3aXRoIGZhbGxiYWNrLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGEgaGVscGVyIHRoYXQgYXR0ZW1wdHMgdG8gcmVzb2x2ZSBhbiBleGVjdXRvciBieSBraW5kLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IGV4ZWN1dG9yIHdoZW4gdGhlIGtpbmQgaXMgbm90IHJlZ2lzdGVyZWQuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnkgfSBmcm9tIFwiLi9HcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5XCI7XG5cbi8qKlxuICogUmVzb2x2ZXIgdGhhdCB3cmFwcyBhIHtAbGluayBHcmFwaE5vZGVFeGVjdXRvclJlZ2lzdHJ5fSBhbmQgb3B0aW9uYWxseVxuICogZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgZXhlY3V0b3Igd2hlbiBhIGtpbmQgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhOb2RlRXhlY3V0b3JSZXNvbHZlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEV4ZWN1dG9yPzogR3JhcGhOb2RlRXhlY3V0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeTogR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSxcbiAgICBkZWZhdWx0RXhlY3V0b3I/OiBHcmFwaE5vZGVFeGVjdXRvclxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRFeGVjdXRvciA9IGRlZmF1bHRFeGVjdXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgZXhlY3V0b3IgZm9yIGBraW5kYCwgZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IGV4ZWN1dG9yXG4gICAqIHdoZW4gcHJvdmlkZWQuXG4gICAqL1xuICByZXNvbHZlKGtpbmQ6IHN0cmluZyk6IEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgICBpZiAodGhpcy5yZWdpc3RyeS5oYXMoa2luZCkpIHJldHVybiB0aGlzLnJlZ2lzdHJ5LnJlc29sdmUoa2luZCk7XG4gICAgaWYgKHRoaXMuZGVmYXVsdEV4ZWN1dG9yKSByZXR1cm4gdGhpcy5kZWZhdWx0RXhlY3V0b3I7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkucmVzb2x2ZShraW5kKTtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module integrations/graph/registry
|
|
3
|
-
* @summary Graph node executor registry and resolver.
|
|
4
|
-
* @description Re-exports the executor registry and resolver.
|
|
5
|
-
*/
|
|
6
|
-
export * from "./GraphNodeExecutorRegistry.js";
|
|
7
|
-
export * from "./GraphNodeExecutorResolver.js";
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvcmVnaXN0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILCtDQUE0QztBQUM1QywrQ0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3JlZ2lzdHJ5XG4gKiBAc3VtbWFyeSBHcmFwaCBub2RlIGV4ZWN1dG9yIHJlZ2lzdHJ5IGFuZCByZXNvbHZlci5cbiAqIEBkZXNjcmlwdGlvbiBSZS1leHBvcnRzIHRoZSBleGVjdXRvciByZWdpc3RyeSBhbmQgcmVzb2x2ZXIuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yUmVzb2x2ZXJcIjtcbiJdfQ==
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module integrations/graph/snapshots/GraphExecutionSnapshotMapper
|
|
3
|
-
* @summary Maps execution results to snapshot patches.
|
|
4
|
-
* @description Produces a GraphExecutionSnapshotPatch consumable by `@decaf-ts/ui-decorators/graph` snapshots, rather than replacing the snapshot system.
|
|
5
|
-
*/
|
|
6
|
-
import { GraphExecutionStatus } from "./../constants.js";
|
|
7
|
-
/**
|
|
8
|
-
* Maps a {@link GraphExecutionResult} to a {@link GraphExecutionSnapshotPatch}.
|
|
9
|
-
*/
|
|
10
|
-
export class GraphExecutionSnapshotMapper {
|
|
11
|
-
/**
|
|
12
|
-
* Creates a snapshot patch from an execution result.
|
|
13
|
-
*/
|
|
14
|
-
map(result) {
|
|
15
|
-
const nodes = {};
|
|
16
|
-
for (const [id, nodeResult] of Object.entries(result.nodeResults)) {
|
|
17
|
-
nodes[id] = {
|
|
18
|
-
status: nodeResult.status,
|
|
19
|
-
startedAt: nodeResult.startedAt?.toISOString(),
|
|
20
|
-
finishedAt: nodeResult.finishedAt?.toISOString(),
|
|
21
|
-
error: nodeResult.error,
|
|
22
|
-
outputs: nodeResult.outputs,
|
|
23
|
-
fromCache: nodeResult.fromCache,
|
|
24
|
-
pinned: nodeResult.pinned,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
const edges = {};
|
|
28
|
-
for (const event of result.events) {
|
|
29
|
-
if (event.edgeId && event.type === "edge.valueRouted") {
|
|
30
|
-
edges[event.edgeId] = {
|
|
31
|
-
status: GraphExecutionStatus.SUCCEEDED,
|
|
32
|
-
lastValue: event.payload?.value,
|
|
33
|
-
updatedAt: event.timestamp.toISOString(),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const events = [...result.events];
|
|
38
|
-
return {
|
|
39
|
-
runId: result.runId,
|
|
40
|
-
status: result.status,
|
|
41
|
-
nodes,
|
|
42
|
-
edges,
|
|
43
|
-
outputs: result.outputs,
|
|
44
|
-
events,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25TbmFwc2hvdE1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9zbmFwc2hvdHMvR3JhcGhFeGVjdXRpb25TbmFwc2hvdE1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUFxQjtBQU9wRDs7R0FFRztBQUNILE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7O09BRUc7SUFDSCxHQUFHLENBQUMsTUFBNEI7UUFDOUIsTUFBTSxLQUFLLEdBQXlDLEVBQUUsQ0FBQztRQUN2RCxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUc7Z0JBQ1YsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUU7Z0JBQzlDLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRTtnQkFDaEQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87Z0JBQzNCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztnQkFDL0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2FBQzFCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQXlDLEVBQUUsQ0FBQztRQUN2RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0RCxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHO29CQUNwQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztvQkFDdEMsU0FBUyxFQUFHLEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBSztvQkFDeEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBMEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6RCxPQUFPO1lBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixLQUFLO1lBQ0wsS0FBSztZQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvc25hcHNob3RzL0dyYXBoRXhlY3V0aW9uU25hcHNob3RNYXBwZXJcbiAqIEBzdW1tYXJ5IE1hcHMgZXhlY3V0aW9uIHJlc3VsdHMgdG8gc25hcHNob3QgcGF0Y2hlcy5cbiAqIEBkZXNjcmlwdGlvbiBQcm9kdWNlcyBhIEdyYXBoRXhlY3V0aW9uU25hcHNob3RQYXRjaCBjb25zdW1hYmxlIGJ5IGBAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaGAgc25hcHNob3RzLCByYXRoZXIgdGhhbiByZXBsYWNpbmcgdGhlIHNuYXBzaG90IHN5c3RlbS5cbiAqL1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEdyYXBoRXhlY3V0aW9uRXZlbnQsXG4gIEdyYXBoRXhlY3V0aW9uUmVzdWx0LFxuICBHcmFwaEV4ZWN1dGlvblNuYXBzaG90UGF0Y2gsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIE1hcHMgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25SZXN1bHR9IHRvIGEge0BsaW5rIEdyYXBoRXhlY3V0aW9uU25hcHNob3RQYXRjaH0uXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaEV4ZWN1dGlvblNuYXBzaG90TWFwcGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzbmFwc2hvdCBwYXRjaCBmcm9tIGFuIGV4ZWN1dGlvbiByZXN1bHQuXG4gICAqL1xuICBtYXAocmVzdWx0OiBHcmFwaEV4ZWN1dGlvblJlc3VsdCk6IEdyYXBoRXhlY3V0aW9uU25hcHNob3RQYXRjaCB7XG4gICAgY29uc3Qgbm9kZXM6IEdyYXBoRXhlY3V0aW9uU25hcHNob3RQYXRjaFtcIm5vZGVzXCJdID0ge307XG4gICAgZm9yIChjb25zdCBbaWQsIG5vZGVSZXN1bHRdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3VsdC5ub2RlUmVzdWx0cykpIHtcbiAgICAgIG5vZGVzW2lkXSA9IHtcbiAgICAgICAgc3RhdHVzOiBub2RlUmVzdWx0LnN0YXR1cyxcbiAgICAgICAgc3RhcnRlZEF0OiBub2RlUmVzdWx0LnN0YXJ0ZWRBdD8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZmluaXNoZWRBdDogbm9kZVJlc3VsdC5maW5pc2hlZEF0Py50b0lTT1N0cmluZygpLFxuICAgICAgICBlcnJvcjogbm9kZVJlc3VsdC5lcnJvcixcbiAgICAgICAgb3V0cHV0czogbm9kZVJlc3VsdC5vdXRwdXRzLFxuICAgICAgICBmcm9tQ2FjaGU6IG5vZGVSZXN1bHQuZnJvbUNhY2hlLFxuICAgICAgICBwaW5uZWQ6IG5vZGVSZXN1bHQucGlubmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGdlczogR3JhcGhFeGVjdXRpb25TbmFwc2hvdFBhdGNoW1wiZWRnZXNcIl0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHJlc3VsdC5ldmVudHMpIHtcbiAgICAgIGlmIChldmVudC5lZGdlSWQgJiYgZXZlbnQudHlwZSA9PT0gXCJlZGdlLnZhbHVlUm91dGVkXCIpIHtcbiAgICAgICAgZWRnZXNbZXZlbnQuZWRnZUlkXSA9IHtcbiAgICAgICAgICBzdGF0dXM6IEdyYXBoRXhlY3V0aW9uU3RhdHVzLlNVQ0NFRURFRCxcbiAgICAgICAgICBsYXN0VmFsdWU6IChldmVudC5wYXlsb2FkIGFzIGFueSk/LnZhbHVlLFxuICAgICAgICAgIHVwZGF0ZWRBdDogZXZlbnQudGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRzOiBHcmFwaEV4ZWN1dGlvbkV2ZW50W10gPSBbLi4ucmVzdWx0LmV2ZW50c107XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVuSWQ6IHJlc3VsdC5ydW5JZCxcbiAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyxcbiAgICAgIG5vZGVzLFxuICAgICAgZWRnZXMsXG4gICAgICBvdXRwdXRzOiByZXN1bHQub3V0cHV0cyxcbiAgICAgIGV2ZW50cyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|