@decaf-ts/integrations 0.10.5 → 0.11.0
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/README.md +77 -5
- package/dist/integrations.cjs +1 -1
- package/dist/integrations.cjs.map +1 -1
- package/dist/integrations.js +1 -1
- package/dist/integrations.js.map +1 -1
- package/docker/dragonfly-compose.yml +19 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +0 -4
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -1
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +214 -0
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +1 -0
- package/lib/cjs/feature-flags/index.cjs +1 -0
- package/lib/cjs/feature-flags/index.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/loader/ObjectLoader.cjs +95 -11
- package/lib/cjs/loader/ObjectLoader.cjs.map +1 -1
- package/lib/cjs/loader/assets.cjs +160 -0
- package/lib/cjs/loader/assets.cjs.map +1 -0
- package/lib/cjs/loader/config.cjs +241 -0
- package/lib/cjs/loader/config.cjs.map +1 -0
- package/lib/cjs/loader/families.cjs +27 -12
- package/lib/cjs/loader/families.cjs.map +1 -1
- package/lib/cjs/loader/index.cjs +3 -0
- package/lib/cjs/loader/index.cjs.map +1 -1
- package/lib/cjs/loader/nest.cjs +331 -0
- package/lib/cjs/loader/nest.cjs.map +1 -0
- package/lib/cjs/redis/RedisContextLock.cjs +185 -0
- package/lib/cjs/redis/RedisContextLock.cjs.map +1 -0
- package/lib/cjs/redis/RedisDispatch.cjs +132 -0
- package/lib/cjs/redis/RedisDispatch.cjs.map +1 -0
- package/lib/cjs/redis/RedisPaginator.cjs +95 -0
- package/lib/cjs/redis/RedisPaginator.cjs.map +1 -0
- package/lib/cjs/redis/RedisStatement.cjs +433 -0
- package/lib/cjs/redis/RedisStatement.cjs.map +1 -0
- package/lib/cjs/redis/adapter.cjs +709 -0
- package/lib/cjs/redis/adapter.cjs.map +1 -0
- package/lib/cjs/redis/constants.cjs +31 -0
- package/lib/cjs/redis/constants.cjs.map +1 -0
- package/lib/cjs/redis/handlers.cjs +27 -0
- package/lib/cjs/redis/handlers.cjs.map +1 -0
- package/lib/cjs/redis/index.cjs +36 -0
- package/lib/cjs/redis/index.cjs.map +1 -0
- package/lib/cjs/redis/serialization.cjs +63 -0
- package/lib/cjs/redis/serialization.cjs.map +1 -0
- package/lib/cjs/redis/types.cjs.map +1 -0
- package/lib/esm/blob/core/BlobStoreFactory.js +0 -4
- package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -1
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +203 -0
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +1 -0
- package/lib/esm/feature-flags/index.js +1 -0
- package/lib/esm/feature-flags/index.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/loader/ObjectLoader.js +94 -11
- package/lib/esm/loader/ObjectLoader.js.map +1 -1
- package/lib/esm/loader/assets.js +155 -0
- package/lib/esm/loader/assets.js.map +1 -0
- package/lib/esm/loader/config.js +202 -0
- package/lib/esm/loader/config.js.map +1 -0
- package/lib/esm/loader/families.js +25 -10
- package/lib/esm/loader/families.js.map +1 -1
- package/lib/esm/loader/index.js +3 -0
- package/lib/esm/loader/index.js.map +1 -1
- package/lib/esm/loader/nest.js +292 -0
- package/lib/esm/loader/nest.js.map +1 -0
- package/lib/esm/redis/RedisContextLock.js +180 -0
- package/lib/esm/redis/RedisContextLock.js.map +1 -0
- package/lib/esm/redis/RedisDispatch.js +127 -0
- package/lib/esm/redis/RedisDispatch.js.map +1 -0
- package/lib/esm/redis/RedisPaginator.js +90 -0
- package/lib/esm/redis/RedisPaginator.js.map +1 -0
- package/lib/esm/redis/RedisStatement.js +428 -0
- package/lib/esm/redis/RedisStatement.js.map +1 -0
- package/lib/esm/redis/adapter.js +704 -0
- package/lib/esm/redis/adapter.js.map +1 -0
- package/lib/esm/redis/constants.js +27 -0
- package/lib/esm/redis/constants.js.map +1 -0
- package/lib/esm/redis/handlers.js +23 -0
- package/lib/esm/redis/handlers.js.map +1 -0
- package/lib/esm/redis/index.js +19 -0
- package/lib/esm/redis/index.js.map +1 -0
- package/lib/esm/redis/serialization.js +57 -0
- package/lib/esm/redis/serialization.js.map +1 -0
- package/lib/esm/{graph/engine → redis}/types.js.map +1 -1
- package/lib/types/blob/core/BlobTypes.d.cts +1 -14
- package/lib/types/blob/core/BlobTypes.d.mts +1 -14
- package/lib/types/feature-flags/EngineCapabilityFeatureFlag.service.d.cts +116 -0
- package/lib/types/feature-flags/EngineCapabilityFeatureFlag.service.d.mts +116 -0
- package/lib/types/feature-flags/index.d.cts +1 -0
- package/lib/types/feature-flags/index.d.mts +1 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/loader/ObjectLoader.d.cts +46 -2
- package/lib/types/loader/ObjectLoader.d.mts +46 -2
- package/lib/types/loader/assets.d.cts +43 -0
- package/lib/types/loader/assets.d.mts +43 -0
- package/lib/types/loader/config.d.cts +84 -0
- package/lib/types/loader/config.d.mts +84 -0
- package/lib/types/loader/families.d.cts +19 -7
- package/lib/types/loader/families.d.mts +19 -7
- package/lib/types/loader/index.d.cts +3 -0
- package/lib/types/loader/index.d.mts +3 -0
- package/lib/types/loader/nest.d.cts +102 -0
- package/lib/types/loader/nest.d.mts +102 -0
- package/lib/types/loader/types.d.cts +27 -1
- package/lib/types/loader/types.d.mts +27 -1
- package/lib/types/redis/RedisContextLock.d.cts +106 -0
- package/lib/types/redis/RedisContextLock.d.mts +106 -0
- package/lib/types/redis/RedisDispatch.d.cts +56 -0
- package/lib/types/redis/RedisDispatch.d.mts +56 -0
- package/lib/types/redis/RedisPaginator.d.cts +58 -0
- package/lib/types/redis/RedisPaginator.d.mts +58 -0
- package/lib/types/redis/RedisStatement.d.cts +175 -0
- package/lib/types/redis/RedisStatement.d.mts +175 -0
- package/lib/types/redis/adapter.d.cts +288 -0
- package/lib/types/redis/adapter.d.mts +288 -0
- package/lib/types/redis/constants.d.cts +26 -0
- package/lib/types/redis/constants.d.mts +26 -0
- package/lib/types/redis/handlers.d.cts +20 -0
- package/lib/types/redis/handlers.d.mts +20 -0
- package/lib/types/redis/index.d.cts +17 -0
- package/lib/types/redis/index.d.mts +17 -0
- package/lib/types/redis/serialization.d.cts +35 -0
- package/lib/types/redis/serialization.d.mts +35 -0
- package/lib/types/redis/types.d.cts +72 -0
- package/lib/types/redis/types.d.mts +72 -0
- package/package.json +17 -33
- package/lib/cjs/blob/ipfs/IpfsBlobEnvironment.cjs +0 -30
- package/lib/cjs/blob/ipfs/IpfsBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +0 -248
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +0 -27
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +0 -35
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +0 -45
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +0 -35
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
- package/lib/cjs/blob/ipfs/index.cjs +0 -29
- package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphBuiltInRegistrations.cjs +0 -100
- package/lib/cjs/graph/engine/catalog/GraphBuiltInRegistrations.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphCatalogueErrors.cjs +0 -29
- package/lib/cjs/graph/engine/catalog/GraphCatalogueErrors.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphNodeCatalogue.cjs +0 -270
- package/lib/cjs/graph/engine/catalog/GraphNodeCatalogue.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphNodeManifestResolver.cjs +0 -169
- package/lib/cjs/graph/engine/catalog/GraphNodeManifestResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphNodeMethodRegistry.cjs +0 -64
- package/lib/cjs/graph/engine/catalog/GraphNodeMethodRegistry.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/GraphNodeRegistration.cjs +0 -17
- package/lib/cjs/graph/engine/catalog/GraphNodeRegistration.cjs.map +0 -1
- package/lib/cjs/graph/engine/catalog/index.cjs +0 -24
- package/lib/cjs/graph/engine/catalog/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/constants.cjs +0 -58
- package/lib/cjs/graph/engine/constants.cjs.map +0 -1
- package/lib/cjs/graph/engine/decorators.cjs +0 -4
- package/lib/cjs/graph/engine/decorators.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs +0 -37
- package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +0 -28
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphRunCancelledError.cjs +0 -18
- package/lib/cjs/graph/engine/errors/GraphRunCancelledError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +0 -20
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +0 -1
- package/lib/cjs/graph/engine/errors/index.cjs +0 -33
- package/lib/cjs/graph/engine/errors/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +0 -40
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +0 -37
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +0 -4
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +0 -1
- package/lib/cjs/graph/engine/events/index.cjs +0 -26
- package/lib/cjs/graph/engine/events/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs +0 -24
- package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +0 -103
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +0 -4
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +0 -112
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +0 -789
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +0 -32
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +0 -30
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +0 -4
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +0 -481
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +0 -47
- package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +0 -121
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/execution/index.cjs +0 -34
- package/lib/cjs/graph/engine/execution/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/index.cjs +0 -86
- package/lib/cjs/graph/engine/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +0 -87
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +0 -146
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +0 -85
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +0 -16
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +0 -102
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +0 -103
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/loops/index.cjs +0 -29
- package/lib/cjs/graph/engine/loops/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +0 -28
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +0 -20
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +0 -34
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +0 -220
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +0 -1
- package/lib/cjs/graph/engine/pinning/index.cjs +0 -27
- package/lib/cjs/graph/engine/pinning/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +0 -4
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +0 -4
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +0 -4
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +0 -4
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +0 -188
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs +0 -57
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +0 -1
- package/lib/cjs/graph/engine/planning/index.cjs +0 -29
- package/lib/cjs/graph/engine/planning/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +0 -57
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +0 -27
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/registry/index.cjs +0 -25
- package/lib/cjs/graph/engine/registry/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/GraphRunEventPublisher.cjs +0 -69
- package/lib/cjs/graph/engine/runs/GraphRunEventPublisher.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/GraphRunExecutor.cjs +0 -291
- package/lib/cjs/graph/engine/runs/GraphRunExecutor.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/GraphRunFingerprint.cjs +0 -29
- package/lib/cjs/graph/engine/runs/GraphRunFingerprint.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/GraphRunService.cjs +0 -259
- package/lib/cjs/graph/engine/runs/GraphRunService.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/InMemoryGraphRunEventStore.cjs +0 -69
- package/lib/cjs/graph/engine/runs/InMemoryGraphRunEventStore.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/InMemoryGraphRunStore.cjs +0 -26
- package/lib/cjs/graph/engine/runs/InMemoryGraphRunStore.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/index.cjs +0 -26
- package/lib/cjs/graph/engine/runs/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/ownership.cjs +0 -34
- package/lib/cjs/graph/engine/runs/ownership.cjs.map +0 -1
- package/lib/cjs/graph/engine/runs/types.cjs.map +0 -1
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +0 -53
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
- package/lib/cjs/graph/engine/snapshots/index.cjs +0 -24
- package/lib/cjs/graph/engine/snapshots/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +0 -4
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs +0 -4
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs +0 -76
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +0 -4
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +0 -69
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
- package/lib/cjs/graph/engine/store/index.cjs +0 -28
- package/lib/cjs/graph/engine/store/index.cjs.map +0 -1
- package/lib/cjs/graph/engine/types.cjs +0 -4
- package/lib/cjs/graph/engine/types.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphConnectionPolicyValidator.cjs +0 -142
- package/lib/cjs/graph/engine/validation/GraphConnectionPolicyValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphCredentialReferenceValidator.cjs +0 -160
- package/lib/cjs/graph/engine/validation/GraphCredentialReferenceValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +0 -29
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphEdgeInstanceValidator.cjs +0 -166
- package/lib/cjs/graph/engine/validation/GraphEdgeInstanceValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphNodeInstanceValidator.cjs +0 -86
- package/lib/cjs/graph/engine/validation/GraphNodeInstanceValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphParameterValidator.cjs +0 -423
- package/lib/cjs/graph/engine/validation/GraphParameterValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +0 -58
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphResolvedWorkflow.cjs +0 -4
- package/lib/cjs/graph/engine/validation/GraphResolvedWorkflow.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphValidationErrors.cjs +0 -50
- package/lib/cjs/graph/engine/validation/GraphValidationErrors.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphValidationIssue.cjs +0 -4
- package/lib/cjs/graph/engine/validation/GraphValidationIssue.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +0 -52
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/GraphWorkflowDocumentValidator.cjs +0 -478
- package/lib/cjs/graph/engine/validation/GraphWorkflowDocumentValidator.cjs.map +0 -1
- package/lib/cjs/graph/engine/validation/index.cjs +0 -37
- package/lib/cjs/graph/engine/validation/index.cjs.map +0 -1
- package/lib/cjs/graph/index.cjs +0 -30
- package/lib/cjs/graph/index.cjs.map +0 -1
- package/lib/cjs/graph/log/GraphRunLogger.cjs +0 -145
- package/lib/cjs/graph/log/GraphRunLogger.cjs.map +0 -1
- package/lib/cjs/graph/log/LogParameters.cjs +0 -73
- package/lib/cjs/graph/log/LogParameters.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +0 -266
- package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +0 -178
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +0 -75
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +0 -102
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphNodeCatalogueController.cjs +0 -270
- package/lib/cjs/nest/graph/GraphNodeCatalogueController.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphResultService.cjs +0 -69
- package/lib/cjs/nest/graph/GraphResultService.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphRunController.cjs +0 -279
- package/lib/cjs/nest/graph/GraphRunController.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphRunModel.cjs +0 -83
- package/lib/cjs/nest/graph/GraphRunModel.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphRunModelService.cjs +0 -121
- package/lib/cjs/nest/graph/GraphRunModelService.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowBoundaryValidation.cjs +0 -169
- package/lib/cjs/nest/graph/GraphWorkflowBoundaryValidation.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowController.cjs +0 -162
- package/lib/cjs/nest/graph/GraphWorkflowController.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowDocumentLimits.cjs +0 -12
- package/lib/cjs/nest/graph/GraphWorkflowDocumentLimits.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowErrors.cjs +0 -23
- package/lib/cjs/nest/graph/GraphWorkflowErrors.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +0 -66
- package/lib/cjs/nest/graph/GraphWorkflowModel.cjs.map +0 -1
- package/lib/cjs/nest/graph/GraphWorkflowService.cjs +0 -265
- package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +0 -1
- package/lib/cjs/nest/graph/index.cjs +0 -33
- package/lib/cjs/nest/graph/index.cjs.map +0 -1
- package/lib/cjs/nest/graph/main.cjs +0 -47
- package/lib/cjs/nest/graph/main.cjs.map +0 -1
- package/lib/esm/blob/ipfs/IpfsBlobEnvironment.js +0 -26
- package/lib/esm/blob/ipfs/IpfsBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +0 -240
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +0 -23
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +0 -30
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +0 -40
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +0 -30
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
- package/lib/esm/blob/ipfs/index.js +0 -12
- package/lib/esm/blob/ipfs/index.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphBuiltInRegistrations.js +0 -95
- package/lib/esm/graph/engine/catalog/GraphBuiltInRegistrations.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphCatalogueErrors.js +0 -22
- package/lib/esm/graph/engine/catalog/GraphCatalogueErrors.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphNodeCatalogue.js +0 -265
- package/lib/esm/graph/engine/catalog/GraphNodeCatalogue.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphNodeManifestResolver.js +0 -162
- package/lib/esm/graph/engine/catalog/GraphNodeManifestResolver.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphNodeMethodRegistry.js +0 -59
- package/lib/esm/graph/engine/catalog/GraphNodeMethodRegistry.js.map +0 -1
- package/lib/esm/graph/engine/catalog/GraphNodeRegistration.js +0 -12
- package/lib/esm/graph/engine/catalog/GraphNodeRegistration.js.map +0 -1
- package/lib/esm/graph/engine/catalog/index.js +0 -7
- package/lib/esm/graph/engine/catalog/index.js.map +0 -1
- package/lib/esm/graph/engine/constants.js +0 -62
- package/lib/esm/graph/engine/constants.js.map +0 -1
- package/lib/esm/graph/engine/decorators.js +0 -2
- package/lib/esm/graph/engine/decorators.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphBreakSignal.js +0 -32
- package/lib/esm/graph/engine/errors/GraphBreakSignal.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphCycleError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphCycleError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphExecutionError.js +0 -23
- package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphInputError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphInputError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphPinningError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphPinningError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphPortError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphPortError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphRunCancelledError.js +0 -13
- package/lib/esm/graph/engine/errors/GraphRunCancelledError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphStoreError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphStoreError.js.map +0 -1
- package/lib/esm/graph/engine/errors/GraphTopologyError.js +0 -15
- package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +0 -1
- package/lib/esm/graph/engine/errors/index.js +0 -16
- package/lib/esm/graph/engine/errors/index.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +0 -35
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +0 -32
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +0 -1
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js +0 -2
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +0 -1
- package/lib/esm/graph/engine/events/index.js +0 -9
- package/lib/esm/graph/engine/events/index.js.map +0 -1
- package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js +0 -19
- package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +0 -98
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +0 -18
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js +0 -107
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +0 -784
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +0 -27
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js +0 -26
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +0 -1
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +0 -2
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +0 -440
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +0 -42
- package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +0 -116
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/execution/index.js +0 -17
- package/lib/esm/graph/engine/execution/index.js.map +0 -1
- package/lib/esm/graph/engine/index.js +0 -69
- package/lib/esm/graph/engine/index.js.map +0 -1
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +0 -82
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +0 -141
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +0 -80
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +0 -1
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +0 -11
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +0 -1
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +0 -97
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +0 -98
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
- package/lib/esm/graph/engine/loops/index.js +0 -12
- package/lib/esm/graph/engine/loops/index.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +0 -23
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +0 -15
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +0 -29
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +0 -1
- package/lib/esm/graph/engine/pinning/GraphPinningService.js +0 -215
- package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +0 -1
- package/lib/esm/graph/engine/pinning/index.js +0 -10
- package/lib/esm/graph/engine/pinning/index.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +0 -2
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +0 -9
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +0 -2
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +0 -2
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +0 -183
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +0 -1
- package/lib/esm/graph/engine/planning/GraphTopology.js +0 -52
- package/lib/esm/graph/engine/planning/GraphTopology.js.map +0 -1
- package/lib/esm/graph/engine/planning/index.js +0 -12
- package/lib/esm/graph/engine/planning/index.js.map +0 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +0 -52
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +0 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +0 -22
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +0 -1
- package/lib/esm/graph/engine/registry/index.js +0 -8
- package/lib/esm/graph/engine/registry/index.js.map +0 -1
- package/lib/esm/graph/engine/runs/GraphRunEventPublisher.js +0 -64
- package/lib/esm/graph/engine/runs/GraphRunEventPublisher.js.map +0 -1
- package/lib/esm/graph/engine/runs/GraphRunExecutor.js +0 -286
- package/lib/esm/graph/engine/runs/GraphRunExecutor.js.map +0 -1
- package/lib/esm/graph/engine/runs/GraphRunFingerprint.js +0 -25
- package/lib/esm/graph/engine/runs/GraphRunFingerprint.js.map +0 -1
- package/lib/esm/graph/engine/runs/GraphRunService.js +0 -254
- package/lib/esm/graph/engine/runs/GraphRunService.js.map +0 -1
- package/lib/esm/graph/engine/runs/InMemoryGraphRunEventStore.js +0 -64
- package/lib/esm/graph/engine/runs/InMemoryGraphRunEventStore.js.map +0 -1
- package/lib/esm/graph/engine/runs/InMemoryGraphRunStore.js +0 -21
- package/lib/esm/graph/engine/runs/InMemoryGraphRunStore.js.map +0 -1
- package/lib/esm/graph/engine/runs/index.js +0 -9
- package/lib/esm/graph/engine/runs/index.js.map +0 -1
- package/lib/esm/graph/engine/runs/ownership.js +0 -30
- package/lib/esm/graph/engine/runs/ownership.js.map +0 -1
- package/lib/esm/graph/engine/runs/types.js.map +0 -1
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +0 -48
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
- package/lib/esm/graph/engine/snapshots/index.js +0 -7
- package/lib/esm/graph/engine/snapshots/index.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphCachedValue.js +0 -2
- package/lib/esm/graph/engine/store/GraphCachedValue.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueKey.js +0 -7
- package/lib/esm/graph/engine/store/GraphValueKey.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueStore.js +0 -71
- package/lib/esm/graph/engine/store/GraphValueStore.js.map +0 -1
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +0 -2
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +0 -64
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
- package/lib/esm/graph/engine/store/index.js +0 -11
- package/lib/esm/graph/engine/store/index.js.map +0 -1
- package/lib/esm/graph/engine/types.js +0 -2
- package/lib/esm/graph/engine/validation/GraphConnectionPolicyValidator.js +0 -137
- package/lib/esm/graph/engine/validation/GraphConnectionPolicyValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphCredentialReferenceValidator.js +0 -155
- package/lib/esm/graph/engine/validation/GraphCredentialReferenceValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +0 -24
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphEdgeInstanceValidator.js +0 -161
- package/lib/esm/graph/engine/validation/GraphEdgeInstanceValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphNodeInstanceValidator.js +0 -81
- package/lib/esm/graph/engine/validation/GraphNodeInstanceValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphParameterValidator.js +0 -416
- package/lib/esm/graph/engine/validation/GraphParameterValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +0 -53
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphResolvedWorkflow.js +0 -2
- package/lib/esm/graph/engine/validation/GraphResolvedWorkflow.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphValidationErrors.js +0 -43
- package/lib/esm/graph/engine/validation/GraphValidationErrors.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphValidationIssue.js +0 -2
- package/lib/esm/graph/engine/validation/GraphValidationIssue.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphValueValidator.js +0 -47
- package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/GraphWorkflowDocumentValidator.js +0 -472
- package/lib/esm/graph/engine/validation/GraphWorkflowDocumentValidator.js.map +0 -1
- package/lib/esm/graph/engine/validation/index.js +0 -20
- package/lib/esm/graph/engine/validation/index.js.map +0 -1
- package/lib/esm/graph/index.js +0 -13
- package/lib/esm/graph/index.js.map +0 -1
- package/lib/esm/graph/log/GraphRunLogger.js +0 -140
- package/lib/esm/graph/log/GraphRunLogger.js.map +0 -1
- package/lib/esm/graph/log/LogParameters.js +0 -69
- package/lib/esm/graph/log/LogParameters.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +0 -257
- package/lib/esm/nest/graph/GraphExecutionController.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionModule.js +0 -137
- package/lib/esm/nest/graph/GraphExecutionModule.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +0 -66
- package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +0 -1
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +0 -95
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +0 -1
- package/lib/esm/nest/graph/GraphNodeCatalogueController.js +0 -261
- package/lib/esm/nest/graph/GraphNodeCatalogueController.js.map +0 -1
- package/lib/esm/nest/graph/GraphResultService.js +0 -60
- package/lib/esm/nest/graph/GraphResultService.js.map +0 -1
- package/lib/esm/nest/graph/GraphRunController.js +0 -270
- package/lib/esm/nest/graph/GraphRunController.js.map +0 -1
- package/lib/esm/nest/graph/GraphRunModel.js +0 -74
- package/lib/esm/nest/graph/GraphRunModel.js.map +0 -1
- package/lib/esm/nest/graph/GraphRunModelService.js +0 -112
- package/lib/esm/nest/graph/GraphRunModelService.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowBoundaryValidation.js +0 -164
- package/lib/esm/nest/graph/GraphWorkflowBoundaryValidation.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowController.js +0 -153
- package/lib/esm/nest/graph/GraphWorkflowController.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowDocumentLimits.js +0 -8
- package/lib/esm/nest/graph/GraphWorkflowDocumentLimits.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowErrors.js +0 -18
- package/lib/esm/nest/graph/GraphWorkflowErrors.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowModel.js +0 -57
- package/lib/esm/nest/graph/GraphWorkflowModel.js.map +0 -1
- package/lib/esm/nest/graph/GraphWorkflowService.js +0 -255
- package/lib/esm/nest/graph/GraphWorkflowService.js.map +0 -1
- package/lib/esm/nest/graph/index.js +0 -16
- package/lib/esm/nest/graph/index.js.map +0 -1
- package/lib/esm/nest/graph/main.js +0 -44
- package/lib/esm/nest/graph/main.js.map +0 -1
- package/lib/types/blob/ipfs/IpfsBlobEnvironment.d.cts +0 -24
- package/lib/types/blob/ipfs/IpfsBlobEnvironment.d.mts +0 -24
- package/lib/types/blob/ipfs/IpfsBlobStoreService.d.cts +0 -61
- package/lib/types/blob/ipfs/IpfsBlobStoreService.d.mts +0 -61
- package/lib/types/blob/ipfs/IpfsKeyIndex.d.cts +0 -9
- package/lib/types/blob/ipfs/IpfsKeyIndex.d.mts +0 -9
- package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.cts +0 -11
- package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.mts +0 -11
- package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.cts +0 -15
- package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.mts +0 -15
- package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.cts +0 -11
- package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.mts +0 -11
- package/lib/types/blob/ipfs/index.d.cts +0 -11
- package/lib/types/blob/ipfs/index.d.mts +0 -11
- package/lib/types/graph/engine/catalog/GraphBuiltInRegistrations.d.cts +0 -17
- package/lib/types/graph/engine/catalog/GraphBuiltInRegistrations.d.mts +0 -17
- package/lib/types/graph/engine/catalog/GraphCatalogueErrors.d.cts +0 -13
- package/lib/types/graph/engine/catalog/GraphCatalogueErrors.d.mts +0 -13
- package/lib/types/graph/engine/catalog/GraphNodeCatalogue.d.cts +0 -71
- package/lib/types/graph/engine/catalog/GraphNodeCatalogue.d.mts +0 -71
- package/lib/types/graph/engine/catalog/GraphNodeManifestResolver.d.cts +0 -42
- package/lib/types/graph/engine/catalog/GraphNodeManifestResolver.d.mts +0 -42
- package/lib/types/graph/engine/catalog/GraphNodeMethodRegistry.d.cts +0 -22
- package/lib/types/graph/engine/catalog/GraphNodeMethodRegistry.d.mts +0 -22
- package/lib/types/graph/engine/catalog/GraphNodeRegistration.d.cts +0 -68
- package/lib/types/graph/engine/catalog/GraphNodeRegistration.d.mts +0 -68
- package/lib/types/graph/engine/catalog/index.d.cts +0 -6
- package/lib/types/graph/engine/catalog/index.d.mts +0 -6
- package/lib/types/graph/engine/constants.d.cts +0 -59
- package/lib/types/graph/engine/constants.d.mts +0 -59
- package/lib/types/graph/engine/decorators.d.cts +0 -6
- package/lib/types/graph/engine/decorators.d.mts +0 -6
- package/lib/types/graph/engine/errors/GraphBreakSignal.d.cts +0 -28
- package/lib/types/graph/engine/errors/GraphBreakSignal.d.mts +0 -28
- package/lib/types/graph/engine/errors/GraphCycleError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphCycleError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphExecutionError.d.cts +0 -19
- package/lib/types/graph/engine/errors/GraphExecutionError.d.mts +0 -19
- package/lib/types/graph/engine/errors/GraphInputError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphInputError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphLoopLimitError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphLoopLimitError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphPinningError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphPinningError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphPortError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphPortError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphRunCancelledError.d.cts +0 -9
- package/lib/types/graph/engine/errors/GraphRunCancelledError.d.mts +0 -9
- package/lib/types/graph/engine/errors/GraphStoreError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphStoreError.d.mts +0 -12
- package/lib/types/graph/engine/errors/GraphTopologyError.d.cts +0 -12
- package/lib/types/graph/engine/errors/GraphTopologyError.d.mts +0 -12
- package/lib/types/graph/engine/errors/index.d.cts +0 -15
- package/lib/types/graph/engine/errors/index.d.mts +0 -15
- package/lib/types/graph/engine/events/GraphExecutionEventEmitter.d.cts +0 -26
- package/lib/types/graph/engine/events/GraphExecutionEventEmitter.d.mts +0 -26
- package/lib/types/graph/engine/events/GraphExecutionEventFactory.d.cts +0 -25
- package/lib/types/graph/engine/events/GraphExecutionEventFactory.d.mts +0 -25
- package/lib/types/graph/engine/events/GraphExecutionObserver.d.cts +0 -17
- package/lib/types/graph/engine/events/GraphExecutionObserver.d.mts +0 -17
- package/lib/types/graph/engine/events/index.d.cts +0 -8
- package/lib/types/graph/engine/events/index.d.mts +0 -8
- package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.cts +0 -22
- package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.mts +0 -22
- package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.cts +0 -65
- package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.mts +0 -65
- package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.cts +0 -76
- package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.mts +0 -76
- package/lib/types/graph/engine/execution/GraphExecutionContext.d.cts +0 -74
- package/lib/types/graph/engine/execution/GraphExecutionContext.d.mts +0 -74
- package/lib/types/graph/engine/execution/GraphExecutionEngine.d.cts +0 -251
- package/lib/types/graph/engine/execution/GraphExecutionEngine.d.mts +0 -251
- package/lib/types/graph/engine/execution/GraphExecutionFrame.d.cts +0 -30
- package/lib/types/graph/engine/execution/GraphExecutionFrame.d.mts +0 -30
- package/lib/types/graph/engine/execution/GraphExecutionResult.d.cts +0 -13
- package/lib/types/graph/engine/execution/GraphExecutionResult.d.mts +0 -13
- package/lib/types/graph/engine/execution/GraphNodeExecutor.d.cts +0 -31
- package/lib/types/graph/engine/execution/GraphNodeExecutor.d.mts +0 -31
- package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.cts +0 -63
- package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.mts +0 -63
- package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.cts +0 -25
- package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.mts +0 -25
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +0 -43
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +0 -43
- package/lib/types/graph/engine/execution/index.d.cts +0 -16
- package/lib/types/graph/engine/execution/index.d.mts +0 -16
- package/lib/types/graph/engine/index.d.cts +0 -63
- package/lib/types/graph/engine/index.d.mts +0 -63
- package/lib/types/graph/engine/loops/ConditionExpressionEvaluator.d.cts +0 -36
- package/lib/types/graph/engine/loops/ConditionExpressionEvaluator.d.mts +0 -36
- package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.cts +0 -35
- package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.mts +0 -35
- package/lib/types/graph/engine/loops/GraphConditionEvaluator.d.cts +0 -40
- package/lib/types/graph/engine/loops/GraphConditionEvaluator.d.mts +0 -40
- package/lib/types/graph/engine/loops/GraphLoopExecutionContext.d.cts +0 -15
- package/lib/types/graph/engine/loops/GraphLoopExecutionContext.d.mts +0 -15
- package/lib/types/graph/engine/loops/UntilGraphNodeExecutor.d.cts +0 -22
- package/lib/types/graph/engine/loops/UntilGraphNodeExecutor.d.mts +0 -22
- package/lib/types/graph/engine/loops/WhileGraphNodeExecutor.d.cts +0 -26
- package/lib/types/graph/engine/loops/WhileGraphNodeExecutor.d.mts +0 -26
- package/lib/types/graph/engine/loops/index.d.cts +0 -11
- package/lib/types/graph/engine/loops/index.d.mts +0 -11
- package/lib/types/graph/engine/pinning/GraphPinningDependencyResolver.d.cts +0 -21
- package/lib/types/graph/engine/pinning/GraphPinningDependencyResolver.d.mts +0 -21
- package/lib/types/graph/engine/pinning/GraphPinningMetadata.d.cts +0 -14
- package/lib/types/graph/engine/pinning/GraphPinningMetadata.d.mts +0 -14
- package/lib/types/graph/engine/pinning/GraphPinningPolicy.d.cts +0 -20
- package/lib/types/graph/engine/pinning/GraphPinningPolicy.d.mts +0 -20
- package/lib/types/graph/engine/pinning/GraphPinningService.d.cts +0 -70
- package/lib/types/graph/engine/pinning/GraphPinningService.d.mts +0 -70
- package/lib/types/graph/engine/pinning/index.d.cts +0 -9
- package/lib/types/graph/engine/pinning/index.d.mts +0 -9
- package/lib/types/graph/engine/planning/GraphExecutionPlan.d.cts +0 -25
- package/lib/types/graph/engine/planning/GraphExecutionPlan.d.mts +0 -25
- package/lib/types/graph/engine/planning/GraphExecutionPlanEdge.d.cts +0 -26
- package/lib/types/graph/engine/planning/GraphExecutionPlanEdge.d.mts +0 -26
- package/lib/types/graph/engine/planning/GraphExecutionPlanLayer.d.cts +0 -13
- package/lib/types/graph/engine/planning/GraphExecutionPlanLayer.d.mts +0 -13
- package/lib/types/graph/engine/planning/GraphExecutionPlanNode.d.cts +0 -28
- package/lib/types/graph/engine/planning/GraphExecutionPlanNode.d.mts +0 -28
- package/lib/types/graph/engine/planning/GraphExecutionPlanner.d.cts +0 -48
- package/lib/types/graph/engine/planning/GraphExecutionPlanner.d.mts +0 -48
- package/lib/types/graph/engine/planning/GraphTopology.d.cts +0 -23
- package/lib/types/graph/engine/planning/GraphTopology.d.mts +0 -23
- package/lib/types/graph/engine/planning/index.d.cts +0 -11
- package/lib/types/graph/engine/planning/index.d.mts +0 -11
- package/lib/types/graph/engine/registry/GraphNodeExecutorRegistry.d.cts +0 -39
- package/lib/types/graph/engine/registry/GraphNodeExecutorRegistry.d.mts +0 -39
- package/lib/types/graph/engine/registry/GraphNodeExecutorResolver.d.cts +0 -21
- package/lib/types/graph/engine/registry/GraphNodeExecutorResolver.d.mts +0 -21
- package/lib/types/graph/engine/registry/index.d.cts +0 -7
- package/lib/types/graph/engine/registry/index.d.mts +0 -7
- package/lib/types/graph/engine/runs/GraphRunEventPublisher.d.cts +0 -26
- package/lib/types/graph/engine/runs/GraphRunEventPublisher.d.mts +0 -26
- package/lib/types/graph/engine/runs/GraphRunExecutor.d.cts +0 -75
- package/lib/types/graph/engine/runs/GraphRunExecutor.d.mts +0 -75
- package/lib/types/graph/engine/runs/GraphRunFingerprint.d.cts +0 -8
- package/lib/types/graph/engine/runs/GraphRunFingerprint.d.mts +0 -8
- package/lib/types/graph/engine/runs/GraphRunService.d.cts +0 -93
- package/lib/types/graph/engine/runs/GraphRunService.d.mts +0 -93
- package/lib/types/graph/engine/runs/InMemoryGraphRunEventStore.d.cts +0 -28
- package/lib/types/graph/engine/runs/InMemoryGraphRunEventStore.d.mts +0 -28
- package/lib/types/graph/engine/runs/InMemoryGraphRunStore.d.cts +0 -12
- package/lib/types/graph/engine/runs/InMemoryGraphRunStore.d.mts +0 -12
- package/lib/types/graph/engine/runs/index.d.cts +0 -8
- package/lib/types/graph/engine/runs/index.d.mts +0 -8
- package/lib/types/graph/engine/runs/ownership.d.cts +0 -25
- package/lib/types/graph/engine/runs/ownership.d.mts +0 -25
- package/lib/types/graph/engine/runs/types.d.cts +0 -83
- package/lib/types/graph/engine/runs/types.d.mts +0 -83
- package/lib/types/graph/engine/snapshots/GraphExecutionSnapshotMapper.d.cts +0 -10
- package/lib/types/graph/engine/snapshots/GraphExecutionSnapshotMapper.d.mts +0 -10
- package/lib/types/graph/engine/snapshots/index.d.cts +0 -6
- package/lib/types/graph/engine/snapshots/index.d.mts +0 -6
- package/lib/types/graph/engine/store/GraphCachedValue.d.cts +0 -20
- package/lib/types/graph/engine/store/GraphCachedValue.d.mts +0 -20
- package/lib/types/graph/engine/store/GraphValueKey.d.cts +0 -18
- package/lib/types/graph/engine/store/GraphValueKey.d.mts +0 -18
- package/lib/types/graph/engine/store/GraphValueStore.d.cts +0 -41
- package/lib/types/graph/engine/store/GraphValueStore.d.mts +0 -41
- package/lib/types/graph/engine/store/GraphValueStoreAdapter.d.cts +0 -32
- package/lib/types/graph/engine/store/GraphValueStoreAdapter.d.mts +0 -32
- package/lib/types/graph/engine/store/InMemoryGraphValueStoreAdapter.d.cts +0 -33
- package/lib/types/graph/engine/store/InMemoryGraphValueStoreAdapter.d.mts +0 -33
- package/lib/types/graph/engine/store/index.d.cts +0 -10
- package/lib/types/graph/engine/store/index.d.mts +0 -10
- package/lib/types/graph/engine/types.d.cts +0 -208
- package/lib/types/graph/engine/types.d.mts +0 -208
- package/lib/types/graph/engine/validation/GraphConnectionPolicyValidator.d.cts +0 -32
- package/lib/types/graph/engine/validation/GraphConnectionPolicyValidator.d.mts +0 -32
- package/lib/types/graph/engine/validation/GraphCredentialReferenceValidator.d.cts +0 -62
- package/lib/types/graph/engine/validation/GraphCredentialReferenceValidator.d.mts +0 -62
- package/lib/types/graph/engine/validation/GraphDefinitionValidator.d.cts +0 -23
- package/lib/types/graph/engine/validation/GraphDefinitionValidator.d.mts +0 -23
- package/lib/types/graph/engine/validation/GraphEdgeInstanceValidator.d.cts +0 -32
- package/lib/types/graph/engine/validation/GraphEdgeInstanceValidator.d.mts +0 -32
- package/lib/types/graph/engine/validation/GraphNodeInstanceValidator.d.cts +0 -37
- package/lib/types/graph/engine/validation/GraphNodeInstanceValidator.d.mts +0 -37
- package/lib/types/graph/engine/validation/GraphParameterValidator.d.cts +0 -92
- package/lib/types/graph/engine/validation/GraphParameterValidator.d.mts +0 -92
- package/lib/types/graph/engine/validation/GraphPortSchemaResolver.d.cts +0 -39
- package/lib/types/graph/engine/validation/GraphPortSchemaResolver.d.mts +0 -39
- package/lib/types/graph/engine/validation/GraphResolvedWorkflow.d.cts +0 -66
- package/lib/types/graph/engine/validation/GraphResolvedWorkflow.d.mts +0 -66
- package/lib/types/graph/engine/validation/GraphValidationErrors.d.cts +0 -34
- package/lib/types/graph/engine/validation/GraphValidationErrors.d.mts +0 -34
- package/lib/types/graph/engine/validation/GraphValidationIssue.d.cts +0 -39
- package/lib/types/graph/engine/validation/GraphValidationIssue.d.mts +0 -39
- package/lib/types/graph/engine/validation/GraphValueValidator.d.cts +0 -27
- package/lib/types/graph/engine/validation/GraphValueValidator.d.mts +0 -27
- package/lib/types/graph/engine/validation/GraphWorkflowDocumentValidator.d.cts +0 -162
- package/lib/types/graph/engine/validation/GraphWorkflowDocumentValidator.d.mts +0 -162
- package/lib/types/graph/engine/validation/index.d.cts +0 -19
- package/lib/types/graph/engine/validation/index.d.mts +0 -19
- package/lib/types/graph/index.d.cts +0 -12
- package/lib/types/graph/index.d.mts +0 -12
- package/lib/types/graph/log/GraphRunLogger.d.cts +0 -76
- package/lib/types/graph/log/GraphRunLogger.d.mts +0 -76
- package/lib/types/graph/log/LogParameters.d.cts +0 -7
- package/lib/types/graph/log/LogParameters.d.mts +0 -7
- package/lib/types/nest/graph/GraphExecutionController.d.cts +0 -110
- package/lib/types/nest/graph/GraphExecutionController.d.mts +0 -110
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +0 -83
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +0 -83
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +0 -24
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +0 -24
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +0 -66
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +0 -66
- package/lib/types/nest/graph/GraphNodeCatalogueController.d.cts +0 -70
- package/lib/types/nest/graph/GraphNodeCatalogueController.d.mts +0 -70
- package/lib/types/nest/graph/GraphResultService.d.cts +0 -20
- package/lib/types/nest/graph/GraphResultService.d.mts +0 -20
- package/lib/types/nest/graph/GraphRunController.d.cts +0 -87
- package/lib/types/nest/graph/GraphRunController.d.mts +0 -87
- package/lib/types/nest/graph/GraphRunModel.d.cts +0 -22
- package/lib/types/nest/graph/GraphRunModel.d.mts +0 -22
- package/lib/types/nest/graph/GraphRunModelService.d.cts +0 -21
- package/lib/types/nest/graph/GraphRunModelService.d.mts +0 -21
- package/lib/types/nest/graph/GraphWorkflowBoundaryValidation.d.cts +0 -28
- package/lib/types/nest/graph/GraphWorkflowBoundaryValidation.d.mts +0 -28
- package/lib/types/nest/graph/GraphWorkflowController.d.cts +0 -62
- package/lib/types/nest/graph/GraphWorkflowController.d.mts +0 -62
- package/lib/types/nest/graph/GraphWorkflowDocumentLimits.d.cts +0 -33
- package/lib/types/nest/graph/GraphWorkflowDocumentLimits.d.mts +0 -33
- package/lib/types/nest/graph/GraphWorkflowErrors.d.cts +0 -13
- package/lib/types/nest/graph/GraphWorkflowErrors.d.mts +0 -13
- package/lib/types/nest/graph/GraphWorkflowModel.d.cts +0 -24
- package/lib/types/nest/graph/GraphWorkflowModel.d.mts +0 -24
- package/lib/types/nest/graph/GraphWorkflowService.d.cts +0 -54
- package/lib/types/nest/graph/GraphWorkflowService.d.mts +0 -54
- package/lib/types/nest/graph/index.d.cts +0 -15
- package/lib/types/nest/graph/index.d.mts +0 -15
- package/lib/types/nest/graph/main.d.cts +0 -1
- package/lib/types/nest/graph/main.d.mts +0 -1
- /package/lib/cjs/{graph/engine/runs → redis}/types.cjs +0 -0
- /package/lib/esm/{graph/engine/runs → redis}/types.js +0 -0
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { Adapter, ConnectionError, PersistenceKeys, Sequence, } from "@decaf-ts/core";
|
|
3
|
+
import { createClient } from "redis";
|
|
4
|
+
import { QueryError } from "@decaf-ts/core";
|
|
5
|
+
import { BaseError, ConflictError, DBKeys, generated, InternalError, NotFoundError, onCreate, onCreateUpdate, } from "@decaf-ts/db-decorators";
|
|
6
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
7
|
+
import { Decoration, Metadata, propMetadata, } from "@decaf-ts/decoration";
|
|
8
|
+
import { RedisDefaultPrefix, RedisFlavour } from "./constants.js";
|
|
9
|
+
import { RedisStatement } from "./RedisStatement.js";
|
|
10
|
+
import { RedisPaginator } from "./RedisPaginator.js";
|
|
11
|
+
import { RedisDispatch } from "./RedisDispatch.js";
|
|
12
|
+
import { RedisContextLock } from "./RedisContextLock.js";
|
|
13
|
+
import { createdByOnRedisCreateUpdate } from "./handlers.js";
|
|
14
|
+
import { deserialize, serialize } from "./serialization.js";
|
|
15
|
+
/**
|
|
16
|
+
* @description Redis adapter for data persistence
|
|
17
|
+
* @summary The RedisAdapter implements the persistence layer on top of Redis
|
|
18
|
+
* (or any Redis-compatible server such as DragonflyDB). Each model table is
|
|
19
|
+
* stored as a single Redis hash whose fields are record ids and whose values are
|
|
20
|
+
* serialized records. The adapter is modelled on the core RAM adapter: raw queries
|
|
21
|
+
* load the matching table, revert every record to a model and then apply the same
|
|
22
|
+
* filtering, sorting, aggregation and pagination logic in JavaScript.
|
|
23
|
+
* `@transactional()` is backed by {@link RedisContextLock}, which buffers writes
|
|
24
|
+
* on a dedicated connection and flushes them atomically with `MULTI`/`EXEC`.
|
|
25
|
+
* @class RedisAdapter
|
|
26
|
+
* @category Redis
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const adapter = new RedisAdapter({ url: "redis://localhost:6379" });
|
|
30
|
+
* await adapter.initialize();
|
|
31
|
+
* const repo = new (adapter.repository<User>())(User, adapter);
|
|
32
|
+
* await repo.create(new User({ name: "John" }));
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class RedisAdapter extends Adapter {
|
|
36
|
+
constructor(conf = {}, alias) {
|
|
37
|
+
super(conf, RedisFlavour, alias);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @description Creates operation flags with a user identity
|
|
41
|
+
* @summary Extends the base flags with a `UUID` used by the `createdBy` and
|
|
42
|
+
* `updatedBy` handlers. Defaults to the configured `user` or the current time.
|
|
43
|
+
* @template M - The model type for the operation
|
|
44
|
+
* @param {OperationKeys} operation - The operation being performed
|
|
45
|
+
* @param {Constructor<M>} model - The model constructor
|
|
46
|
+
* @param {Partial<RedisFlags>} flags - Partial flags to extend
|
|
47
|
+
* @return {Promise<RedisFlags>} The complete flags with a UUID
|
|
48
|
+
*/
|
|
49
|
+
async flags(operation, model, flags) {
|
|
50
|
+
return Object.assign(await super.flags(operation, model, Object.assign({
|
|
51
|
+
UUID: flags.UUID || this.config.user || "" + Date.now(),
|
|
52
|
+
}, flags)));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @description Creates the Redis event dispatcher
|
|
56
|
+
* @return {RedisDispatch} A Redis-aware dispatch instance
|
|
57
|
+
*/
|
|
58
|
+
Dispatch() {
|
|
59
|
+
return new RedisDispatch();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @description Provides the Redis transaction lock implementation
|
|
63
|
+
* @summary Returns a fresh {@link RedisContextLock} per top-level transaction
|
|
64
|
+
* so `@transactional()` can buffer writes on a dedicated connection.
|
|
65
|
+
* @param {...any[]} args - Optional arguments forwarded to the lock
|
|
66
|
+
* @return {RedisContextLock} A fresh Redis transaction lock
|
|
67
|
+
*/
|
|
68
|
+
transactionLock(...args) {
|
|
69
|
+
return new RedisContextLock(this, ...args);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @description Initializes the adapter and opens the Redis connection
|
|
73
|
+
* @param {...MaybeContextualArg} args - Initialization arguments
|
|
74
|
+
* @return {Promise<void>} A promise that resolves once initialization is complete
|
|
75
|
+
*/
|
|
76
|
+
async initialize(...args) {
|
|
77
|
+
const { log } = (await this.logCtx(args, PersistenceKeys.INITIALIZATION, true)).for(this.initialize);
|
|
78
|
+
const client = this.client;
|
|
79
|
+
try {
|
|
80
|
+
if (!client.isOpen)
|
|
81
|
+
await client.connect();
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
throw this.parseError(e);
|
|
85
|
+
}
|
|
86
|
+
this._redisClient = client;
|
|
87
|
+
await super.initialize(...args);
|
|
88
|
+
log.verbose(`${this.toString()} initialized`);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Shuts down the adapter and closes the Redis connection
|
|
92
|
+
* @param {...MaybeContextualArg} args - Shutdown arguments
|
|
93
|
+
* @return {Promise<void>} A promise that resolves once shutdown is complete
|
|
94
|
+
*/
|
|
95
|
+
async shutdown(...args) {
|
|
96
|
+
await super.shutdown(...args);
|
|
97
|
+
const client = this._redisClient ?? this._client;
|
|
98
|
+
this._redisClient = undefined;
|
|
99
|
+
this._client = undefined;
|
|
100
|
+
if (!client)
|
|
101
|
+
return;
|
|
102
|
+
try {
|
|
103
|
+
await client.quit();
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
try {
|
|
107
|
+
client.destroy();
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// the connection is already closed; nothing left to release
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* @description Builds the namespaced Redis key for a table
|
|
116
|
+
* @param {string} table - The table (model) name
|
|
117
|
+
* @return {string} The namespaced Redis hash key
|
|
118
|
+
*/
|
|
119
|
+
recordKey(table) {
|
|
120
|
+
return `${this.config.prefix ?? RedisDefaultPrefix}:${table}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description Resolves the active transaction lock from a context, when present
|
|
124
|
+
* @summary Returns the {@link RedisContextLock} only while a transaction is
|
|
125
|
+
* actually open, so CRUD operations buffer their writes during a transaction and
|
|
126
|
+
* go straight to Redis otherwise.
|
|
127
|
+
* @param {RedisContext} [ctx] - The operation context
|
|
128
|
+
* @return {RedisContextLock | undefined} The active lock, when one exists
|
|
129
|
+
*/
|
|
130
|
+
activeLock(ctx) {
|
|
131
|
+
const lock = ctx?.getOrUndefined("transactionLock");
|
|
132
|
+
return lock instanceof RedisContextLock && lock.active ? lock : undefined;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description Prepares a model for storage
|
|
136
|
+
* @summary Delegates to the base implementation, which extracts the primary
|
|
137
|
+
* key from the record before it is handed to {@link create}.
|
|
138
|
+
* @template M - The model type being prepared
|
|
139
|
+
* @param {M} model - The model instance to prepare
|
|
140
|
+
* @return Object containing the record, id and transient data
|
|
141
|
+
*/
|
|
142
|
+
prepare(model, ...args) {
|
|
143
|
+
const ctx = args.pop();
|
|
144
|
+
return super.prepare(model, ...args, ctx);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @description Converts a stored record back to a model instance
|
|
148
|
+
* @summary Delegates to the base implementation, reattaching the primary key
|
|
149
|
+
* extracted from the record's Redis hash field.
|
|
150
|
+
* @template M - The model type to revert to
|
|
151
|
+
* @param {Record<string, any>} obj - The stored record
|
|
152
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
153
|
+
* @param {PrimaryKeyType} id - The primary key value
|
|
154
|
+
* @return {M} The reconstructed model instance
|
|
155
|
+
*/
|
|
156
|
+
revert(obj, clazz, id, transient, ...args) {
|
|
157
|
+
return super.revert(obj, clazz, id, transient, ...args);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @description Creates a new record in Redis
|
|
161
|
+
* @summary Writes the serialized record to the table hash. Inside a
|
|
162
|
+
* transaction the write is buffered (read-your-writes) instead of hitting
|
|
163
|
+
* Redis; otherwise `HSETNX` guarantees the record does not already exist.
|
|
164
|
+
* @template M - The model type
|
|
165
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
166
|
+
* @param {PrimaryKeyType} id - The unique record identifier
|
|
167
|
+
* @param {Record<string, any>} model - The record to store
|
|
168
|
+
* @return {Promise<Record<string, any>>} The stored record
|
|
169
|
+
*/
|
|
170
|
+
async create(clazz, id, model, ...args) {
|
|
171
|
+
const { log, ctx } = this.logCtx(args, this.create);
|
|
172
|
+
const table = Model.tableName(clazz);
|
|
173
|
+
log.debug(`creating record in table ${table} with id ${id}`);
|
|
174
|
+
const field = String(id);
|
|
175
|
+
const key = this.recordKey(table);
|
|
176
|
+
const lock = this.activeLock(ctx);
|
|
177
|
+
const serialized = serialize(model);
|
|
178
|
+
if (lock) {
|
|
179
|
+
const buffered = lock.getRecord(table, field);
|
|
180
|
+
const exists = buffered.found && buffered.value !== null
|
|
181
|
+
? true
|
|
182
|
+
: await this.client.hExists(key, field);
|
|
183
|
+
if (exists)
|
|
184
|
+
throw new ConflictError(`Record with id ${id} already exists in table ${table}`);
|
|
185
|
+
lock.setRecord(table, field, serialized);
|
|
186
|
+
return model;
|
|
187
|
+
}
|
|
188
|
+
const created = await this.client.hSetNX(key, field, serialized);
|
|
189
|
+
if (created === 0)
|
|
190
|
+
throw new ConflictError(`Record with id ${id} already exists in table ${table}`);
|
|
191
|
+
return model;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* @description Reads a record from Redis
|
|
195
|
+
* @summary Reads the record from the table hash. Inside a transaction the
|
|
196
|
+
* buffered value wins (read-your-writes); a buffered delete is treated as a
|
|
197
|
+
* missing record.
|
|
198
|
+
* @template M - The model type
|
|
199
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
200
|
+
* @param {PrimaryKeyType} id - The unique record identifier
|
|
201
|
+
* @return {Promise<Record<string, any>>} The stored record
|
|
202
|
+
*/
|
|
203
|
+
async read(clazz, id, ...args) {
|
|
204
|
+
const { log, ctx } = this.logCtx(args, this.read);
|
|
205
|
+
const table = Model.tableName(clazz);
|
|
206
|
+
log.debug(`reading record in table ${table} with id ${id}`);
|
|
207
|
+
const field = String(id);
|
|
208
|
+
const lock = this.activeLock(ctx);
|
|
209
|
+
if (lock) {
|
|
210
|
+
const buffered = lock.getRecord(table, field);
|
|
211
|
+
if (buffered.found) {
|
|
212
|
+
if (buffered.value === null)
|
|
213
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
214
|
+
return deserialize(buffered.value);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const raw = await this.client.hGet(this.recordKey(table), field);
|
|
218
|
+
if (raw === null || raw === undefined)
|
|
219
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
220
|
+
return deserialize(raw);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* @description Updates an existing record in Redis
|
|
224
|
+
* @summary Inside a transaction the write is buffered; otherwise the record
|
|
225
|
+
* is overwritten in place. A missing record raises a `NotFoundError`.
|
|
226
|
+
* @template M - The model type
|
|
227
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
228
|
+
* @param {PrimaryKeyType} id - The unique record identifier
|
|
229
|
+
* @param {Record<string, any>} model - The new record data
|
|
230
|
+
* @return {Promise<Record<string, any>>} The updated record
|
|
231
|
+
*/
|
|
232
|
+
async update(clazz, id, model, ...args) {
|
|
233
|
+
const { log, ctx } = this.logCtx(args, this.update);
|
|
234
|
+
const table = Model.tableName(clazz);
|
|
235
|
+
log.debug(`updating record in table ${table} with id ${id}`);
|
|
236
|
+
const field = String(id);
|
|
237
|
+
const key = this.recordKey(table);
|
|
238
|
+
const lock = this.activeLock(ctx);
|
|
239
|
+
const serialized = serialize(model);
|
|
240
|
+
if (lock) {
|
|
241
|
+
const buffered = lock.getRecord(table, field);
|
|
242
|
+
const deleted = buffered.found && buffered.value === null;
|
|
243
|
+
const exists = deleted || buffered.found
|
|
244
|
+
? !deleted
|
|
245
|
+
: await this.client.hExists(key, field);
|
|
246
|
+
if (!exists)
|
|
247
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
248
|
+
lock.setRecord(table, field, serialized);
|
|
249
|
+
return model;
|
|
250
|
+
}
|
|
251
|
+
const exists = await this.client.hExists(key, field);
|
|
252
|
+
if (!exists)
|
|
253
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
254
|
+
await this.client.hSet(key, field, serialized);
|
|
255
|
+
return model;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* @description Deletes a record from Redis
|
|
259
|
+
* @summary Inside a transaction the delete is buffered; otherwise the field
|
|
260
|
+
* is removed from the table hash immediately. A missing record raises a
|
|
261
|
+
* `NotFoundError`.
|
|
262
|
+
* @template M - The model type
|
|
263
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
264
|
+
* @param {PrimaryKeyType} id - The unique record identifier
|
|
265
|
+
* @return {Promise<Record<string, any>>} The deleted record
|
|
266
|
+
*/
|
|
267
|
+
async delete(clazz, id, ...args) {
|
|
268
|
+
const { log, ctx } = this.logCtx(args, this.delete);
|
|
269
|
+
const table = Model.tableName(clazz);
|
|
270
|
+
log.debug(`deleting record from table ${table} with id ${id}`);
|
|
271
|
+
const field = String(id);
|
|
272
|
+
const key = this.recordKey(table);
|
|
273
|
+
const lock = this.activeLock(ctx);
|
|
274
|
+
if (lock) {
|
|
275
|
+
const buffered = lock.getRecord(table, field);
|
|
276
|
+
const raw = buffered.found
|
|
277
|
+
? buffered.value
|
|
278
|
+
: await this.client.hGet(key, field);
|
|
279
|
+
if (raw === null || raw === undefined)
|
|
280
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
281
|
+
lock.deleteRecord(table, field);
|
|
282
|
+
return deserialize(raw);
|
|
283
|
+
}
|
|
284
|
+
const raw = await this.client.hGet(key, field);
|
|
285
|
+
if (raw === null || raw === undefined)
|
|
286
|
+
throw new NotFoundError(`Record with id ${id} not found in table ${table}`);
|
|
287
|
+
await this.client.hDel(key, field);
|
|
288
|
+
return deserialize(raw);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* @description Loads every record of a table, applying buffered writes
|
|
292
|
+
* @summary Reads the table hash and merges the transaction buffer on top so a
|
|
293
|
+
* query inside a transaction observes the transaction's own writes.
|
|
294
|
+
* @param {string} table - The table (model) name
|
|
295
|
+
* @param {RedisContext} [ctx] - The operation context
|
|
296
|
+
* @return {Promise<[string, string][]>} The record id/serialized pairs
|
|
297
|
+
*/
|
|
298
|
+
async loadTable(table, ctx) {
|
|
299
|
+
const raw = await this.client.hGetAll(this.recordKey(table));
|
|
300
|
+
const merged = new Map(Object.entries(raw));
|
|
301
|
+
const lock = this.activeLock(ctx);
|
|
302
|
+
if (lock) {
|
|
303
|
+
const buffered = lock.tableEntries(table);
|
|
304
|
+
if (buffered) {
|
|
305
|
+
for (const [id, value] of buffered) {
|
|
306
|
+
if (value === null)
|
|
307
|
+
merged.delete(id);
|
|
308
|
+
else
|
|
309
|
+
merged.set(id, value);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return [...merged.entries()];
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* @description Executes a raw query against Redis
|
|
317
|
+
* @summary Loads the matching table, reverts every record to a model and
|
|
318
|
+
* applies the in-memory filtering, sorting, aggregation and pagination logic.
|
|
319
|
+
* This mirrors the core RAM adapter, since Redis hashes are not queryable.
|
|
320
|
+
* @template R - The query return type
|
|
321
|
+
* @template D - Whether only documents are returned
|
|
322
|
+
* @param {RawRedisQuery<any>} rawInput - The query specification
|
|
323
|
+
* @param {D} docsOnly - Whether to return only documents (default true)
|
|
324
|
+
* @return {Promise<RawResult<R, D>>} The query result
|
|
325
|
+
*/
|
|
326
|
+
async raw(rawInput, docsOnly = true, ...args) {
|
|
327
|
+
const { log, ctx } = this.logCtx(args, this.raw);
|
|
328
|
+
log.debug(`performing raw query: ${JSON.stringify(rawInput)}`);
|
|
329
|
+
const { where, sort, limit, skip, from, groupBy, count: countField, countDistinct: countDistinctField, min: minField, max: maxField, sum: sumField, avg: avgField, distinct: distinctField, } = rawInput;
|
|
330
|
+
let { select } = rawInput;
|
|
331
|
+
const table = Model.tableName(from);
|
|
332
|
+
const entries = await this.loadTable(table, ctx);
|
|
333
|
+
const clazz = from;
|
|
334
|
+
const id = Model.pk(from);
|
|
335
|
+
const props = Metadata.get(from, Metadata.key(DBKeys.ID, id));
|
|
336
|
+
let result = entries.map(([pk, r]) => this.revert(deserialize(r), from, Sequence.parseValue(props.type, pk), undefined, ctx));
|
|
337
|
+
if (sort)
|
|
338
|
+
result = result.sort(sort);
|
|
339
|
+
result = where ? result.filter(where) : result;
|
|
340
|
+
if ("count" in rawInput) {
|
|
341
|
+
if (!countField)
|
|
342
|
+
return result.length;
|
|
343
|
+
const count = result.filter((r) => r[countField] !== undefined &&
|
|
344
|
+
r[countField] !== null).length;
|
|
345
|
+
return count;
|
|
346
|
+
}
|
|
347
|
+
if (countDistinctField !== undefined) {
|
|
348
|
+
const seen = new Set();
|
|
349
|
+
for (const item of result) {
|
|
350
|
+
const value = item[countDistinctField];
|
|
351
|
+
if (value !== undefined && value !== null)
|
|
352
|
+
seen.add(JSON.stringify(value));
|
|
353
|
+
}
|
|
354
|
+
return seen.size;
|
|
355
|
+
}
|
|
356
|
+
if (minField !== undefined) {
|
|
357
|
+
this.ensureFieldType(clazz, minField, "MIN operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
|
|
358
|
+
if (result.length === 0)
|
|
359
|
+
return null;
|
|
360
|
+
const values = result
|
|
361
|
+
.map((r) => r[minField])
|
|
362
|
+
.filter((v) => v !== undefined && v !== null);
|
|
363
|
+
if (values.length === 0)
|
|
364
|
+
return null;
|
|
365
|
+
let minValue = values[0];
|
|
366
|
+
for (const v of values) {
|
|
367
|
+
const comparison = v instanceof Date
|
|
368
|
+
? v.getTime()
|
|
369
|
+
: typeof v === "bigint"
|
|
370
|
+
? Number(v)
|
|
371
|
+
: Number(v);
|
|
372
|
+
const minComparison = minValue instanceof Date
|
|
373
|
+
? minValue.getTime()
|
|
374
|
+
: typeof minValue === "bigint"
|
|
375
|
+
? Number(minValue)
|
|
376
|
+
: Number(minValue);
|
|
377
|
+
if (comparison < minComparison)
|
|
378
|
+
minValue = v;
|
|
379
|
+
}
|
|
380
|
+
return minValue;
|
|
381
|
+
}
|
|
382
|
+
if (maxField !== undefined) {
|
|
383
|
+
this.ensureFieldType(clazz, maxField, "MAX operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
|
|
384
|
+
if (result.length === 0)
|
|
385
|
+
return null;
|
|
386
|
+
const values = result
|
|
387
|
+
.map((r) => r[maxField])
|
|
388
|
+
.filter((v) => v !== undefined && v !== null);
|
|
389
|
+
if (values.length === 0)
|
|
390
|
+
return null;
|
|
391
|
+
let maxValue = values[0];
|
|
392
|
+
for (const v of values) {
|
|
393
|
+
const comparison = v instanceof Date
|
|
394
|
+
? v.getTime()
|
|
395
|
+
: typeof v === "bigint"
|
|
396
|
+
? Number(v)
|
|
397
|
+
: Number(v);
|
|
398
|
+
const maxComparison = maxValue instanceof Date
|
|
399
|
+
? maxValue.getTime()
|
|
400
|
+
: typeof maxValue === "bigint"
|
|
401
|
+
? Number(maxValue)
|
|
402
|
+
: Number(maxValue);
|
|
403
|
+
if (comparison > maxComparison)
|
|
404
|
+
maxValue = v;
|
|
405
|
+
}
|
|
406
|
+
return maxValue;
|
|
407
|
+
}
|
|
408
|
+
if (sumField !== undefined) {
|
|
409
|
+
this.ensureFieldType(clazz, sumField, "SUM operation", (type) => this.isNumericType(type), "numeric");
|
|
410
|
+
if (result.length === 0)
|
|
411
|
+
return null;
|
|
412
|
+
const values = result
|
|
413
|
+
.map((r) => r[sumField])
|
|
414
|
+
.filter((v) => v !== undefined && v !== null);
|
|
415
|
+
if (values.length === 0)
|
|
416
|
+
return null;
|
|
417
|
+
const sum = values.reduce((acc, v) => acc + this.toNumericValue(v, sumField, "SUM operation"), 0);
|
|
418
|
+
return sum;
|
|
419
|
+
}
|
|
420
|
+
if (avgField !== undefined) {
|
|
421
|
+
const fieldType = this.resolveFieldType(clazz, avgField);
|
|
422
|
+
const isDateField = fieldType === "date";
|
|
423
|
+
this.ensureFieldType(clazz, avgField, "AVG operation", (type) => this.isNumericType(type) || type === "date", "numeric or date");
|
|
424
|
+
if (result.length === 0)
|
|
425
|
+
return null;
|
|
426
|
+
const values = result
|
|
427
|
+
.map((r) => r[avgField])
|
|
428
|
+
.filter((v) => v !== undefined && v !== null);
|
|
429
|
+
if (values.length === 0)
|
|
430
|
+
return null;
|
|
431
|
+
if (isDateField) {
|
|
432
|
+
const timestamps = values.map((v) => v instanceof Date ? v.getTime() : new Date(v).getTime());
|
|
433
|
+
const avgTimestamp = timestamps.reduce((acc, t) => acc + t, 0) / timestamps.length;
|
|
434
|
+
return new Date(avgTimestamp);
|
|
435
|
+
}
|
|
436
|
+
const total = values.reduce((acc, v) => acc + this.toNumericValue(v, avgField, "AVG operation"), 0);
|
|
437
|
+
return (total / values.length);
|
|
438
|
+
}
|
|
439
|
+
if (distinctField !== undefined) {
|
|
440
|
+
const seen = new Set();
|
|
441
|
+
const distinctResults = [];
|
|
442
|
+
for (const item of result) {
|
|
443
|
+
const value = item[distinctField];
|
|
444
|
+
const key = JSON.stringify(value);
|
|
445
|
+
if (!seen.has(key)) {
|
|
446
|
+
seen.add(key);
|
|
447
|
+
distinctResults.push(value);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return distinctResults;
|
|
451
|
+
}
|
|
452
|
+
let count;
|
|
453
|
+
let output;
|
|
454
|
+
if (groupBy && groupBy.length) {
|
|
455
|
+
const grouped = this.groupRecords(result, groupBy);
|
|
456
|
+
const keys = Object.keys(grouped);
|
|
457
|
+
count = keys.length;
|
|
458
|
+
output = this.applyGroupPagination(grouped, skip, limit);
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
count = result.length;
|
|
462
|
+
let paged = result;
|
|
463
|
+
if (skip)
|
|
464
|
+
paged = paged.slice(skip);
|
|
465
|
+
if (limit)
|
|
466
|
+
paged = paged.slice(0, limit);
|
|
467
|
+
output = paged;
|
|
468
|
+
}
|
|
469
|
+
if (select && !(groupBy && groupBy.length)) {
|
|
470
|
+
select = Array.isArray(select) ? select : [select];
|
|
471
|
+
output = output.map((row) => Object.entries(row).reduce((acc, [key, val]) => {
|
|
472
|
+
if (select.includes(key))
|
|
473
|
+
acc[key] = val;
|
|
474
|
+
return acc;
|
|
475
|
+
}, {}));
|
|
476
|
+
}
|
|
477
|
+
if (docsOnly)
|
|
478
|
+
return output;
|
|
479
|
+
return { data: output, count };
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* @description Groups records by one or more attributes
|
|
483
|
+
* @summary Recursively nests groups when multiple selectors are provided; the
|
|
484
|
+
* top-level result maps each group key to the matching records (or nested groups).
|
|
485
|
+
* @param {any[]} records - The records to group
|
|
486
|
+
* @param {(keyof Model)[]} selectors - The attributes to group by
|
|
487
|
+
* @return {Record<string, any>} The grouped records keyed by normalized group keys
|
|
488
|
+
*/
|
|
489
|
+
groupRecords(records, selectors) {
|
|
490
|
+
if (!selectors.length)
|
|
491
|
+
return records;
|
|
492
|
+
const [current, ...rest] = selectors;
|
|
493
|
+
const grouped = {};
|
|
494
|
+
for (const record of records) {
|
|
495
|
+
const key = this.normalizeGroupKey(record[current]);
|
|
496
|
+
if (!grouped[key])
|
|
497
|
+
grouped[key] = [];
|
|
498
|
+
grouped[key].push(record);
|
|
499
|
+
}
|
|
500
|
+
if (!rest.length)
|
|
501
|
+
return grouped;
|
|
502
|
+
const nested = {};
|
|
503
|
+
for (const [key, values] of Object.entries(grouped)) {
|
|
504
|
+
nested[key] = this.groupRecords(values, rest);
|
|
505
|
+
}
|
|
506
|
+
return nested;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* @description Normalizes a group key to a string
|
|
510
|
+
* @summary Produces a stable string key for `undefined`, `null`, symbols,
|
|
511
|
+
* objects (via JSON) and primitives.
|
|
512
|
+
* @param {any} value - The raw group key value
|
|
513
|
+
* @return {string} The normalized key
|
|
514
|
+
*/
|
|
515
|
+
normalizeGroupKey(value) {
|
|
516
|
+
if (value === undefined)
|
|
517
|
+
return "undefined";
|
|
518
|
+
if (value === null)
|
|
519
|
+
return "null";
|
|
520
|
+
if (typeof value === "symbol")
|
|
521
|
+
return value.toString();
|
|
522
|
+
if (typeof value === "object") {
|
|
523
|
+
try {
|
|
524
|
+
return JSON.stringify(value);
|
|
525
|
+
}
|
|
526
|
+
catch {
|
|
527
|
+
return String(value);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return String(value);
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* @description Applies skip/limit pagination over grouped results
|
|
534
|
+
* @summary Pages the group keys while preserving their associated records.
|
|
535
|
+
* @param {Record<string, any>} grouped - The grouped records
|
|
536
|
+
* @param {number} [skip] - The number of groups to skip
|
|
537
|
+
* @param {number} [limit] - The maximum number of groups to return
|
|
538
|
+
* @return {Record<string, any>} The paged groups
|
|
539
|
+
*/
|
|
540
|
+
applyGroupPagination(grouped, skip, limit) {
|
|
541
|
+
if (typeof skip === "undefined" && typeof limit === "undefined")
|
|
542
|
+
return grouped;
|
|
543
|
+
const keys = Object.keys(grouped);
|
|
544
|
+
const start = skip ?? 0;
|
|
545
|
+
const end = typeof limit === "undefined" ? undefined : start + limit;
|
|
546
|
+
const paged = {};
|
|
547
|
+
for (const key of keys.slice(start, end)) {
|
|
548
|
+
paged[key] = grouped[key];
|
|
549
|
+
}
|
|
550
|
+
return paged;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* @description Parses and converts errors to appropriate types
|
|
554
|
+
* @summary Returns `BaseError` instances unchanged, maps connection
|
|
555
|
+
* failures to `ConnectionError` and wraps everything else in an
|
|
556
|
+
* `InternalError`.
|
|
557
|
+
* @template V - The expected error type
|
|
558
|
+
* @param {Error} err - The error to parse
|
|
559
|
+
* @return {V} The parsed error
|
|
560
|
+
*/
|
|
561
|
+
parseError(err) {
|
|
562
|
+
if (err instanceof BaseError)
|
|
563
|
+
return err;
|
|
564
|
+
const message = err?.message ?? String(err);
|
|
565
|
+
if (/ECONNREFUSED|ENOTFOUND|ETIMEDOUT|Connection is closed|Socket closed|WRONGPASS|NOAUTH/i.test(message))
|
|
566
|
+
return new ConnectionError(err);
|
|
567
|
+
return new InternalError(err);
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* @description Creates a new statement builder for queries
|
|
571
|
+
* @template M - The model type for the statement
|
|
572
|
+
* @param {Partial<AdapterFlags>} [overrides] - Optional adapter flag overrides
|
|
573
|
+
* @return {RedisStatement<M, any, Adapter<...>>} A new statement builder
|
|
574
|
+
*/
|
|
575
|
+
Statement(overrides) {
|
|
576
|
+
return new RedisStatement(this, overrides);
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* @description Creates a new paginator for queries
|
|
580
|
+
* @template M - The model type for the paginator
|
|
581
|
+
* @param {RawRedisQuery} query - The query to paginate
|
|
582
|
+
* @param {number} size - The page size
|
|
583
|
+
* @param {Constructor<M>} clazz - The model constructor
|
|
584
|
+
* @return {RedisPaginator<M>} A new paginator
|
|
585
|
+
*/
|
|
586
|
+
Paginator(query, size, clazz) {
|
|
587
|
+
return new RedisPaginator(this, query, size, clazz);
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* @description Validates that an aggregation targets an attribute of the expected kind
|
|
591
|
+
* @summary Resolves the attribute type from the model metadata and raises a
|
|
592
|
+
* `QueryError` when the type does not satisfy the given predicate.
|
|
593
|
+
* @param {Constructor<Model>} clazz - The model constructor
|
|
594
|
+
* @param {string} field - The attribute name to validate
|
|
595
|
+
* @param {string} context - The aggregation context used in error messages
|
|
596
|
+
* @param {function(string): boolean} predicate - Type acceptance predicate
|
|
597
|
+
* @param {string} description - Human readable description of the accepted types
|
|
598
|
+
* @return {void}
|
|
599
|
+
*/
|
|
600
|
+
ensureFieldType(clazz, field, context, predicate, description) {
|
|
601
|
+
const type = this.resolveFieldType(clazz, field);
|
|
602
|
+
if (!type || !predicate(type)) {
|
|
603
|
+
throw new QueryError(`${context} requires ${description} attribute, but "${field}" is ${type || "unknown"}`);
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* @description Resolves the attribute type from the model metadata
|
|
608
|
+
* @summary Reads the metadata or design type of the attribute and normalizes it
|
|
609
|
+
* to a lowercase type name.
|
|
610
|
+
* @param {Constructor<Model>} clazz - The model constructor
|
|
611
|
+
* @param {string} field - The attribute name
|
|
612
|
+
* @return {string | undefined} The normalized attribute type, when resolvable
|
|
613
|
+
*/
|
|
614
|
+
resolveFieldType(clazz, field) {
|
|
615
|
+
const propKey = field;
|
|
616
|
+
const metaType = Metadata.type(clazz, propKey) ??
|
|
617
|
+
Metadata.getPropDesignTypes(clazz, propKey)?.designType;
|
|
618
|
+
return this.normalizeMetaType(metaType);
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* @description Normalizes a raw metadata type to a lowercase type name
|
|
622
|
+
* @param {any} metaType - The raw metadata type value
|
|
623
|
+
* @return {string | undefined} The normalized type name, when resolvable
|
|
624
|
+
*/
|
|
625
|
+
normalizeMetaType(metaType) {
|
|
626
|
+
if (!metaType)
|
|
627
|
+
return undefined;
|
|
628
|
+
if (typeof metaType === "string")
|
|
629
|
+
return metaType.toLowerCase();
|
|
630
|
+
if (typeof metaType === "function" && metaType.name)
|
|
631
|
+
return metaType.name.toLowerCase();
|
|
632
|
+
return undefined;
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* @description Whether the given type name is a numeric type
|
|
636
|
+
* @param {string} [type] - The normalized type name
|
|
637
|
+
* @return {boolean} True for "number" and "bigint"
|
|
638
|
+
*/
|
|
639
|
+
isNumericType(type) {
|
|
640
|
+
return type === "number" || type === "bigint";
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* @description Converts a value to a numeric value for aggregation
|
|
644
|
+
* @summary Accepts numbers and bigints (converted to `Number`) and raises a
|
|
645
|
+
* `QueryError` for any other value kind.
|
|
646
|
+
* @param {any} value - The value to convert
|
|
647
|
+
* @param {string} field - The attribute name used in error messages
|
|
648
|
+
* @param {string} context - The aggregation context used in error messages
|
|
649
|
+
* @return {number} The numeric value
|
|
650
|
+
*/
|
|
651
|
+
toNumericValue(value, field, context) {
|
|
652
|
+
if (typeof value === "number")
|
|
653
|
+
return value;
|
|
654
|
+
if (typeof value === "bigint")
|
|
655
|
+
return Number(value);
|
|
656
|
+
throw new QueryError(`${context} on "${field}" requires numeric values, but got ${typeof value}`);
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* @description Creates the underlying Redis client
|
|
660
|
+
* @summary Returns the already connected client when one exists (including
|
|
661
|
+
* through a `for()` configuration-scoped proxy, whose own `_client` slot would
|
|
662
|
+
* otherwise be empty and build a fresh unconnected client). Otherwise builds a
|
|
663
|
+
* node-redis client from the configured URL or discrete host/port/credentials.
|
|
664
|
+
* The client is created lazily and connected by {@link initialize}.
|
|
665
|
+
* @return {RedisClientType} The Redis client
|
|
666
|
+
*/
|
|
667
|
+
getClient() {
|
|
668
|
+
if (this._redisClient)
|
|
669
|
+
return this._redisClient;
|
|
670
|
+
const { url, host, port, username, password, database } = this.config;
|
|
671
|
+
const options = url
|
|
672
|
+
? { url }
|
|
673
|
+
: { socket: { host: host ?? "localhost", port: port ?? 6379 } };
|
|
674
|
+
if (username)
|
|
675
|
+
options.username = username;
|
|
676
|
+
if (password)
|
|
677
|
+
options.password = password;
|
|
678
|
+
if (typeof database === "number")
|
|
679
|
+
options.database = database;
|
|
680
|
+
return createClient(options);
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* @description Registers Redis-specific decorations for model properties
|
|
684
|
+
* @summary Configures `createdBy` and `updatedBy` handlers for the Redis
|
|
685
|
+
* flavour so those fields are populated from the context UUID.
|
|
686
|
+
* @return {void}
|
|
687
|
+
*/
|
|
688
|
+
static decoration() {
|
|
689
|
+
super.decoration();
|
|
690
|
+
const createdByKey = PersistenceKeys.CREATED_BY;
|
|
691
|
+
const updatedByKey = PersistenceKeys.UPDATED_BY;
|
|
692
|
+
Decoration.flavouredAs(RedisFlavour)
|
|
693
|
+
.for(createdByKey)
|
|
694
|
+
.define(onCreate(createdByOnRedisCreateUpdate), propMetadata(createdByKey, {}), generated(createdByKey))
|
|
695
|
+
.apply();
|
|
696
|
+
Decoration.flavouredAs(RedisFlavour)
|
|
697
|
+
.for(updatedByKey)
|
|
698
|
+
.define(onCreateUpdate(createdByOnRedisCreateUpdate), propMetadata(updatedByKey, {}), generated(updatedByKey))
|
|
699
|
+
.apply();
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
Adapter.setCurrent(RedisFlavour);
|
|
703
|
+
RedisAdapter.decoration();
|
|
704
|
+
//# sourceMappingURL=adapter.js.map
|