Skip to content

zredis roadmap #1

Description

@nkeil

I'll be using this issue to track development goals and milestones in zod-redis.

Stage 1: Prototype

Goal: develop a working prototype of basic functionality, and pre-release to npm. Focus on providing full access to ioredis functionality, while improving developer experience as much as possible through typesafety. Minimize added complexity when possible.

Tasks:

  • zod-redis constructor that creates a private io-redis instance
    • Implementation
    • Full backwards compatibility
  • Support get and set commands using Zod schemas.
    • Implementation
    • Full backwards compatibility
  • CI/CD
    • Automatic release to NPM
    • Automatic typechecking for PRs
    • ESLint rules and automatic linting for PRs
  • Finish README: add documentation and basic usage for simple onboarding.
  • Provide full backwards compatibility with ioredis
    • Extend the ioredis package to provide full backwards compatibility through standard access functions
    • Transfer over entire ioredis test suite, and run on CI
  • Add additional configuration options
    • Mandatory Expiration

Stage 2: Expansion

Goal: cover more ground. Determine which methods would benefit from typesafety, and provide it through an alternative model function. Ensure full backwards compatibility via the ioredis test suite. Add new tests to ensure validity of new functionality.

Priority 1:

  • pipeline

Undecided:

  • acl
  • aclBuffer
  • addBuiltinCommand
  • append
  • asking
  • auth
  • bgrewriteaof
  • bgrewriteaofBuffer
  • bgsave
  • bitcount
  • bitfield
  • bitfield_ro
  • bitop
  • bitpos
  • blmove
  • blmoveBuffer
  • blmpop
  • blmpopBuffer
  • blpop
  • blpopBuffer
  • brpop
  • brpopBuffer
  • brpoplpush
  • brpoplpushBuffer
  • bzmpop
  • bzpopmax
  • bzpopmaxBuffer
  • bzpopmin
  • bzpopminBuffer
  • call
  • callBuffer
  • client
  • clientBuffer
  • cluster
  • command
  • config
  • connect
  • copy
  • createBuiltinCommand
  • dbsize
  • debug
  • decr
  • decrby
  • defineCommand
  • del
  • discard
  • disconnect
  • dump
  • dumpBuffer
  • duplicate
  • echo
  • echoBuffer
  • end
  • eval
  • eval_ro
  • evalsha
  • evalsha_ro
  • exec
  • exists
  • expire
  • expireat
  • expiretime
  • failover
  • fcall
  • fcall_ro
  • flushall
  • flushdb
  • function
  • functionBuffer
  • geoadd
  • geodist
  • geodistBuffer
  • geohash
  • geohashBuffer
  • geopos
  • georadius
  • georadius_ro
  • georadiusbymember
  • georadiusbymember_ro
  • geosearch
  • geosearchstore
  • get
  • getBuffer
  • getBuiltinCommands
  • getbit
  • getdel
  • getdelBuffer
  • getex
  • getexBuffer
  • getrange
  • getrangeBuffer
  • getset
  • getsetBuffer
  • hdel
  • hello
  • hexists
  • hget
  • hgetBuffer
  • hgetall
  • hgetallBuffer
  • hincrby
  • hincrbyfloat
  • hincrbyfloatBuffer
  • hkeys
  • hkeysBuffer
  • hlen
  • hmget
  • hmgetBuffer
  • hmset
  • hrandfield
  • hrandfieldBuffer
  • hscan
  • hscanBuffer
  • hscanBufferStream
  • hscanStream
  • hset
  • hsetnx
  • hstrlen
  • hvals
  • hvalsBuffer
  • incr
  • incrby
  • incrbyfloat
  • info
  • keys
  • keysBuffer
  • lastsave
  • latency
  • lcs
  • lindex
  • lindexBuffer
  • linsert
  • llen
  • lmove
  • lmoveBuffer
  • lmpop
  • lmpopBuffer
  • lolwut
  • lpop
  • lpopBuffer
  • lpos
  • lpush
  • lpushx
  • lrange
  • lrangeBuffer
  • lrem
  • lset
  • ltrim
  • memory
  • mget
  • mgetBuffer
  • migrate
  • module
  • monitor
  • move
  • mset
  • msetnx
  • multi
  • object
  • on
  • once
  • persist
  • pexpire
  • pexpireat
  • pexpiretime
  • pfadd
  • pfcount
  • pfdebug
  • pfmerge
  • pfselftest
  • ping
  • pingBuffer
  • psetex
  • psubscribe
  • psync
  • pttl
  • publish
  • pubsub
  • punsubscribe
  • quit
  • randomkey
  • randomkeyBuffer
  • readonly
  • readwrite
  • rename
  • renamenx
  • replconf
  • replicaof
  • reset
  • restore
  • restore-asking
  • role
  • rpop
  • rpopBuffer
  • rpoplpush
  • rpoplpushBuffer
  • rpush
  • rpushx
  • sadd
  • save
  • scan
  • scanBuffer
  • scanBufferStream
  • scanStream
  • scard
  • script
  • sdiff
  • sdiffBuffer
  • sdiffstore
  • select
  • set
  • setBuffer
  • setbit
  • setex
  • setnx
  • setrange
  • shutdown
  • sinter
  • sinterBuffer
  • sintercard
  • sinterstore
  • sismember
  • slaveof
  • slowlog
  • smembers
  • smembersBuffer
  • smismember
  • smove
  • sort
  • sort_ro
  • spop
  • spopBuffer
  • spublish
  • srandmember
  • srandmemberBuffer
  • srem
  • sscan
  • sscanBuffer
  • sscanBufferStream
  • sscanStream
  • ssubscribe
  • strlen
  • subscribe
  • substr
  • sunion
  • sunionBuffer
  • sunionstore
  • sunsubscribe
  • swapdb
  • sync
  • time
  • touch
  • ttl
  • type
  • unlink
  • unsubscribe
  • unwatch
  • wait
  • watch
  • xack
  • xadd
  • xaddBuffer
  • xautoclaim
  • xclaim
  • xdel
  • xgroup
  • xinfo
  • xlen
  • xpending
  • xrange
  • xrangeBuffer
  • xread
  • xreadBuffer
  • xreadgroup
  • xrevrange
  • xrevrangeBuffer
  • xsetid
  • xtrim
  • zadd
  • zaddBuffer
  • zcard
  • zcount
  • zdiff
  • zdiffBuffer
  • zdiffstore
  • zincrby
  • zincrbyBuffer
  • zinter
  • zinterBuffer
  • zintercard
  • zinterstore
  • zlexcount
  • zmpop
  • zmscore
  • zmscoreBuffer
  • zpopmax
  • zpopmaxBuffer
  • zpopmin
  • zpopminBuffer
  • zrandmember
  • zrandmemberBuffer
  • zrange
  • zrangeBuffer
  • zrangebylex
  • zrangebylexBuffer
  • zrangebyscore
  • zrangebyscoreBuffer
  • zrangestore
  • zrank
  • zrem
  • zremrangebylex
  • zremrangebyrank
  • zremrangebyscore
  • zrevrange
  • zrevrangeBuffer
  • zrevrangebylex
  • zrevrangebylexBuffer
  • zrevrangebyscore
  • zrevrangebyscoreBuffer
  • zrevrank
  • zscan
  • zscanBuffer
  • zscanBufferStream
  • zscanStream
  • zscore
  • zscoreBuffer
  • zunion
  • zunionBuffer
  • zunionstore
  • createClient

Stage 3: Refinement

Goal: refine rough edges of API and test suite. Make the package more palatable for production usage, including reducing the dependency burden (superjson 👀).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions