js-redis-server 0.0.1 → 0.0.3
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 +210 -39
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +191 -0
- package/dist/cli.js.map +1 -0
- package/dist/cluster.d.ts +36 -0
- package/dist/cluster.d.ts.map +1 -0
- package/dist/cluster.js +227 -0
- package/dist/cluster.js.map +1 -0
- package/dist/commands/cluster.d.ts +11 -0
- package/dist/commands/cluster.d.ts.map +1 -0
- package/dist/commands/cluster.js +233 -0
- package/dist/commands/cluster.js.map +1 -0
- package/dist/commands/command.d.ts +6 -0
- package/dist/commands/command.d.ts.map +1 -0
- package/dist/commands/command.js +390 -0
- package/dist/commands/command.js.map +1 -0
- package/dist/commands/config.d.ts +9 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +142 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/connection.d.ts +24 -0
- package/dist/commands/connection.d.ts.map +1 -0
- package/dist/commands/connection.js +470 -0
- package/dist/commands/connection.js.map +1 -0
- package/dist/commands/hashes.d.ts +64 -0
- package/dist/commands/hashes.d.ts.map +1 -0
- package/dist/commands/hashes.js +274 -0
- package/dist/commands/hashes.js.map +1 -0
- package/dist/commands/helpers.d.ts +16 -0
- package/dist/commands/helpers.d.ts.map +1 -0
- package/dist/commands/helpers.js +77 -0
- package/dist/commands/helpers.js.map +1 -0
- package/dist/commands/index.d.ts +24 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +198 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/introspection.d.ts +17 -0
- package/dist/commands/introspection.d.ts.map +1 -0
- package/dist/commands/introspection.js +54 -0
- package/dist/commands/introspection.js.map +1 -0
- package/dist/commands/keys.d.ts +66 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +345 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/lists.d.ts +73 -0
- package/dist/commands/lists.d.ts.map +1 -0
- package/dist/commands/lists.js +447 -0
- package/dist/commands/lists.js.map +1 -0
- package/dist/commands/scan.d.ts +24 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +316 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/scripts.d.ts +22 -0
- package/dist/commands/scripts.d.ts.map +1 -0
- package/dist/commands/scripts.js +192 -0
- package/dist/commands/scripts.js.map +1 -0
- package/dist/commands/sets.d.ts +62 -0
- package/dist/commands/sets.d.ts.map +1 -0
- package/dist/commands/sets.js +436 -0
- package/dist/commands/sets.js.map +1 -0
- package/dist/commands/streams.d.ts +63 -0
- package/dist/commands/streams.d.ts.map +1 -0
- package/dist/commands/streams.js +504 -0
- package/dist/commands/streams.js.map +1 -0
- package/dist/commands/strings.d.ts +96 -0
- package/dist/commands/strings.d.ts.map +1 -0
- package/dist/commands/strings.js +555 -0
- package/dist/commands/strings.js.map +1 -0
- package/dist/commands/transactions.d.ts +9 -0
- package/dist/commands/transactions.d.ts.map +1 -0
- package/dist/commands/transactions.js +89 -0
- package/dist/commands/transactions.js.map +1 -0
- package/dist/commands/zsets.d.ts +82 -0
- package/dist/commands/zsets.d.ts.map +1 -0
- package/dist/commands/zsets.js +504 -0
- package/dist/commands/zsets.js.map +1 -0
- package/dist/core/client-session.d.ts +172 -0
- package/dist/core/client-session.d.ts.map +1 -0
- package/dist/core/client-session.js +379 -0
- package/dist/core/client-session.js.map +1 -0
- package/dist/core/command-definition.d.ts +64 -0
- package/dist/core/command-definition.d.ts.map +1 -0
- package/dist/core/command-definition.js +10 -0
- package/dist/core/command-definition.js.map +1 -0
- package/dist/core/command-executor.d.ts +103 -0
- package/dist/core/command-executor.d.ts.map +1 -0
- package/dist/core/command-executor.js +295 -0
- package/dist/core/command-executor.js.map +1 -0
- package/dist/core/command-registry.d.ts +16 -0
- package/dist/core/command-registry.d.ts.map +1 -0
- package/dist/core/command-registry.js +35 -0
- package/dist/core/command-registry.js.map +1 -0
- package/dist/core/command-schema.d.ts +43 -0
- package/dist/core/command-schema.d.ts.map +1 -0
- package/dist/core/command-schema.js +189 -0
- package/dist/core/command-schema.js.map +1 -0
- package/dist/core/execution-policies/auth-policy.d.ts +10 -0
- package/dist/core/execution-policies/auth-policy.d.ts.map +1 -0
- package/dist/core/execution-policies/auth-policy.js +39 -0
- package/dist/core/execution-policies/auth-policy.js.map +1 -0
- package/dist/core/execution-policies/cluster-policy.d.ts +8 -0
- package/dist/core/execution-policies/cluster-policy.d.ts.map +1 -0
- package/dist/core/execution-policies/cluster-policy.js +67 -0
- package/dist/core/execution-policies/cluster-policy.js.map +1 -0
- package/dist/core/execution-policies/index.d.ts +17 -0
- package/dist/core/execution-policies/index.d.ts.map +1 -0
- package/dist/core/execution-policies/index.js +10 -0
- package/dist/core/execution-policies/index.js.map +1 -0
- package/dist/core/execution-policies/transaction-policy.d.ts +3 -0
- package/dist/core/execution-policies/transaction-policy.d.ts.map +1 -0
- package/dist/core/execution-policies/transaction-policy.js +21 -0
- package/dist/core/execution-policies/transaction-policy.js.map +1 -0
- package/dist/core/lua-runtime.d.ts +15 -0
- package/dist/core/lua-runtime.d.ts.map +1 -0
- package/dist/core/lua-runtime.js +165 -0
- package/dist/core/lua-runtime.js.map +1 -0
- package/dist/core/redis-context.d.ts +46 -0
- package/dist/core/redis-context.d.ts.map +1 -0
- package/dist/core/redis-context.js +46 -0
- package/dist/core/redis-context.js.map +1 -0
- package/dist/core/redis-error.d.ts +137 -0
- package/dist/core/redis-error.d.ts.map +1 -0
- package/dist/core/redis-error.js +288 -0
- package/dist/core/redis-error.js.map +1 -0
- package/dist/core/redis-result.d.ts +15 -0
- package/dist/core/redis-result.d.ts.map +1 -0
- package/dist/core/redis-result.js +26 -0
- package/dist/core/redis-result.js.map +1 -0
- package/dist/core/redis-value.d.ts +65 -0
- package/dist/core/redis-value.d.ts.map +1 -0
- package/dist/core/redis-value.js +45 -0
- package/dist/core/redis-value.js.map +1 -0
- package/dist/core/resp-encoder.d.ts +9 -0
- package/dist/core/resp-encoder.d.ts.map +1 -0
- package/dist/core/resp-encoder.js +164 -0
- package/dist/core/resp-encoder.js.map +1 -0
- package/dist/core/response-stream.d.ts +17 -0
- package/dist/core/response-stream.d.ts.map +1 -0
- package/dist/core/response-stream.js +10 -0
- package/dist/core/response-stream.js.map +1 -0
- package/dist/core/transports/connection-transport.d.ts +12 -0
- package/dist/core/transports/connection-transport.d.ts.map +1 -0
- package/dist/core/transports/connection-transport.js +3 -0
- package/dist/core/transports/connection-transport.js.map +1 -0
- package/dist/core/transports/in-memory-connection-transport.d.ts +28 -0
- package/dist/core/transports/in-memory-connection-transport.d.ts.map +1 -0
- package/dist/core/transports/in-memory-connection-transport.js +111 -0
- package/dist/core/transports/in-memory-connection-transport.js.map +1 -0
- package/dist/core/transports/resp2/decoder.d.ts +19 -0
- package/dist/core/transports/resp2/decoder.d.ts.map +1 -0
- package/dist/core/transports/resp2/decoder.js +221 -0
- package/dist/core/transports/resp2/decoder.js.map +1 -0
- package/dist/core/transports/resp2/index.d.ts +2 -12
- package/dist/core/transports/resp2/index.d.ts.map +1 -1
- package/dist/core/transports/resp2/index.js +9 -0
- package/dist/core/transports/resp2/index.js.map +1 -0
- package/dist/core/transports/resp2/server.d.ts +28 -0
- package/dist/core/transports/resp2/server.d.ts.map +1 -0
- package/dist/core/transports/resp2/server.js +86 -0
- package/dist/core/transports/resp2/server.js.map +1 -0
- package/dist/core/transports/resp2/session-adapter.d.ts +24 -0
- package/dist/core/transports/resp2/session-adapter.d.ts.map +1 -0
- package/dist/core/transports/resp2/session-adapter.js +93 -0
- package/dist/core/transports/resp2/session-adapter.js.map +1 -0
- package/dist/core/transports/socket-connection-transport.d.ts +20 -0
- package/dist/core/transports/socket-connection-transport.d.ts.map +1 -0
- package/dist/core/transports/socket-connection-transport.js +64 -0
- package/dist/core/transports/socket-connection-transport.js.map +1 -0
- package/dist/core/turn-queue.d.ts +15 -0
- package/dist/core/turn-queue.d.ts.map +1 -0
- package/dist/core/turn-queue.js +51 -0
- package/dist/core/turn-queue.js.map +1 -0
- package/dist/index.d.ts +35 -347
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +157 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +3 -0
- package/dist/logger.js.map +1 -0
- package/dist/state/cluster-topology.d.ts +36 -0
- package/dist/state/cluster-topology.d.ts.map +1 -0
- package/dist/state/cluster-topology.js +109 -0
- package/dist/state/cluster-topology.js.map +1 -0
- package/dist/state/data-types.d.ts +51 -0
- package/dist/state/data-types.d.ts.map +1 -0
- package/dist/state/data-types.js +78 -0
- package/dist/state/data-types.js.map +1 -0
- package/dist/state/database.d.ts +46 -0
- package/dist/state/database.d.ts.map +1 -0
- package/dist/state/database.js +122 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/index.d.ts +14 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +27 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/keyspace.d.ts +45 -0
- package/dist/state/keyspace.d.ts.map +1 -0
- package/dist/state/keyspace.js +181 -0
- package/dist/state/keyspace.js.map +1 -0
- package/dist/state/mutation-events.d.ts +38 -0
- package/dist/state/mutation-events.d.ts.map +1 -0
- package/dist/state/mutation-events.js +74 -0
- package/dist/state/mutation-events.js.map +1 -0
- package/dist/state/pubsub-broker.d.ts +4 -0
- package/dist/state/pubsub-broker.d.ts.map +1 -0
- package/dist/state/pubsub-broker.js +10 -0
- package/dist/state/pubsub-broker.js.map +1 -0
- package/dist/state/script-cache.d.ts +10 -0
- package/dist/state/script-cache.d.ts.map +1 -0
- package/dist/state/script-cache.js +33 -0
- package/dist/state/script-cache.js.map +1 -0
- package/dist/state/server-state.d.ts +31 -0
- package/dist/state/server-state.d.ts.map +1 -0
- package/dist/state/server-state.js +44 -0
- package/dist/state/server-state.js.map +1 -0
- package/package.json +22 -26
- package/dist/cli.mjs +0 -5923
- package/dist/cli.mjs.map +0 -1
- package/dist/commanders/custom/base-commander.d.ts +0 -19
- package/dist/commanders/custom/base-commander.d.ts.map +0 -1
- package/dist/commanders/custom/cluster-router.d.ts +0 -57
- package/dist/commanders/custom/cluster-router.d.ts.map +0 -1
- package/dist/commanders/custom/clusterCommander.d.ts +0 -39
- package/dist/commanders/custom/clusterCommander.d.ts.map +0 -1
- package/dist/commanders/custom/commander.d.ts +0 -12
- package/dist/commanders/custom/commander.d.ts.map +0 -1
- package/dist/commanders/custom/commands/metadata.d.ts +0 -101
- package/dist/commanders/custom/commands/metadata.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/client/clientSetName.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/client/clientSetName.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/client/index.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/client/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/cluster/clusterInfo.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/cluster/clusterInfo.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/cluster/clusterNodes.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/cluster/clusterNodes.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/cluster/clusterShards.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/cluster/clusterShards.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/cluster/clusterSlots.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/cluster/clusterSlots.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/cluster/index.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/cluster/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/command/index.d.ts +0 -6
- package/dist/commanders/custom/commands/redis/command/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hdel.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/hashes/hdel.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hexists.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/hashes/hexists.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hget.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/hashes/hget.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hgetall.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/hashes/hgetall.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hincrby.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/hashes/hincrby.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hincrbyfloat.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/hashes/hincrbyfloat.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hkeys.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/hashes/hkeys.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hlen.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/hashes/hlen.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hmget.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/hashes/hmget.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hmset.d.ts +0 -10
- package/dist/commanders/custom/commands/redis/data/hashes/hmset.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hset.d.ts +0 -10
- package/dist/commanders/custom/commands/redis/data/hashes/hset.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/hvals.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/hashes/hvals.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/hashes/index.d.ts +0 -13
- package/dist/commanders/custom/commands/redis/data/hashes/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/index.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/data/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/dbsize.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/dbsize.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/del.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/keys/del.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/exists.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/keys/exists.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/expire.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/keys/expire.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/expireat.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/keys/expireat.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/flushall.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/flushall.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/flushdb.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/flushdb.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/index.d.ts +0 -11
- package/dist/commanders/custom/commands/redis/data/keys/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/pttl.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/pttl.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/ttl.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/ttl.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/keys/type.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/keys/type.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/index.d.ts +0 -11
- package/dist/commanders/custom/commands/redis/data/lists/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lindex.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/lists/lindex.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/llen.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/lists/llen.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lpop.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/lists/lpop.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lpush.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/lpush.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lrange.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/lrange.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lrem.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/lrem.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/lset.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/lset.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/ltrim.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/ltrim.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/rpop.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/lists/rpop.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/lists/rpush.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/lists/rpush.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/index.d.ts +0 -12
- package/dist/commanders/custom/commands/redis/data/sets/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/sadd.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/sets/sadd.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/scard.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/sets/scard.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/sdiff.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/sets/sdiff.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/sinter.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/sets/sinter.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/sismember.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/sets/sismember.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/smembers.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/sets/smembers.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/smove.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/sets/smove.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/spop.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/sets/spop.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/srandmember.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/sets/srandmember.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/srem.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/sets/srem.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/sets/sunion.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/sets/sunion.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/append.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/append.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/decr.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/strings/decr.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/decrby.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/decrby.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/get.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/strings/get.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/getset.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/getset.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/incr.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/strings/incr.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/incrby.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/incrby.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/incrbyfloat.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/incrbyfloat.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/index.d.ts +0 -14
- package/dist/commanders/custom/commands/redis/data/strings/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/mget.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/strings/mget.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/mset.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/strings/mset.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/msetnx.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/strings/msetnx.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/set.d.ts +0 -29
- package/dist/commanders/custom/commands/redis/data/strings/set.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/strings/strlen.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/strings/strlen.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/index.d.ts +0 -12
- package/dist/commanders/custom/commands/redis/data/zsets/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zadd.d.ts +0 -10
- package/dist/commanders/custom/commands/redis/data/zsets/zadd.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zcard.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/data/zsets/zcard.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zincrby.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/zsets/zincrby.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrange.d.ts +0 -10
- package/dist/commanders/custom/commands/redis/data/zsets/zrange.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrangebyscore.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/zsets/zrangebyscore.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrank.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/zsets/zrank.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrem.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/zsets/zrem.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zremrangebyscore.d.ts +0 -9
- package/dist/commanders/custom/commands/redis/data/zsets/zremrangebyscore.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrevrange.d.ts +0 -10
- package/dist/commanders/custom/commands/redis/data/zsets/zrevrange.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zrevrank.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/zsets/zrevrank.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/data/zsets/zscore.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/data/zsets/zscore.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/index.d.ts +0 -39
- package/dist/commanders/custom/commands/redis/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/info.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/info.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/monitor.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/monitor.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/ping.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/ping.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/quit.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/quit.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/debug.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/script/debug.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/eval.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/script/eval.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/evalsha.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/script/evalsha.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/exists.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/script/exists.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/flush.d.ts +0 -7
- package/dist/commanders/custom/commands/redis/script/flush.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/help.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/script/help.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/index.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/script/index.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/kill.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/script/kill.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/load.d.ts +0 -5
- package/dist/commanders/custom/commands/redis/script/load.d.ts.map +0 -1
- package/dist/commanders/custom/commands/redis/script/lua-reply.d.ts +0 -8
- package/dist/commanders/custom/commands/redis/script/lua-reply.d.ts.map +0 -1
- package/dist/commanders/custom/commands/registry.d.ts +0 -84
- package/dist/commanders/custom/commands/registry.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/hash.d.ts +0 -16
- package/dist/commanders/custom/data-structures/hash.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/list.d.ts +0 -15
- package/dist/commanders/custom/data-structures/list.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/set.d.ts +0 -16
- package/dist/commanders/custom/data-structures/set.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/stream.d.ts +0 -3
- package/dist/commanders/custom/data-structures/stream.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/string.d.ts +0 -5
- package/dist/commanders/custom/data-structures/string.d.ts.map +0 -1
- package/dist/commanders/custom/data-structures/zset.d.ts +0 -17
- package/dist/commanders/custom/data-structures/zset.d.ts.map +0 -1
- package/dist/commanders/custom/db.d.ts +0 -67
- package/dist/commanders/custom/db.d.ts.map +0 -1
- package/dist/commanders/custom/execution-context.d.ts +0 -12
- package/dist/commanders/custom/execution-context.d.ts.map +0 -1
- package/dist/commanders/custom/lua-runtime.d.ts +0 -16
- package/dist/commanders/custom/lua-runtime.d.ts.map +0 -1
- package/dist/commanders/custom/redis-kernel.d.ts +0 -46
- package/dist/commanders/custom/redis-kernel.d.ts.map +0 -1
- package/dist/commanders/custom/schema/builder.d.ts +0 -24
- package/dist/commanders/custom/schema/builder.d.ts.map +0 -1
- package/dist/commanders/custom/schema/command-adapter.d.ts +0 -25
- package/dist/commanders/custom/schema/command-adapter.d.ts.map +0 -1
- package/dist/commanders/custom/schema/index.d.ts +0 -7
- package/dist/commanders/custom/schema/index.d.ts.map +0 -1
- package/dist/commanders/custom/schema/input-mapper.d.ts +0 -28
- package/dist/commanders/custom/schema/input-mapper.d.ts.map +0 -1
- package/dist/commanders/custom/schema/registry.d.ts +0 -13
- package/dist/commanders/custom/schema/registry.d.ts.map +0 -1
- package/dist/commanders/custom/schema/resp-input-mapper.d.ts +0 -20
- package/dist/commanders/custom/schema/resp-input-mapper.d.ts.map +0 -1
- package/dist/commanders/custom/schema/types.d.ts +0 -43
- package/dist/commanders/custom/schema/types.d.ts.map +0 -1
- package/dist/core/cluster/network.d.ts +0 -24
- package/dist/core/cluster/network.d.ts.map +0 -1
- package/dist/core/errors.d.ts +0 -87
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/transports/buffered-transport.d.ts +0 -14
- package/dist/core/transports/buffered-transport.d.ts.map +0 -1
- package/dist/core/transports/capturing-transport.d.ts +0 -19
- package/dist/core/transports/capturing-transport.d.ts.map +0 -1
- package/dist/core/transports/command-validator.d.ts +0 -12
- package/dist/core/transports/command-validator.d.ts.map +0 -1
- package/dist/core/transports/resp2/adapter.d.ts +0 -32
- package/dist/core/transports/resp2/adapter.d.ts.map +0 -1
- package/dist/core/transports/session-state.d.ts +0 -76
- package/dist/core/transports/session-state.d.ts.map +0 -1
- package/dist/core/transports/session.d.ts +0 -36
- package/dist/core/transports/session.d.ts.map +0 -1
- package/dist/index.cjs +0 -5759
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs +0 -5749
- package/dist/index.mjs.map +0 -1
- package/dist/types.d.ts +0 -54
- package/dist/types.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zsets.js","sourceRoot":"","sources":["../../src/commands/zsets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import type { CommandPlan } from './command-definition';
|
|
2
|
+
import { CommandExecutor, type ExecutorResult } from './command-executor';
|
|
3
|
+
import { type ClientSessionMode, type ParkHandler, type RedisClientSession, type RedisExecutionContext } from './redis-context';
|
|
4
|
+
import { RedisResult } from './redis-result';
|
|
5
|
+
import type { RespVersion } from './resp-encoder';
|
|
6
|
+
import { type RedisTurnHandle, type RedisTurnQueue } from './turn-queue';
|
|
7
|
+
import type { RedisClusterNodeRole, RedisDatabase, RedisServerState } from '../state';
|
|
8
|
+
export type ClientSessionOptions = {
|
|
9
|
+
id?: string;
|
|
10
|
+
server: RedisServerState;
|
|
11
|
+
executor: CommandExecutor;
|
|
12
|
+
database?: number;
|
|
13
|
+
nodeRole?: RedisClusterNodeRole;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
park?: ParkHandler;
|
|
16
|
+
turnQueue?: RedisTurnQueue;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Mutable view of the turn currently held by an in-flight command. A blocking
|
|
20
|
+
* command suspends its turn while parked and is later resumed on a *new* handle,
|
|
21
|
+
* so the holder must be able to both read the current turn and swap it.
|
|
22
|
+
*/
|
|
23
|
+
type TurnAccess = {
|
|
24
|
+
get(): RedisTurnHandle | undefined;
|
|
25
|
+
set(turn: RedisTurnHandle | undefined): void;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Per-connection server state and the concrete {@link RedisClientSession}.
|
|
29
|
+
*
|
|
30
|
+
* One instance exists per connected client and owns everything that is scoped
|
|
31
|
+
* to that connection rather than to the shared server:
|
|
32
|
+
* - the selected database index and the resolved {@link RedisDatabase};
|
|
33
|
+
* - the session {@link ClientSessionMode} (normal / transaction / subscribed);
|
|
34
|
+
* - the negotiated RESP protocol version (HELLO);
|
|
35
|
+
* - the cluster READONLY flag (replica reads via READONLY/READWRITE);
|
|
36
|
+
* - the MULTI command queue and its dirty bit;
|
|
37
|
+
* - WATCH key registrations for optimistic locking.
|
|
38
|
+
*
|
|
39
|
+
* Commands are serialized through a per-database turn queue so that, even though
|
|
40
|
+
* execution is async, only one command mutates a given database at a time. This
|
|
41
|
+
* is also what makes blocking commands (BLPOP, ...) cooperate instead of
|
|
42
|
+
* deadlock — see {@link createTurnAwareParkHandler}.
|
|
43
|
+
*/
|
|
44
|
+
export declare class ClientSession implements RedisClientSession {
|
|
45
|
+
private static nextId;
|
|
46
|
+
readonly id: string;
|
|
47
|
+
readonly server: RedisServerState;
|
|
48
|
+
/** Aborted when the connection closes; threaded into every command's ctx. */
|
|
49
|
+
readonly signal: AbortSignal;
|
|
50
|
+
private readonly executor;
|
|
51
|
+
private readonly signalSource?;
|
|
52
|
+
private readonly nodeRole?;
|
|
53
|
+
private readonly parkHandler;
|
|
54
|
+
private readonly turnQueueOverride?;
|
|
55
|
+
/**
|
|
56
|
+
* The turn handle of the command currently executing on this session,
|
|
57
|
+
* exposed so {@link executeTransaction} can hand the turn off to another
|
|
58
|
+
* database's queue when a queued SELECT switches databases mid-EXEC.
|
|
59
|
+
*/
|
|
60
|
+
private activeTurnAccess?;
|
|
61
|
+
private selectedDatabaseId;
|
|
62
|
+
private sessionMode;
|
|
63
|
+
private respVersion;
|
|
64
|
+
private authenticated;
|
|
65
|
+
/** Set by READONLY, cleared by READWRITE/RESET; lets a replica serve reads. */
|
|
66
|
+
private clusterReadOnlyMode;
|
|
67
|
+
/** Commands buffered between MULTI and EXEC, in submission order. */
|
|
68
|
+
private transactionPlans;
|
|
69
|
+
/** True once a queued command errored — forces EXEC to abort with EXECABORT. */
|
|
70
|
+
private transactionDirty;
|
|
71
|
+
/** Active WATCH registrations, keyed by `db:keyHex`. */
|
|
72
|
+
private readonly watches;
|
|
73
|
+
/** Subset of watched keys mutated since WATCH — non-empty fails the next EXEC. */
|
|
74
|
+
private readonly dirtyWatches;
|
|
75
|
+
constructor(options: ClientSessionOptions);
|
|
76
|
+
get selectedDatabase(): number;
|
|
77
|
+
get mode(): ClientSessionMode;
|
|
78
|
+
get protocolVersion(): RespVersion;
|
|
79
|
+
get clusterReadOnly(): boolean;
|
|
80
|
+
get isAuthenticated(): boolean;
|
|
81
|
+
setAuthenticated(value: boolean): void;
|
|
82
|
+
/** The live database object for the currently selected index. */
|
|
83
|
+
get db(): RedisDatabase;
|
|
84
|
+
setProtocolVersion(version: RespVersion): void;
|
|
85
|
+
/** Toggle replica read mode for this connection (READONLY / READWRITE). */
|
|
86
|
+
setClusterReadOnly(value: boolean): void;
|
|
87
|
+
selectDatabase(database: number): void;
|
|
88
|
+
/** MULTI: enter transaction mode. Redis forbids nesting. */
|
|
89
|
+
beginTransaction(): void;
|
|
90
|
+
/** Buffer one command while in MULTI; replies "+QUEUED" to the client. */
|
|
91
|
+
queueTransaction(plan: CommandPlan): void;
|
|
92
|
+
/**
|
|
93
|
+
* EXEC step 1: hand back the queued plans and atomically reset the session to
|
|
94
|
+
* normal mode (clearing the queue, dirty bit, and WATCHes). The caller is
|
|
95
|
+
* responsible for actually running the returned plans via
|
|
96
|
+
* {@link executeTransaction}. Returns an empty list if not in MULTI.
|
|
97
|
+
*/
|
|
98
|
+
drainTransaction(): CommandPlan[];
|
|
99
|
+
/** DISCARD: drop the queued commands and leave transaction mode. */
|
|
100
|
+
discardTransaction(): void;
|
|
101
|
+
/** Flag the transaction as poisoned (a queued command failed). No-op outside MULTI. */
|
|
102
|
+
markTransactionDirty(): void;
|
|
103
|
+
isTransactionDirty(): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* EXEC step 2: run the drained plans in order and collect their replies into a
|
|
106
|
+
* single array reply. Each command runs in its own fresh execution context.
|
|
107
|
+
* Streaming commands (SUBSCRIBE/MONITOR) are not permitted inside a
|
|
108
|
+
* transaction: the stream is closed immediately and replaced with an error
|
|
109
|
+
* entry so the array stays positionally aligned with the queued commands.
|
|
110
|
+
*/
|
|
111
|
+
executeTransaction(plans: readonly CommandPlan[]): Promise<RedisResult>;
|
|
112
|
+
/**
|
|
113
|
+
* Release the currently held serialization turn and acquire a fresh one on
|
|
114
|
+
* the selected database's queue. Called when a queued SELECT switches
|
|
115
|
+
* databases mid-EXEC so subsequent commands run under the correct
|
|
116
|
+
* per-database turn (see {@link executeTransaction}).
|
|
117
|
+
*
|
|
118
|
+
* No-op when a fixed turn-queue override is in force (a single queue already
|
|
119
|
+
* serializes every database) or when no managed turn is active.
|
|
120
|
+
*/
|
|
121
|
+
private handoffTurnToSelectedDb;
|
|
122
|
+
/**
|
|
123
|
+
* WATCH the given keys for optimistic locking. Each key is subscribed in the
|
|
124
|
+
* keyspace; any mutation flips its entry into {@link dirtyWatches}, which a
|
|
125
|
+
* subsequent EXEC checks via {@link isWatchDirty}. Already-watched keys are
|
|
126
|
+
* skipped so re-WATCHing is idempotent.
|
|
127
|
+
*/
|
|
128
|
+
watch(keys: readonly Buffer[]): void;
|
|
129
|
+
/** UNWATCH / cleanup: drop every keyspace subscription and clear dirty state. */
|
|
130
|
+
unwatch(): void;
|
|
131
|
+
/** True if any watched key was mutated since WATCH — EXEC must return nil. */
|
|
132
|
+
isWatchDirty(): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Public entry point for executing one client command.
|
|
135
|
+
*
|
|
136
|
+
* Acquires a turn on the database's turn queue before running, guaranteeing
|
|
137
|
+
* serialized access to the keyspace, and always releases it afterward. The
|
|
138
|
+
* acquired turn is exposed to the command via a turn-aware park handler so a
|
|
139
|
+
* blocking command can yield the turn while parked (see
|
|
140
|
+
* {@link createTurnAwareParkHandler}); `turn` is reassigned through the
|
|
141
|
+
* {@link TurnAccess} closure because suspending returns a *new* handle.
|
|
142
|
+
*/
|
|
143
|
+
execute(rawCommand: Buffer | string, rawArgs: readonly Buffer[]): Promise<ExecutorResult>;
|
|
144
|
+
/**
|
|
145
|
+
* Build the {@link RedisExecutionContext} passed to a command's `execute`.
|
|
146
|
+
* When a turn is supplied (the normal client path) the context gets a
|
|
147
|
+
* turn-aware park handler so blocking commands release their turn while
|
|
148
|
+
* waiting; without one (e.g. nested transaction execution) the plain park
|
|
149
|
+
* handler is used.
|
|
150
|
+
*/
|
|
151
|
+
createExecutionContext(turnAccess?: TurnAccess, parkOverride?: ParkHandler): RedisExecutionContext;
|
|
152
|
+
/** Tear down the session: abort in-flight work and reset all per-connection state. */
|
|
153
|
+
close(): void;
|
|
154
|
+
/**
|
|
155
|
+
* Wrap the base park handler so that parking also yields the command's turn.
|
|
156
|
+
*
|
|
157
|
+
* Blocking commands (BLPOP, BRPOP, ...) must not hold the database turn while
|
|
158
|
+
* they wait, or no other client could ever produce the value that unblocks
|
|
159
|
+
* them — a deadlock. The flow:
|
|
160
|
+
* 1. Start the underlying park, capturing its eventual value.
|
|
161
|
+
* 2. Clear the local turn and call `turn.suspend(parked)`, which releases the
|
|
162
|
+
* turn back to the queue and resolves with a fresh turn once the park
|
|
163
|
+
* settles and this session is scheduled again.
|
|
164
|
+
* 3. Store the new turn (so `finally`/subsequent parks see it) and return the
|
|
165
|
+
* parked value.
|
|
166
|
+
*
|
|
167
|
+
* If there is no current turn, fall back to plain parking.
|
|
168
|
+
*/
|
|
169
|
+
private createTurnAwareParkHandler;
|
|
170
|
+
}
|
|
171
|
+
export {};
|
|
172
|
+
//# sourceMappingURL=client-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../src/core/client-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientSession = void 0;
|
|
4
|
+
const redis_context_1 = require("./redis-context");
|
|
5
|
+
const redis_error_1 = require("./redis-error");
|
|
6
|
+
const redis_result_1 = require("./redis-result");
|
|
7
|
+
const redis_value_1 = require("./redis-value");
|
|
8
|
+
/**
|
|
9
|
+
* Per-connection server state and the concrete {@link RedisClientSession}.
|
|
10
|
+
*
|
|
11
|
+
* One instance exists per connected client and owns everything that is scoped
|
|
12
|
+
* to that connection rather than to the shared server:
|
|
13
|
+
* - the selected database index and the resolved {@link RedisDatabase};
|
|
14
|
+
* - the session {@link ClientSessionMode} (normal / transaction / subscribed);
|
|
15
|
+
* - the negotiated RESP protocol version (HELLO);
|
|
16
|
+
* - the cluster READONLY flag (replica reads via READONLY/READWRITE);
|
|
17
|
+
* - the MULTI command queue and its dirty bit;
|
|
18
|
+
* - WATCH key registrations for optimistic locking.
|
|
19
|
+
*
|
|
20
|
+
* Commands are serialized through a per-database turn queue so that, even though
|
|
21
|
+
* execution is async, only one command mutates a given database at a time. This
|
|
22
|
+
* is also what makes blocking commands (BLPOP, ...) cooperate instead of
|
|
23
|
+
* deadlock — see {@link createTurnAwareParkHandler}.
|
|
24
|
+
*/
|
|
25
|
+
class ClientSession {
|
|
26
|
+
static nextId = 0;
|
|
27
|
+
id;
|
|
28
|
+
server;
|
|
29
|
+
/** Aborted when the connection closes; threaded into every command's ctx. */
|
|
30
|
+
signal;
|
|
31
|
+
executor;
|
|
32
|
+
signalSource;
|
|
33
|
+
nodeRole;
|
|
34
|
+
parkHandler;
|
|
35
|
+
turnQueueOverride;
|
|
36
|
+
/**
|
|
37
|
+
* The turn handle of the command currently executing on this session,
|
|
38
|
+
* exposed so {@link executeTransaction} can hand the turn off to another
|
|
39
|
+
* database's queue when a queued SELECT switches databases mid-EXEC.
|
|
40
|
+
*/
|
|
41
|
+
activeTurnAccess;
|
|
42
|
+
selectedDatabaseId;
|
|
43
|
+
sessionMode = 'normal';
|
|
44
|
+
respVersion = 2;
|
|
45
|
+
authenticated = false;
|
|
46
|
+
/** Set by READONLY, cleared by READWRITE/RESET; lets a replica serve reads. */
|
|
47
|
+
clusterReadOnlyMode = false;
|
|
48
|
+
/** Commands buffered between MULTI and EXEC, in submission order. */
|
|
49
|
+
transactionPlans = [];
|
|
50
|
+
/** True once a queued command errored — forces EXEC to abort with EXECABORT. */
|
|
51
|
+
transactionDirty = false;
|
|
52
|
+
/** Active WATCH registrations, keyed by `db:keyHex`. */
|
|
53
|
+
watches = new Map();
|
|
54
|
+
/** Subset of watched keys mutated since WATCH — non-empty fails the next EXEC. */
|
|
55
|
+
dirtyWatches = new Set();
|
|
56
|
+
constructor(options) {
|
|
57
|
+
this.id = options.id ?? `client-${++ClientSession.nextId}`;
|
|
58
|
+
this.server = options.server;
|
|
59
|
+
this.executor = options.executor;
|
|
60
|
+
this.selectedDatabaseId = options.database ?? 0;
|
|
61
|
+
this.nodeRole = options.nodeRole;
|
|
62
|
+
this.parkHandler = options.park ?? (0, redis_context_1.createDefaultParkHandler)();
|
|
63
|
+
this.turnQueueOverride = options.turnQueue;
|
|
64
|
+
if (options.signal) {
|
|
65
|
+
this.signal = options.signal;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.signalSource = new AbortController();
|
|
69
|
+
this.signal = this.signalSource.signal;
|
|
70
|
+
}
|
|
71
|
+
this.server.getDatabase(this.selectedDatabaseId);
|
|
72
|
+
}
|
|
73
|
+
get selectedDatabase() {
|
|
74
|
+
return this.selectedDatabaseId;
|
|
75
|
+
}
|
|
76
|
+
get mode() {
|
|
77
|
+
return this.sessionMode;
|
|
78
|
+
}
|
|
79
|
+
get protocolVersion() {
|
|
80
|
+
return this.respVersion;
|
|
81
|
+
}
|
|
82
|
+
get clusterReadOnly() {
|
|
83
|
+
return this.clusterReadOnlyMode;
|
|
84
|
+
}
|
|
85
|
+
get isAuthenticated() {
|
|
86
|
+
return this.authenticated;
|
|
87
|
+
}
|
|
88
|
+
setAuthenticated(value) {
|
|
89
|
+
this.authenticated = value;
|
|
90
|
+
}
|
|
91
|
+
/** The live database object for the currently selected index. */
|
|
92
|
+
get db() {
|
|
93
|
+
return this.server.getDatabase(this.selectedDatabaseId);
|
|
94
|
+
}
|
|
95
|
+
setProtocolVersion(version) {
|
|
96
|
+
this.respVersion = version;
|
|
97
|
+
}
|
|
98
|
+
/** Toggle replica read mode for this connection (READONLY / READWRITE). */
|
|
99
|
+
setClusterReadOnly(value) {
|
|
100
|
+
this.clusterReadOnlyMode = value;
|
|
101
|
+
}
|
|
102
|
+
selectDatabase(database) {
|
|
103
|
+
if (!Number.isInteger(database) ||
|
|
104
|
+
database < 0 ||
|
|
105
|
+
database >= this.server.databases.length) {
|
|
106
|
+
throw new redis_error_1.RedisCommandError('DB index is out of range');
|
|
107
|
+
}
|
|
108
|
+
this.selectedDatabaseId = database;
|
|
109
|
+
}
|
|
110
|
+
/** MULTI: enter transaction mode. Redis forbids nesting. */
|
|
111
|
+
beginTransaction() {
|
|
112
|
+
if (this.sessionMode === 'transaction') {
|
|
113
|
+
throw new redis_error_1.RedisCommandError('MULTI calls can not be nested');
|
|
114
|
+
}
|
|
115
|
+
this.sessionMode = 'transaction';
|
|
116
|
+
this.transactionPlans = [];
|
|
117
|
+
this.transactionDirty = false;
|
|
118
|
+
}
|
|
119
|
+
/** Buffer one command while in MULTI; replies "+QUEUED" to the client. */
|
|
120
|
+
queueTransaction(plan) {
|
|
121
|
+
if (this.sessionMode !== 'transaction') {
|
|
122
|
+
throw new redis_error_1.RedisCommandError('MULTI has not been called');
|
|
123
|
+
}
|
|
124
|
+
this.transactionPlans.push(plan);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* EXEC step 1: hand back the queued plans and atomically reset the session to
|
|
128
|
+
* normal mode (clearing the queue, dirty bit, and WATCHes). The caller is
|
|
129
|
+
* responsible for actually running the returned plans via
|
|
130
|
+
* {@link executeTransaction}. Returns an empty list if not in MULTI.
|
|
131
|
+
*/
|
|
132
|
+
drainTransaction() {
|
|
133
|
+
if (this.sessionMode !== 'transaction') {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
const plans = [...this.transactionPlans];
|
|
137
|
+
this.transactionPlans = [];
|
|
138
|
+
this.sessionMode = 'normal';
|
|
139
|
+
this.transactionDirty = false;
|
|
140
|
+
this.unwatch();
|
|
141
|
+
return plans;
|
|
142
|
+
}
|
|
143
|
+
/** DISCARD: drop the queued commands and leave transaction mode. */
|
|
144
|
+
discardTransaction() {
|
|
145
|
+
this.transactionPlans = [];
|
|
146
|
+
this.sessionMode = 'normal';
|
|
147
|
+
this.transactionDirty = false;
|
|
148
|
+
this.unwatch();
|
|
149
|
+
}
|
|
150
|
+
/** Flag the transaction as poisoned (a queued command failed). No-op outside MULTI. */
|
|
151
|
+
markTransactionDirty() {
|
|
152
|
+
if (this.sessionMode === 'transaction') {
|
|
153
|
+
this.transactionDirty = true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
isTransactionDirty() {
|
|
157
|
+
return this.transactionDirty;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* EXEC step 2: run the drained plans in order and collect their replies into a
|
|
161
|
+
* single array reply. Each command runs in its own fresh execution context.
|
|
162
|
+
* Streaming commands (SUBSCRIBE/MONITOR) are not permitted inside a
|
|
163
|
+
* transaction: the stream is closed immediately and replaced with an error
|
|
164
|
+
* entry so the array stays positionally aligned with the queued commands.
|
|
165
|
+
*/
|
|
166
|
+
async executeTransaction(plans) {
|
|
167
|
+
const values = [];
|
|
168
|
+
// Blocking commands must not park while the EXEC turn is held — that would
|
|
169
|
+
// deadlock because no other session could produce the wakeup write. Override
|
|
170
|
+
// park so any blocking command queued in MULTI behaves non-blocking (returns
|
|
171
|
+
// null immediately), matching real Redis BLPOP-inside-MULTI semantics.
|
|
172
|
+
const noBlockCtx = this.createExecutionContext(undefined, async () => null);
|
|
173
|
+
let currentDbId = this.selectedDatabaseId;
|
|
174
|
+
for (const plan of plans) {
|
|
175
|
+
if (this.signal.aborted) {
|
|
176
|
+
throw createAbortError();
|
|
177
|
+
}
|
|
178
|
+
// A queued SELECT on a previous iteration may have switched databases.
|
|
179
|
+
// Move the held turn onto the now-selected database's queue so its
|
|
180
|
+
// keyspace stays serialized against other sessions (#94 follow-up). Only
|
|
181
|
+
// one turn is ever held at a time (release-then-acquire), so this cannot
|
|
182
|
+
// deadlock even if two transactions select databases in opposite orders.
|
|
183
|
+
if (this.selectedDatabaseId !== currentDbId) {
|
|
184
|
+
await this.handoffTurnToSelectedDb();
|
|
185
|
+
currentDbId = this.selectedDatabaseId;
|
|
186
|
+
}
|
|
187
|
+
// executePlan converts RedisCommandErrors into error results, but a
|
|
188
|
+
// command whose execute() throws an unexpected runtime error (TypeError,
|
|
189
|
+
// etc.) would otherwise propagate out and abandon the partial results
|
|
190
|
+
// array. Real Redis always replies with an N-element EXEC array, so trap
|
|
191
|
+
// the failure into this command's slot and keep running the rest (#83).
|
|
192
|
+
let result;
|
|
193
|
+
try {
|
|
194
|
+
result = await this.executor.executePlan(plan, noBlockCtx);
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
if (this.signal.aborted) {
|
|
198
|
+
throw err;
|
|
199
|
+
}
|
|
200
|
+
values.push(redis_value_1.RedisValue.error(err.message));
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (result instanceof redis_result_1.RedisResult) {
|
|
204
|
+
values.push(result.value);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
result.close('streaming command is not allowed in transaction');
|
|
208
|
+
values.push(redis_value_1.RedisValue.error('Streaming command is not allowed in transaction'));
|
|
209
|
+
}
|
|
210
|
+
return redis_result_1.RedisResult.create(redis_value_1.RedisValue.array(values));
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Release the currently held serialization turn and acquire a fresh one on
|
|
214
|
+
* the selected database's queue. Called when a queued SELECT switches
|
|
215
|
+
* databases mid-EXEC so subsequent commands run under the correct
|
|
216
|
+
* per-database turn (see {@link executeTransaction}).
|
|
217
|
+
*
|
|
218
|
+
* No-op when a fixed turn-queue override is in force (a single queue already
|
|
219
|
+
* serializes every database) or when no managed turn is active.
|
|
220
|
+
*/
|
|
221
|
+
async handoffTurnToSelectedDb() {
|
|
222
|
+
if (this.turnQueueOverride) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const turnAccess = this.activeTurnAccess;
|
|
226
|
+
if (!turnAccess) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
turnAccess.get()?.release();
|
|
230
|
+
const nextTurn = await this.db.turnQueue.waitTurn();
|
|
231
|
+
turnAccess.set(nextTurn);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* WATCH the given keys for optimistic locking. Each key is subscribed in the
|
|
235
|
+
* keyspace; any mutation flips its entry into {@link dirtyWatches}, which a
|
|
236
|
+
* subsequent EXEC checks via {@link isWatchDirty}. Already-watched keys are
|
|
237
|
+
* skipped so re-WATCHing is idempotent.
|
|
238
|
+
*/
|
|
239
|
+
watch(keys) {
|
|
240
|
+
const database = this.selectedDatabaseId;
|
|
241
|
+
const db = this.db;
|
|
242
|
+
for (const key of keys) {
|
|
243
|
+
const id = watchId(database, key);
|
|
244
|
+
if (this.watches.has(id)) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
const unsubscribe = db.subscribeKey(key, () => {
|
|
248
|
+
this.dirtyWatches.add(id);
|
|
249
|
+
});
|
|
250
|
+
this.watches.set(id, {
|
|
251
|
+
database,
|
|
252
|
+
key: Buffer.from(key),
|
|
253
|
+
unsubscribe,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/** UNWATCH / cleanup: drop every keyspace subscription and clear dirty state. */
|
|
258
|
+
unwatch() {
|
|
259
|
+
for (const watch of this.watches.values()) {
|
|
260
|
+
watch.unsubscribe();
|
|
261
|
+
}
|
|
262
|
+
this.watches.clear();
|
|
263
|
+
this.dirtyWatches.clear();
|
|
264
|
+
}
|
|
265
|
+
/** True if any watched key was mutated since WATCH — EXEC must return nil. */
|
|
266
|
+
isWatchDirty() {
|
|
267
|
+
return this.dirtyWatches.size > 0;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Public entry point for executing one client command.
|
|
271
|
+
*
|
|
272
|
+
* Acquires a turn on the database's turn queue before running, guaranteeing
|
|
273
|
+
* serialized access to the keyspace, and always releases it afterward. The
|
|
274
|
+
* acquired turn is exposed to the command via a turn-aware park handler so a
|
|
275
|
+
* blocking command can yield the turn while parked (see
|
|
276
|
+
* {@link createTurnAwareParkHandler}); `turn` is reassigned through the
|
|
277
|
+
* {@link TurnAccess} closure because suspending returns a *new* handle.
|
|
278
|
+
*/
|
|
279
|
+
async execute(rawCommand, rawArgs) {
|
|
280
|
+
if (this.signal.aborted) {
|
|
281
|
+
throw createAbortError();
|
|
282
|
+
}
|
|
283
|
+
const turnQueue = this.turnQueueOverride ?? this.db.turnQueue;
|
|
284
|
+
let turn = await turnQueue.waitTurn();
|
|
285
|
+
const turnAccess = {
|
|
286
|
+
get: () => turn,
|
|
287
|
+
set: nextTurn => {
|
|
288
|
+
turn = nextTurn;
|
|
289
|
+
},
|
|
290
|
+
};
|
|
291
|
+
this.activeTurnAccess = turnAccess;
|
|
292
|
+
try {
|
|
293
|
+
const ctx = this.createExecutionContext(turnAccess);
|
|
294
|
+
return await this.executor.executeRaw(rawCommand, rawArgs, ctx);
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
this.activeTurnAccess = undefined;
|
|
298
|
+
turn?.release();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Build the {@link RedisExecutionContext} passed to a command's `execute`.
|
|
303
|
+
* When a turn is supplied (the normal client path) the context gets a
|
|
304
|
+
* turn-aware park handler so blocking commands release their turn while
|
|
305
|
+
* waiting; without one (e.g. nested transaction execution) the plain park
|
|
306
|
+
* handler is used.
|
|
307
|
+
*/
|
|
308
|
+
createExecutionContext(turnAccess, parkOverride) {
|
|
309
|
+
// `db` is a live getter, not a snapshot: a queued `SELECT N` runs mid-EXEC
|
|
310
|
+
// and updates `selectedDatabaseId`, so every command must resolve the
|
|
311
|
+
// currently selected database at access time, not at context-build time
|
|
312
|
+
// (issue #94). Arrow keeps `this` bound to the session without aliasing.
|
|
313
|
+
const resolveDb = () => this.db;
|
|
314
|
+
return {
|
|
315
|
+
get db() {
|
|
316
|
+
return resolveDb();
|
|
317
|
+
},
|
|
318
|
+
server: this.server,
|
|
319
|
+
session: this,
|
|
320
|
+
executor: this.executor,
|
|
321
|
+
...(this.nodeRole ? { nodeRole: this.nodeRole } : {}),
|
|
322
|
+
signal: this.signal,
|
|
323
|
+
park: parkOverride ??
|
|
324
|
+
(turnAccess
|
|
325
|
+
? this.createTurnAwareParkHandler(turnAccess)
|
|
326
|
+
: this.parkHandler),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/** Tear down the session: abort in-flight work and reset all per-connection state. */
|
|
330
|
+
close() {
|
|
331
|
+
this.signalSource?.abort();
|
|
332
|
+
this.unwatch();
|
|
333
|
+
this.transactionPlans = [];
|
|
334
|
+
this.transactionDirty = false;
|
|
335
|
+
this.sessionMode = 'normal';
|
|
336
|
+
this.clusterReadOnlyMode = false;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Wrap the base park handler so that parking also yields the command's turn.
|
|
340
|
+
*
|
|
341
|
+
* Blocking commands (BLPOP, BRPOP, ...) must not hold the database turn while
|
|
342
|
+
* they wait, or no other client could ever produce the value that unblocks
|
|
343
|
+
* them — a deadlock. The flow:
|
|
344
|
+
* 1. Start the underlying park, capturing its eventual value.
|
|
345
|
+
* 2. Clear the local turn and call `turn.suspend(parked)`, which releases the
|
|
346
|
+
* turn back to the queue and resolves with a fresh turn once the park
|
|
347
|
+
* settles and this session is scheduled again.
|
|
348
|
+
* 3. Store the new turn (so `finally`/subsequent parks see it) and return the
|
|
349
|
+
* parked value.
|
|
350
|
+
*
|
|
351
|
+
* If there is no current turn, fall back to plain parking.
|
|
352
|
+
*/
|
|
353
|
+
createTurnAwareParkHandler(turnAccess) {
|
|
354
|
+
return async (request) => {
|
|
355
|
+
const turn = turnAccess.get();
|
|
356
|
+
if (!turn) {
|
|
357
|
+
return this.parkHandler(request);
|
|
358
|
+
}
|
|
359
|
+
let parkedValue = null;
|
|
360
|
+
const parked = this.parkHandler(request).then(value => {
|
|
361
|
+
parkedValue = value;
|
|
362
|
+
});
|
|
363
|
+
turnAccess.set(undefined);
|
|
364
|
+
const nextTurn = await turn.suspend(parked);
|
|
365
|
+
turnAccess.set(nextTurn);
|
|
366
|
+
return parkedValue;
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
exports.ClientSession = ClientSession;
|
|
371
|
+
function watchId(database, key) {
|
|
372
|
+
return `${database}:${key.toString('hex')}`;
|
|
373
|
+
}
|
|
374
|
+
function createAbortError() {
|
|
375
|
+
const err = new Error('The operation was aborted');
|
|
376
|
+
err.name = 'AbortError';
|
|
377
|
+
return err;
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=client-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../src/core/client-session.ts"],"names":[],"mappings":"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"}
|