@upstash/ratelimit 0.2.0 → 0.3.0-rc.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 +14 -0
- package/esm/analytics.js +84 -0
- package/esm/deps/deno.land/x/base64@v0.2.1/base.js +100 -0
- package/esm/deps/deno.land/x/base64@v0.2.1/base64url.js +9 -0
- package/esm/deps/deno.land/x/sha1@v1.0.3/deps.js +1 -0
- package/esm/deps/deno.land/x/sha1@v1.0.3/mod.js +191 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/mod.js +66 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/append.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitcount.js +16 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitop.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitpos.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/command.js +57 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/dbsize.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decr.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decrby.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/del.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/echo.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/eval.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/evalsha.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/exists.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expire.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expireat.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushall.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushdb.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/get.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getbit.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getdel.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getrange.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getset.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hdel.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hexists.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hget.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hgetall.js +29 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrby.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrbyfloat.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hkeys.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hlen.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmget.js +35 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmset.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hrandfield.js +39 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hscan.js +16 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hset.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hsetnx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hstrlen.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hvals.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incr.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrby.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrbyfloat.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/keys.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lindex.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/linsert.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/llen.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lmove.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpop.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpos.js +19 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpush.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpushx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrange.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrem.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lset.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ltrim.js +6 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mget.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mod.js +119 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mset.js +12 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/msetnx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/persist.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpire.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpireat.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ping.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/psetex.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pttl.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/publish.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/randomkey.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rename.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/renamenx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpop.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpush.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpushx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sadd.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scan.js +19 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scard.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_exists.js +12 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_flush.js +16 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_load.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiff.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiffstore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/set.js +36 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setbit.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setex.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setnx.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setrange.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinter.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinterstore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sismember.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smembers.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smismember.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smove.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/spop.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srandmember.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srem.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sscan.js +16 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/strlen.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunion.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunionstore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/time.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/touch.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ttl.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/type.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/unlink.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zadd.js +26 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcard.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcount.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zdiffstore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zincrby.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zinterstore.js +27 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zlexcount.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zmscore.js +10 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmax.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmin.js +13 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrange.js +26 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrank.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrem.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebylex.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyrank.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyscore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrevrank.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscan.js +16 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscore.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zunionstore.js +27 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/error.js +9 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/http.js +165 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/pipeline.js +1199 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/redis.js +1200 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/script.js +77 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/types.js +1 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/pkg/util.js +31 -0
- package/esm/deps/deno.land/x/upstash_redis@v1.19.3/version.js +1 -0
- package/esm/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +50 -0
- package/esm/multi.js +1 -0
- package/esm/ratelimit.js +28 -2
- package/esm/single.js +1 -0
- package/package.json +1 -1
- package/script/analytics.js +88 -0
- package/script/deps/deno.land/x/base64@v0.2.1/base.js +104 -0
- package/script/deps/deno.land/x/base64@v0.2.1/base64url.js +13 -0
- package/script/deps/deno.land/x/sha1@v1.0.3/deps.js +6 -0
- package/script/deps/deno.land/x/sha1@v1.0.3/mod.js +196 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/mod.js +93 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/append.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitcount.js +20 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitop.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitpos.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/command.js +61 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/dbsize.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decr.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decrby.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/del.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/echo.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/eval.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/evalsha.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/exists.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expire.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expireat.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushall.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushdb.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/get.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getbit.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getdel.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getrange.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getset.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hdel.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hexists.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hget.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hgetall.js +33 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrby.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrbyfloat.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hkeys.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hlen.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmget.js +39 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmset.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hrandfield.js +43 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hscan.js +20 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hset.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hsetnx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hstrlen.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hvals.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incr.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrby.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrbyfloat.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/keys.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lindex.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/linsert.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/llen.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lmove.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpop.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpos.js +23 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpush.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpushx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrange.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrem.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lset.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ltrim.js +10 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mget.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mod.js +135 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mset.js +16 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/msetnx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/persist.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpire.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpireat.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ping.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/psetex.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pttl.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/publish.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/randomkey.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rename.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/renamenx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpop.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpush.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpushx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sadd.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scan.js +23 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scard.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_exists.js +16 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_flush.js +20 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_load.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiff.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiffstore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/set.js +40 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setbit.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setex.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setnx.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setrange.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinter.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinterstore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sismember.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smembers.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smismember.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smove.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/spop.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srandmember.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srem.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sscan.js +20 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/strlen.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunion.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunionstore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/time.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/touch.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ttl.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/type.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/unlink.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zadd.js +30 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcard.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcount.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zdiffstore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zincrby.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zinterstore.js +31 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zlexcount.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zmscore.js +14 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmax.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmin.js +17 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrange.js +30 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrank.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrem.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebylex.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyrank.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyscore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrevrank.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscan.js +20 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscore.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zunionstore.js +31 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/error.js +13 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/http.js +169 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/pipeline.js +1203 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/redis.js +1204 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/script.js +81 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/types.js +2 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/pkg/util.js +35 -0
- package/script/deps/deno.land/x/upstash_redis@v1.19.3/version.js +4 -0
- package/script/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +55 -0
- package/script/multi.js +1 -0
- package/script/ratelimit.js +28 -2
- package/script/single.js +1 -0
- package/types/analytics.d.ts +36 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base.d.ts +5 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base64url.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/deps.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/mod.d.ts +26 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/mod.d.ts +41 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/append.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitcount.d.ts +8 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitop.d.ts +12 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/bitpos.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/command.d.ts +37 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/dbsize.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decr.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/decrby.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/del.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/echo.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/eval.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/evalsha.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/exists.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expire.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/expireat.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushall.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/flushdb.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/get.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getbit.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getdel.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getrange.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/getset.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hdel.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hexists.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hget.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hgetall.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrby.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hincrbyfloat.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hkeys.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hlen.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmget.d.ts +15 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hmset.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hrandfield.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hscan.d.ts +24 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hset.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hsetnx.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hstrlen.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/hvals.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incr.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrby.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/incrbyfloat.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/keys.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lindex.d.ts +4 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/linsert.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/llen.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lmove.d.ts +12 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpop.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpos.d.ts +15 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpush.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lpushx.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrange.d.ts +4 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lrem.d.ts +4 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/lset.d.ts +4 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ltrim.d.ts +4 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mget.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mod.d.ts +119 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/mset.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/msetnx.d.ts +9 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/persist.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpire.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pexpireat.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ping.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/psetex.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/pttl.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/publish.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/randomkey.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rename.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/renamenx.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpop.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpush.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/rpushx.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sadd.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scan.d.ts +18 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/scard.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_exists.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_flush.d.ts +14 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/script_load.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiff.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sdiffstore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/set.d.ts +55 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setbit.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setex.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setnx.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/setrange.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinter.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sinterstore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sismember.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smembers.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smismember.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/smove.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/spop.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srandmember.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/srem.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sscan.d.ts +24 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/strlen.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunion.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/sunionstore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/time.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/touch.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/ttl.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/type.d.ts +8 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/unlink.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zadd.d.ts +35 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcard.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zcount.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zdiffstore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zincrby.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zinterstore.d.ts +30 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zlexcount.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zmscore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmax.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zpopmin.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrange.d.ts +42 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrank.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrem.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebylex.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyrank.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zremrangebyscore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zrevrank.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscan.d.ts +24 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zscore.d.ts +7 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/commands/zunionstore.d.ts +30 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/error.d.ts +6 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/http.d.ts +87 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/pipeline.d.ts +577 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/redis.d.ts +575 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/script.d.ts +42 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/types.d.ts +18 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/pkg/util.d.ts +1 -0
- package/types/deps/deno.land/x/upstash_redis@v1.19.3/version.d.ts +1 -0
- package/types/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.d.ts +3 -0
- package/types/multi.d.ts +8 -1
- package/types/ratelimit.d.ts +12 -1
- package/types/single.d.ts +8 -1
- package/types/types.d.ts +1 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { sha1 as digest } from "../../sha1@v1.0.3/mod.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new script.
|
|
4
|
+
*
|
|
5
|
+
* Scripts offer the ability to optimistically try to execute a script without having to send the
|
|
6
|
+
* entire script to the server. If the script is loaded on the server, it tries again by sending
|
|
7
|
+
* the entire script. Afterwards, the script is cached on the server.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const redis = new Redis({...})
|
|
12
|
+
*
|
|
13
|
+
* const script = redis.createScript<string>("return ARGV[1];")
|
|
14
|
+
* const arg1 = await script.eval([], ["Hello World"])
|
|
15
|
+
* assertEquals(arg1, "Hello World")
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class Script {
|
|
19
|
+
constructor(redis, script) {
|
|
20
|
+
Object.defineProperty(this, "script", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: void 0
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "sha1", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, "redis", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: void 0
|
|
37
|
+
});
|
|
38
|
+
this.redis = redis;
|
|
39
|
+
this.sha1 = this.digest(script);
|
|
40
|
+
this.script = script;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Send an `EVAL` command to redis.
|
|
44
|
+
*/
|
|
45
|
+
async eval(keys, args) {
|
|
46
|
+
return await this.redis.eval(this.script, keys, args);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Calculates the sha1 hash of the script and then calls `EVALSHA`.
|
|
50
|
+
*/
|
|
51
|
+
async evalsha(keys, args) {
|
|
52
|
+
return await this.redis.evalsha(this.sha1, keys, args);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Optimistically try to run `EVALSHA` first.
|
|
56
|
+
* If the script is not loaded in redis, it will fall back and try again with `EVAL`.
|
|
57
|
+
*
|
|
58
|
+
* Following calls will be able to use the cached script
|
|
59
|
+
*/
|
|
60
|
+
async exec(keys, args) {
|
|
61
|
+
const res = await this.redis.evalsha(this.sha1, keys, args).catch(async (err) => {
|
|
62
|
+
if (err instanceof Error &&
|
|
63
|
+
err.message.toLowerCase().includes("noscript")) {
|
|
64
|
+
return await this.redis.eval(this.script, keys, args);
|
|
65
|
+
}
|
|
66
|
+
throw err;
|
|
67
|
+
});
|
|
68
|
+
return res;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compute the sha1 hash of the script and return its hex representation.
|
|
72
|
+
*/
|
|
73
|
+
digest(s) {
|
|
74
|
+
const hash = digest(s, "utf8", "hex");
|
|
75
|
+
return typeof hash === "string" ? hash : new TextDecoder().decode(hash);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function parseRecursive(obj) {
|
|
2
|
+
const parsed = Array.isArray(obj)
|
|
3
|
+
? obj.map((o) => {
|
|
4
|
+
try {
|
|
5
|
+
return parseRecursive(o);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return o;
|
|
9
|
+
}
|
|
10
|
+
})
|
|
11
|
+
: JSON.parse(obj);
|
|
12
|
+
/**
|
|
13
|
+
* Parsing very large numbers can result in MAX_SAFE_INTEGER
|
|
14
|
+
* overflow. In that case we return the number as string instead.
|
|
15
|
+
*/
|
|
16
|
+
if (typeof parsed === "number" && parsed.toString() != obj) {
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
export function parseResponse(result) {
|
|
22
|
+
try {
|
|
23
|
+
/**
|
|
24
|
+
* Try to parse the response if possible
|
|
25
|
+
*/
|
|
26
|
+
return parseRecursive(result);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const VERSION = "development";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { toUint8Array, fromUint8Array } from "../../../deno.land/x/base64@v0.2.1/base64url.js";
|
|
2
|
+
const decoder = new TextDecoder();
|
|
3
|
+
const encoder = new TextEncoder();
|
|
4
|
+
/** Serializes a Uint8Array to a hexadecimal string. */
|
|
5
|
+
function toHexString(buf) {
|
|
6
|
+
return buf.reduce((hex, byte) => `${hex}${byte < 16 ? "0" : ""}${byte.toString(16)}`, "");
|
|
7
|
+
}
|
|
8
|
+
/** Deserializes a Uint8Array from a hexadecimal string. */
|
|
9
|
+
function fromHexString(hex) {
|
|
10
|
+
const len = hex.length;
|
|
11
|
+
if (len % 2 || !/^[0-9a-fA-F]+$/.test(hex)) {
|
|
12
|
+
throw new TypeError("Invalid hex string.");
|
|
13
|
+
}
|
|
14
|
+
hex = hex.toLowerCase();
|
|
15
|
+
const buf = new Uint8Array(Math.floor(len / 2));
|
|
16
|
+
const end = len / 2;
|
|
17
|
+
for (let i = 0; i < end; ++i) {
|
|
18
|
+
buf[i] = parseInt(hex.substr(i * 2, 2), 16);
|
|
19
|
+
}
|
|
20
|
+
return buf;
|
|
21
|
+
}
|
|
22
|
+
/** Decodes a Uint8Array to utf8-, base64-, or hex-encoded string. */
|
|
23
|
+
export function decode(buf, encoding = "utf8") {
|
|
24
|
+
if (/^utf-?8$/i.test(encoding)) {
|
|
25
|
+
return decoder.decode(buf);
|
|
26
|
+
}
|
|
27
|
+
else if (/^base64$/i.test(encoding)) {
|
|
28
|
+
return fromUint8Array(buf);
|
|
29
|
+
}
|
|
30
|
+
else if (/^hex(?:adecimal)?$/i.test(encoding)) {
|
|
31
|
+
return toHexString(buf);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new TypeError("Unsupported string encoding.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function encode(str, encoding = "utf8") {
|
|
38
|
+
if (/^utf-?8$/i.test(encoding)) {
|
|
39
|
+
return encoder.encode(str);
|
|
40
|
+
}
|
|
41
|
+
else if (/^base64$/i.test(encoding)) {
|
|
42
|
+
return toUint8Array(str);
|
|
43
|
+
}
|
|
44
|
+
else if (/^hex(?:adecimal)?$/i.test(encoding)) {
|
|
45
|
+
return fromHexString(str);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw new TypeError("Unsupported string encoding.");
|
|
49
|
+
}
|
|
50
|
+
}
|
package/esm/multi.js
CHANGED
package/esm/ratelimit.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Analytics } from "./analytics.js";
|
|
1
2
|
import { Cache } from "./cache.js";
|
|
2
3
|
export class TimeoutError extends Error {
|
|
3
4
|
constructor() {
|
|
@@ -46,6 +47,12 @@ export class Ratelimit {
|
|
|
46
47
|
writable: true,
|
|
47
48
|
value: void 0
|
|
48
49
|
});
|
|
50
|
+
Object.defineProperty(this, "analytics", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: true,
|
|
53
|
+
writable: true,
|
|
54
|
+
value: void 0
|
|
55
|
+
});
|
|
49
56
|
/**
|
|
50
57
|
* Determine if a request should pass or be rejected based on the identifier and previously chosen ratelimit.
|
|
51
58
|
*
|
|
@@ -69,7 +76,7 @@ export class Ratelimit {
|
|
|
69
76
|
enumerable: true,
|
|
70
77
|
configurable: true,
|
|
71
78
|
writable: true,
|
|
72
|
-
value: async (identifier) => {
|
|
79
|
+
value: async (identifier, req) => {
|
|
73
80
|
const key = [this.prefix, identifier].join(":");
|
|
74
81
|
let timeoutId = null;
|
|
75
82
|
try {
|
|
@@ -87,7 +94,18 @@ export class Ratelimit {
|
|
|
87
94
|
}, this.timeout);
|
|
88
95
|
}));
|
|
89
96
|
}
|
|
90
|
-
|
|
97
|
+
const res = await Promise.race(arr);
|
|
98
|
+
if (this.analytics) {
|
|
99
|
+
const geo = req ? this.analytics.extractGeo(req) : undefined;
|
|
100
|
+
const analyticsP = this.analytics.record({
|
|
101
|
+
identifier,
|
|
102
|
+
time: Date.now(),
|
|
103
|
+
success: res.success,
|
|
104
|
+
...geo,
|
|
105
|
+
});
|
|
106
|
+
res.pending = Promise.all([res.pending, analyticsP]);
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
91
109
|
}
|
|
92
110
|
finally {
|
|
93
111
|
if (timeoutId) {
|
|
@@ -161,6 +179,14 @@ export class Ratelimit {
|
|
|
161
179
|
this.limiter = config.limiter;
|
|
162
180
|
this.timeout = config.timeout;
|
|
163
181
|
this.prefix = config.prefix ?? "@upstash/ratelimit";
|
|
182
|
+
this.analytics = config.analytics !== false
|
|
183
|
+
? new Analytics({
|
|
184
|
+
redis: Array.isArray(this.ctx.redis)
|
|
185
|
+
? this.ctx.redis[0]
|
|
186
|
+
: this.ctx.redis,
|
|
187
|
+
prefix: this.prefix,
|
|
188
|
+
})
|
|
189
|
+
: undefined;
|
|
164
190
|
if (config.ephemeralCache instanceof Map) {
|
|
165
191
|
this.ctx.cache = new Cache(config.ephemeralCache);
|
|
166
192
|
}
|
package/esm/single.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Analytics = void 0;
|
|
4
|
+
class Analytics {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
Object.defineProperty(this, "redis", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true,
|
|
10
|
+
value: void 0
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(this, "prefix", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: void 0
|
|
17
|
+
});
|
|
18
|
+
this.redis = config.redis;
|
|
19
|
+
this.prefix = config.prefix ?? "@upstash/ratelimit";
|
|
20
|
+
}
|
|
21
|
+
extractGeo(req) {
|
|
22
|
+
if (typeof req.geo !== "undefined") {
|
|
23
|
+
return req.geo;
|
|
24
|
+
}
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
async record(event) {
|
|
28
|
+
// Bucket is a unix timestamp in milliseconds marking the beginning of a day
|
|
29
|
+
const bucket = (new Date().setUTCHours(0, 0, 0, 0)).toFixed(0);
|
|
30
|
+
const key = [this.prefix, "events", bucket].join(":");
|
|
31
|
+
await this.redis.hincrby(key, JSON.stringify({
|
|
32
|
+
...event,
|
|
33
|
+
time: undefined,
|
|
34
|
+
}), 1);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Aggregates the events by the given field and returns the number of successes and failures per value
|
|
38
|
+
*
|
|
39
|
+
* @param aggregateBy - The field to aggregate by
|
|
40
|
+
* @param cutoff - Timestamp in milliseconds to limit the aggregation to `cutoff` until now
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
async aggregate(aggregateBy, cutoff = 0) {
|
|
44
|
+
const keys = [];
|
|
45
|
+
let cursor = 0;
|
|
46
|
+
do {
|
|
47
|
+
const [nextCursor, found] = await this.redis.scan(cursor, { match: [this.prefix, "events", "*"].join(":"), count: 1000 });
|
|
48
|
+
cursor = nextCursor;
|
|
49
|
+
for (const key of found) {
|
|
50
|
+
const timestamp = parseInt(key.split(":").pop());
|
|
51
|
+
// Take all the keys that at least overlap with the given timestamp
|
|
52
|
+
if (timestamp >= cutoff) {
|
|
53
|
+
keys.push(key);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
} while (cursor !== 0);
|
|
57
|
+
const days = await Promise.all(keys.sort().map(async (key) => {
|
|
58
|
+
const fields = await this.redis.hgetall(key);
|
|
59
|
+
if (!fields) {
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
const day = {};
|
|
63
|
+
for (const [field, count] of Object.entries(fields)) {
|
|
64
|
+
const r = JSON.parse(field);
|
|
65
|
+
for (const [k, v] of Object.entries(r)) {
|
|
66
|
+
if (k !== aggregateBy) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (!day[v]) {
|
|
70
|
+
day[v] = {
|
|
71
|
+
success: 0,
|
|
72
|
+
blocked: 0,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (r.success) {
|
|
76
|
+
day[v].success += count;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
day[v].blocked += count;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return day;
|
|
84
|
+
}));
|
|
85
|
+
return days;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.Analytics = Analytics;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = void 0;
|
|
4
|
+
function getLengths(b64) {
|
|
5
|
+
const len = b64.length;
|
|
6
|
+
// if (len % 4 > 0) {
|
|
7
|
+
// throw new TypeError("Invalid string. Length must be a multiple of 4");
|
|
8
|
+
// }
|
|
9
|
+
// Trim off extra bytes after placeholder bytes are found
|
|
10
|
+
// See: https://github.com/beatgammit/base64-js/issues/42
|
|
11
|
+
let validLen = b64.indexOf("=");
|
|
12
|
+
if (validLen === -1) {
|
|
13
|
+
validLen = len;
|
|
14
|
+
}
|
|
15
|
+
const placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4);
|
|
16
|
+
return [validLen, placeHoldersLen];
|
|
17
|
+
}
|
|
18
|
+
function init(lookup, revLookup, urlsafe = false) {
|
|
19
|
+
function _byteLength(validLen, placeHoldersLen) {
|
|
20
|
+
return Math.floor(((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen);
|
|
21
|
+
}
|
|
22
|
+
function tripletToBase64(num) {
|
|
23
|
+
return (lookup[(num >> 18) & 0x3f] +
|
|
24
|
+
lookup[(num >> 12) & 0x3f] +
|
|
25
|
+
lookup[(num >> 6) & 0x3f] +
|
|
26
|
+
lookup[num & 0x3f]);
|
|
27
|
+
}
|
|
28
|
+
function encodeChunk(buf, start, end) {
|
|
29
|
+
const out = new Array((end - start) / 3);
|
|
30
|
+
for (let i = start, curTriplet = 0; i < end; i += 3) {
|
|
31
|
+
out[curTriplet++] = tripletToBase64((buf[i] << 16) + (buf[i + 1] << 8) + buf[i + 2]);
|
|
32
|
+
}
|
|
33
|
+
return out.join("");
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
// base64 is 4/3 + up to two characters of the original data
|
|
37
|
+
byteLength(b64) {
|
|
38
|
+
return _byteLength.apply(null, getLengths(b64));
|
|
39
|
+
},
|
|
40
|
+
toUint8Array(b64) {
|
|
41
|
+
const [validLen, placeHoldersLen] = getLengths(b64);
|
|
42
|
+
const buf = new Uint8Array(_byteLength(validLen, placeHoldersLen));
|
|
43
|
+
// If there are placeholders, only get up to the last complete 4 chars
|
|
44
|
+
const len = placeHoldersLen ? validLen - 4 : validLen;
|
|
45
|
+
let tmp;
|
|
46
|
+
let curByte = 0;
|
|
47
|
+
let i;
|
|
48
|
+
for (i = 0; i < len; i += 4) {
|
|
49
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 18) |
|
|
50
|
+
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
|
51
|
+
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
|
52
|
+
revLookup[b64.charCodeAt(i + 3)];
|
|
53
|
+
buf[curByte++] = (tmp >> 16) & 0xff;
|
|
54
|
+
buf[curByte++] = (tmp >> 8) & 0xff;
|
|
55
|
+
buf[curByte++] = tmp & 0xff;
|
|
56
|
+
}
|
|
57
|
+
if (placeHoldersLen === 2) {
|
|
58
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 2) |
|
|
59
|
+
(revLookup[b64.charCodeAt(i + 1)] >> 4);
|
|
60
|
+
buf[curByte++] = tmp & 0xff;
|
|
61
|
+
}
|
|
62
|
+
else if (placeHoldersLen === 1) {
|
|
63
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 10) |
|
|
64
|
+
(revLookup[b64.charCodeAt(i + 1)] << 4) |
|
|
65
|
+
(revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
66
|
+
buf[curByte++] = (tmp >> 8) & 0xff;
|
|
67
|
+
buf[curByte++] = tmp & 0xff;
|
|
68
|
+
}
|
|
69
|
+
return buf;
|
|
70
|
+
},
|
|
71
|
+
fromUint8Array(buf) {
|
|
72
|
+
const maxChunkLength = 16383; // Must be multiple of 3
|
|
73
|
+
const len = buf.length;
|
|
74
|
+
const extraBytes = len % 3; // If we have 1 byte left, pad 2 bytes
|
|
75
|
+
const len2 = len - extraBytes;
|
|
76
|
+
const parts = new Array(Math.ceil(len2 / maxChunkLength) + (extraBytes ? 1 : 0));
|
|
77
|
+
let curChunk = 0;
|
|
78
|
+
let chunkEnd;
|
|
79
|
+
// Go through the array every three bytes, we'll deal with trailing stuff later
|
|
80
|
+
for (let i = 0; i < len2; i += maxChunkLength) {
|
|
81
|
+
chunkEnd = i + maxChunkLength;
|
|
82
|
+
parts[curChunk++] = encodeChunk(buf, i, chunkEnd > len2 ? len2 : chunkEnd);
|
|
83
|
+
}
|
|
84
|
+
let tmp;
|
|
85
|
+
// Pad the end with zeros, but make sure to not forget the extra bytes
|
|
86
|
+
if (extraBytes === 1) {
|
|
87
|
+
tmp = buf[len2];
|
|
88
|
+
parts[curChunk] = lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3f];
|
|
89
|
+
if (!urlsafe)
|
|
90
|
+
parts[curChunk] += "==";
|
|
91
|
+
}
|
|
92
|
+
else if (extraBytes === 2) {
|
|
93
|
+
tmp = (buf[len2] << 8) | (buf[len2 + 1] & 0xff);
|
|
94
|
+
parts[curChunk] = lookup[tmp >> 10] +
|
|
95
|
+
lookup[(tmp >> 4) & 0x3f] +
|
|
96
|
+
lookup[(tmp << 2) & 0x3f];
|
|
97
|
+
if (!urlsafe)
|
|
98
|
+
parts[curChunk] += "=";
|
|
99
|
+
}
|
|
100
|
+
return parts.join("");
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
exports.init = init;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.fromUint8Array = exports.toUint8Array = exports.byteLength = void 0;
|
|
5
|
+
const base_js_1 = require("./base.js");
|
|
6
|
+
const lookup = [];
|
|
7
|
+
const revLookup = [];
|
|
8
|
+
const code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
9
|
+
for (let i = 0, l = code.length; i < l; ++i) {
|
|
10
|
+
lookup[i] = code[i];
|
|
11
|
+
revLookup[code.charCodeAt(i)] = i;
|
|
12
|
+
}
|
|
13
|
+
_a = (0, base_js_1.init)(lookup, revLookup, true), exports.byteLength = _a.byteLength, exports.toUint8Array = _a.toUint8Array, exports.fromUint8Array = _a.fromUint8Array;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decode = exports.encode = void 0;
|
|
4
|
+
var mod_js_1 = require("../../../denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js");
|
|
5
|
+
Object.defineProperty(exports, "encode", { enumerable: true, get: function () { return mod_js_1.encode; } });
|
|
6
|
+
Object.defineProperty(exports, "decode", { enumerable: true, get: function () { return mod_js_1.decode; } });
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sha1 = exports.SHA1 = exports.BYTES = void 0;
|
|
4
|
+
const deps_js_1 = require("./deps.js");
|
|
5
|
+
function rotl(x, n) {
|
|
6
|
+
return (x << n) | (x >>> (32 - n));
|
|
7
|
+
}
|
|
8
|
+
/** Byte length of a SHA1 digest. */
|
|
9
|
+
exports.BYTES = 20;
|
|
10
|
+
/** A class representation of the SHA1 algorithm. */
|
|
11
|
+
class SHA1 {
|
|
12
|
+
/** Creates a SHA1 instance. */
|
|
13
|
+
constructor() {
|
|
14
|
+
Object.defineProperty(this, "hashSize", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: exports.BYTES
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(this, "_buf", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: new Uint8Array(64)
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "_bufIdx", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, "_count", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: void 0
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(this, "_K", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
configurable: true,
|
|
41
|
+
writable: true,
|
|
42
|
+
value: new Uint32Array([0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6])
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(this, "_H", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true,
|
|
47
|
+
writable: true,
|
|
48
|
+
value: void 0
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(this, "_finalized", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: true,
|
|
53
|
+
writable: true,
|
|
54
|
+
value: void 0
|
|
55
|
+
});
|
|
56
|
+
this.init();
|
|
57
|
+
}
|
|
58
|
+
/** Reduces the four input numbers to a single one. */
|
|
59
|
+
static F(t, b, c, d) {
|
|
60
|
+
if (t <= 19) {
|
|
61
|
+
return (b & c) | (~b & d);
|
|
62
|
+
}
|
|
63
|
+
else if (t <= 39) {
|
|
64
|
+
return b ^ c ^ d;
|
|
65
|
+
}
|
|
66
|
+
else if (t <= 59) {
|
|
67
|
+
return (b & c) | (b & d) | (c & d);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return b ^ c ^ d;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Initializes a hash instance. */
|
|
74
|
+
init() {
|
|
75
|
+
// prettier-ignore
|
|
76
|
+
this._H = new Uint32Array([
|
|
77
|
+
0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0
|
|
78
|
+
]);
|
|
79
|
+
this._bufIdx = 0;
|
|
80
|
+
this._count = new Uint32Array(2);
|
|
81
|
+
this._buf.fill(0);
|
|
82
|
+
this._finalized = false;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/** Updates a hash with additional message data. */
|
|
86
|
+
update(msg, inputEncoding) {
|
|
87
|
+
if (msg === null) {
|
|
88
|
+
throw new TypeError("msg must be a string or Uint8Array.");
|
|
89
|
+
}
|
|
90
|
+
else if (typeof msg === "string") {
|
|
91
|
+
msg = (0, deps_js_1.encode)(msg, inputEncoding);
|
|
92
|
+
}
|
|
93
|
+
// process the msg as many times as possible, the rest is stored in the buffer
|
|
94
|
+
// message is processed in 512 bit (64 byte chunks)
|
|
95
|
+
for (let i = 0; i < msg.length; i++) {
|
|
96
|
+
this._buf[this._bufIdx++] = msg[i];
|
|
97
|
+
if (this._bufIdx === 64) {
|
|
98
|
+
this.transform();
|
|
99
|
+
this._bufIdx = 0;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// counter update (number of message bits)
|
|
103
|
+
const c = this._count;
|
|
104
|
+
if ((c[0] += msg.length << 3) < msg.length << 3) {
|
|
105
|
+
c[1]++;
|
|
106
|
+
}
|
|
107
|
+
c[1] += msg.length >>> 29;
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
/** Finalizes a hash with additional message data. */
|
|
111
|
+
digest(outputEncoding) {
|
|
112
|
+
if (this._finalized) {
|
|
113
|
+
throw new Error("digest has already been called.");
|
|
114
|
+
}
|
|
115
|
+
this._finalized = true;
|
|
116
|
+
// append '1'
|
|
117
|
+
const b = this._buf;
|
|
118
|
+
let idx = this._bufIdx;
|
|
119
|
+
b[idx++] = 0x80;
|
|
120
|
+
// zeropad up to byte pos 56
|
|
121
|
+
while (idx !== 56) {
|
|
122
|
+
if (idx === 64) {
|
|
123
|
+
this.transform();
|
|
124
|
+
idx = 0;
|
|
125
|
+
}
|
|
126
|
+
b[idx++] = 0;
|
|
127
|
+
}
|
|
128
|
+
// append length in bits
|
|
129
|
+
const c = this._count;
|
|
130
|
+
b[56] = (c[1] >>> 24) & 0xff;
|
|
131
|
+
b[57] = (c[1] >>> 16) & 0xff;
|
|
132
|
+
b[58] = (c[1] >>> 8) & 0xff;
|
|
133
|
+
b[59] = (c[1] >>> 0) & 0xff;
|
|
134
|
+
b[60] = (c[0] >>> 24) & 0xff;
|
|
135
|
+
b[61] = (c[0] >>> 16) & 0xff;
|
|
136
|
+
b[62] = (c[0] >>> 8) & 0xff;
|
|
137
|
+
b[63] = (c[0] >>> 0) & 0xff;
|
|
138
|
+
this.transform();
|
|
139
|
+
// return the hash as byte array (20 bytes)
|
|
140
|
+
const hash = new Uint8Array(exports.BYTES);
|
|
141
|
+
for (let i = 0; i < 5; i++) {
|
|
142
|
+
hash[(i << 2) + 0] = (this._H[i] >>> 24) & 0xff;
|
|
143
|
+
hash[(i << 2) + 1] = (this._H[i] >>> 16) & 0xff;
|
|
144
|
+
hash[(i << 2) + 2] = (this._H[i] >>> 8) & 0xff;
|
|
145
|
+
hash[(i << 2) + 3] = (this._H[i] >>> 0) & 0xff;
|
|
146
|
+
}
|
|
147
|
+
// clear internal states and prepare for new hash
|
|
148
|
+
this.init();
|
|
149
|
+
return outputEncoding ? (0, deps_js_1.decode)(hash, outputEncoding) : hash;
|
|
150
|
+
}
|
|
151
|
+
/** Performs one transformation cycle. */
|
|
152
|
+
transform() {
|
|
153
|
+
const h = this._H;
|
|
154
|
+
let a = h[0];
|
|
155
|
+
let b = h[1];
|
|
156
|
+
let c = h[2];
|
|
157
|
+
let d = h[3];
|
|
158
|
+
let e = h[4];
|
|
159
|
+
// convert byte buffer to words
|
|
160
|
+
const w = new Uint32Array(80);
|
|
161
|
+
for (let i = 0; i < 16; i++) {
|
|
162
|
+
w[i] =
|
|
163
|
+
this._buf[(i << 2) + 3] |
|
|
164
|
+
(this._buf[(i << 2) + 2] << 8) |
|
|
165
|
+
(this._buf[(i << 2) + 1] << 16) |
|
|
166
|
+
(this._buf[i << 2] << 24);
|
|
167
|
+
}
|
|
168
|
+
for (let t = 0; t < 80; t++) {
|
|
169
|
+
if (t >= 16) {
|
|
170
|
+
w[t] = rotl(w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16], 1);
|
|
171
|
+
}
|
|
172
|
+
const tmp = (rotl(a, 5) +
|
|
173
|
+
SHA1.F(t, b, c, d) +
|
|
174
|
+
e +
|
|
175
|
+
w[t] +
|
|
176
|
+
this._K[Math.floor(t / 20)]) |
|
|
177
|
+
0;
|
|
178
|
+
e = d;
|
|
179
|
+
d = c;
|
|
180
|
+
c = rotl(b, 30);
|
|
181
|
+
b = a;
|
|
182
|
+
a = tmp;
|
|
183
|
+
}
|
|
184
|
+
h[0] = (h[0] + a) | 0;
|
|
185
|
+
h[1] = (h[1] + b) | 0;
|
|
186
|
+
h[2] = (h[2] + c) | 0;
|
|
187
|
+
h[3] = (h[3] + d) | 0;
|
|
188
|
+
h[4] = (h[4] + e) | 0;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.SHA1 = SHA1;
|
|
192
|
+
/** Generates a SHA1 hash of the input data. */
|
|
193
|
+
function sha1(msg, inputEncoding, outputEncoding) {
|
|
194
|
+
return new SHA1().update(msg, inputEncoding).digest(outputEncoding);
|
|
195
|
+
}
|
|
196
|
+
exports.sha1 = sha1;
|